随着人工智能技术的迅猛发展,AI开发已成为企业创新的重要驱动力。然而,在AI开发过程中,企业面临着诸多挑战,如开发工具的选择和开发资源如何高效利用等。本文将围绕这些挑战,探讨GPU池化如何赋能Kubeflow进行AI开发,助力企业实现智能化转型。
一
AI开发面临的挑战
1. 开发工具的选择
部分企业倾向于使用市面上成熟稳定的AI开发平台产品,因为这些产品通常具备完善的售后服务和的技术支持。然而,商用产品的价格较高,且部分功能可能无法满足企业的个性化需求。此时,企业可能选择优先考虑开源的产品,如Kubeflow。
开源产品具有自由、灵活的特性,开发者可以进行个性化定制,而不需要等待漫长的商用产品需求排期,非常适合具备一定研发实力的企业客户。
2. GPU资源的使用
目前,超过90%的AI算力都是GPU,且GPU的价格成本昂贵。企业在使用GPU时,一般都是通过静态分配的方式给开发人员,也有一些企业会将GPU虚拟化之后静态分配给开发人员,不管是哪一种,都会存在GPU浪费的情况,因为开发人员不是一直都在使用GPU,大部分时间都在进行代码开发调试、超参数选择优化等,因此如何在有限的预算下高效使用GPU算力,让昂贵的GPU卡能够满足更多的开发人员需求,成为企业亟待解决的实际问题。
参考存储、网络等资源的管理使用技术演进路线,软件定义的GPU池化技术正在被越来越多的企业客户所接受和应用,且取得了非常好的效果。
二
开源AI开发平台一Kubeflow
Kubeflow作为一款由Google发起的开源AI开发平台,它构建在 Kubernetes 之上,为企业提供了端到端的机器学习工作流自动化解决方案。该平台整合了模型开发、模型训练、超参数调优、模型部署等多个环节,旨在简化AI项目的生命周期管理。借助Kubernetes原生的弹性伸缩与资源调度能力,Kubeflow使得大规模分布式训练变得更为便捷,但在此基础上,如何更精细地管理和优化GPU资源仍有待进一步探讨。
图1. Kubeflow体系架构
Kubeflow支持各种深度学习框架,如TensorFlow、PyTorch等,并提供了以下功能:
1. Kubeflow Notebooks:是以pod的形式运行在kubernetes集群中,基于web的开发环境,对JupyterLab、RStudio和Visual Studio Code(代码服务器)的原生支持,用户可以直接在集群中创建notebook容器。
2. Kubeflow Pipelines:是一个使用 Docker 容器构建和部署可移植且可扩展的机器学习(ML)工作流的平台。
3. Central Dashboard:作为机器学习平台的中心枢纽和工具,Kubeflow控制台提供了Kubeflow和相关生态系统组件集成的Web界面,通过统一的平台界面管理运维集群中所有运行的组件。
4. Training Operator:一个原生支持 Kubernetes 的项目,用于对使用各种机器学习框架(如 PyTorch、TensorFlow、XGBoost 等)创建的机器学习(ML)模型进行微调和可扩展的分布式训练,提供Kubernetes 自定义资源 API和Python SDK 来帮助用户有效地训练大模型的目标,支持在 Kubernetes 上运行消息传递接口(MPI),所以可以利用训练操作器和 MPIJob 运行高性能计算(HPC)任务。
5. Katib:一个针对自动化机器学习(AutoML)的 Kubernetes 原生项目,对机器学习框架保持中立,可以调整任何语言编写的应用程序的超参数,并原生支持许多机器学习框架,如TensorFlow、MXNet、PyTorch、XGBoost等,Katib 支持超参数调整、early-stopping搜索和神经架构搜索(NAS)。
6. KServe:支持在Kubernetes上的服务器端推理,并为常见机器学习(ML)框架如TensorFlow、XGBoost、Scikit-learn、PyTorch和ONNX等提供高性能、抽象的生产模型服务接口。为任意框架上的机器学习模型推理服务提供自定义资源定义(CRD),通过提供预测、预处理、后处理和解释功能,为机器学习推理服务器启用一个简单、可插拔和完整的解决方案。
三
GPU池化产品一OrionX
趋动科技的OrionX(猎户座)AI算力资源池化解决方案可以帮助客户构建数据中心级AI算力资源池,使用户应用无需修改就能透明地共享和使用数据中心内任何服务器之上的AI算力。OrionX不但能够帮助用户提高AI算力资源利用率,而且可以极大便利用户AI应用的部署。
图2. OrionX系统架构
OrionX通过软件定义AI算力,颠覆了原有的AI应用直接调用物理GPU的架构,增加软件层,将AI应用与物理GPU解耦合。AI应用调用逻辑的OrionX vGPU,再由OrionX将虚拟GPU需求匹配到具体的物理GPU,OrionX架构实现了GPU资源池化,让用户高效、智能、灵活地使用GPU资源,达到了降本增效的目的。核心的GPU池化能力如下:
· 按需分配:资源池内各类算力资源按需挂载,用完立即回收,资源高效流转;
· 资源聚合:资源池内各类算力资源通过网络远程调用方式实现资源整合,形成算力资源池,一方面可突破单服务器硬件配置闲置,另一方面可减少资源池内硬件资源碎片;
· 远程调用:AI 应用可在资源池任意位置进行部署,无需关注底层物理硬件配置细节;
· 弹性伸缩:AI 应用可弹性使用资源池内算力资源,无需重启即可改变申请算力资源。
四
Kubeflow与OrionX的集成
为了使用Kubeflow集成GPU池化的能力,弥补在GPU算力精细化管理和资源优化方面的不足,只需要三步就可以让Kubeflow轻松实现开发效率的极大提升。具体步骤如下:
1. 安装OrionX
在Kubernetes集群中安装OrionX,以便Kubernetes能够调用到OrionX提供的池化GPU能力,从而实现GPU资源的池化管理和调度。
图3. OrionX与K8S集成
OrionX为Kubernetes提供两个插件,实现与K8S的集成对接。集成后,系统管理员只需要在K8S中,即可完成对GPU资源池中vGPU资源的配置和调度管理。并且,允许系统管理员通过单一接口调度全部数据中心资源,实现SDDC(Software Defined Data Center,软件定义的数据中心),这样就简化了运维工作。如图3所示,OrionX为Kubernetes提供的两个插件是:
· OrionX Kubernetes Device Plugin
-
通过和OrionX Controller通讯,获取OrionX GPU资源池信息。
-
通过Kubernetes定义的Device Plugin标准向Kubernetes注册名字为virtaitech.com/gpu的资源。
· OrionX Kubernetes Scheduler Extender
-
提供基于HTTP API通讯的松耦合调度扩展功能。
-
通过配置文件向Kubernetes注册名字为virtaitech.com/gpu的资源敏感字,使其指向Orion Kubernetes Scheduler Extender的HTTP服务地址。
2. 配置Kubeflow
修改Kubeflow的配置文件,以支持GPU池化,分别在以下两个目录的spawner_ui_config.yaml文件中添加如下代码:
1)kubeflow/components/crud-web-apps/jupyter/backend/apps/common/yaml
2)kubeflow/components/crud-web-apps/jupyter/manifests/base/configs
图4. Kubeflow支持OrionX
3. Kubeflow Notebook选择GPU Vendor为VirtAI
在创建notebook时,在Number of GPUs域选择GPU数量,在GPU Vendor下拉列表中就可以看到VirtAI,选择GPU Vendor为VirtAI,这样创建完成的notebook使用的GPU算力资源就是OrionX提供的池化GPU。
图5. notebook选择VirtAI GPU
五
使用效果
通过集成GPU池化能力,Kubeflow可以用更少的GPU卡支持更多的开发人员。
图6. OrionX大幅提升GPU利用率
参考一客户提供的数据:在进行OrionX池化之前,需要50张卡静态分配给50个开发人员使用,但GPU的峰值使用率为约为12张卡,大部分时间的GPU使用率都是低于10张卡。
OrionX池化之后,客户只需12张卡就可以满足原有资源需求,卡数量节省76%。当Kubeflow遇上GPU池化,可以帮助客户实现以下效果:
· 提高资源利用率:GPU池化技术可以使GPU资源得到更充分的利用,降低企业的硬件投资成本。
· 简化资源管理:Kubeflow集成GPU池化后,可以简化资源管理过程,提高开发者的工作效率。
· 易于扩展:Kubeflow集成GPU池化后,可以轻松地扩展计算资源,以满足不断增长的AI算力需求。
OrionX除了帮助客户实现高效的AI开发之外,也有一些客户基于GPU池化技术的其他高级特性,比如跨机聚合、远程调用、资源切分、自定义算力设备等能力,通过将OrionX深度集成Kubeflow,实现训练及推理场景的效率提升。
六
展望
GPU池化技术的引入为Kubeflow等开源AI开发平台注入了新的活力,为企业提供了更高效、更经济的AI开发训练推理一体化解决方案。
未来,随着技术的不断进步和应用场景的不断拓展,我们有理由相信,GPU池化将在AI领域发挥举足轻重的作用,助力企业实现智能化转型和可持续发展。
参考文献:
1. https://github.com/kubeflow/kubeflow
2. https://www.kubeflow.org/docs/started/architecture/
3. https://www.kubeflow.org/docs/components/central-dash/overview/