NVIDIA与Run:ai:一次训练,多云部署,驾驭你的AI模型
2023年07月10日 由 Alex 发表
505140
0
组织越来越多地采用混合云和多云策略来访问最新的计算资源,持续支持全球客户,并优化成本。然而,随着堆栈的变化,工程团队面临的一个主要挑战是在不同的平台上运行人工智能应用程序。这要求MLOps团队熟悉不同的环境,并要求开发人员定制应用程序以跨目标平台运行。
NVIDIA提供一致的完整堆栈,可在GPU驱动的本地或云实例上进行开发。然后,你可以在任何GPU驱动的平台上部署该AI应用程序,而无需更改代码。
介绍最新的NVIDIA虚拟机映像
NVIDIA云原生堆栈虚拟机映像(VMI)是GPU加速的。它预装了Cloud Native Stack,这是一个参考架构,包括上游Kubernetes和NVIDIA GPU Operator。NVIDIA Cloud Native Stack VMI使你能够构建、测试和运行由Kubernetes编排的GPU加速容器化应用程序。
NVIDIA GPU Operator自动化了在Kubernetes上公开GPU所需的软件的生命周期管理。它支持高级功能,包括更好的GPU性能、利用率和遥测。通过与业界领先的Kubernetes解决方案的兼容性认证和验证,GPU Operator使组织能够专注于构建应用程序,而不是管理Kubernetes基础设施。
NVIDIA Cloud Native Stack VMI 可在 AWS、Azure 和 GCP 上使用。
现已推出:NVIDIA的企业支持
开发人工智能解决方案从概念到部署并不容易。借助NVIDIA AI企业支持服务,让你的AI项目步入正轨。
Run:ai已通过NVIDIA ai Enterprise认证
Run:ai是人工智能工作负载计算编排的行业领导者,已在其Atlas平台上认证了NVIDIA ai Enterprise,这是一款端到端、安全的云原生人工智能软件套件。这一额外的认证使企业能够加速数据科学管道。他们可以专注于简化预测人工智能模型的开发和部署,以实现基本流程的自动化,并从数据中获得快速见解。
Run:ai提供ai计算平台,简化云和本地集群中GPU的访问、管理和使用。智能调度和先进的分数GPU功能确保你为作业获得适当的计算量。
Run:ai Atlas包括GPU编排功能,帮助研究人员更有效地使用GPU。他们通过自动化人工智能工作负载的编排以及跨团队和集群的硬件资源的管理和虚拟化来实现这一点。
Run:ai可以安装在任何Kubernetes集群上,为你的ai基础设施提供有效的调度和监控功能。使用NVIDIA云原生堆栈VMI,你可以将云实例添加到Kubernetes集群中,以便它们成为集群的GPU工作节点。
在AWS上设置云原生堆栈VMI
在AWS市场中,使用启动AWS市场实例指令启动NVIDIA Cloud Native Stack VMI。
确保必要的先决条件已经满足,并使用Cluster install说明安装Run:ai。安装完成后,在Overview仪表板上,你应该看到度量标准开始填充。在Clusters选项卡上,还应该看到已连接的集群。
接下来,向kube- apisserver添加一些命令组件。在Run:ai平台上启用用户身份验证。
默认情况下,你可以找到kube- apisserver。在以下目录下创建Yaml文件:
/etc/kubernetes/manifests/kube-apiserver.yaml
你可以验证oidc命令是否已被kube- apisserver成功应用。在输出中查找oidc命令。
spec:
containers:
- command:
- kube-apiserver
- --oidc-client-id=runai
- --oidc-issuer-url=https://app.run.ai/auth/realms/nvaie
- --oidc-username-prefix=-
设置统一UI并创建一个新项目。项目帮助使用Run:ai平台的数据科学家和研究人员规定GPU配额保证。
命名新项目,并为该项目分配至少一个GPU。在本文中,我创建了一个具有双GPU配额的项目和一个没有GPU配额的项目,分别标记为nvaii -高优先级和nvaii -低优先级。创建项目后,你可以安装Run:ai CLI工具,该工具使你能够向集群提交工作负载。
下面的命令使用runai CLI提交一个作业(job1或job2),利用一个名为quickstart的Docker映像。快速入门包含TensorFlow, CUDA,一个模型,以及输入和训练模型的数据。它利用一个GPU进行训练(- g1),并代表由-p参数表示的低优先级或高优先级项目提交。
部署一些测试作业,通过运行以下命令来显示Run:ai的一些编排功能:
runai submit job1 -i gcr.io/run-ai-demo/quickstart -g 1 -p nvaie-high-priority
runai submit job2 -i gcr.io/run-ai-demo/quickstart -g 1 -p nvaie-low-priority
你可以通过运行命令来检查作业的状态:
runai describe job job1 -p nvaie-high-priority
runai describe job job2 -p nvaie-low-priority
两个工作负载现在都在GPU上进行训练,正如你在Overview仪表板上看到的那样。
你可以提交额外的工作负载来突出你的作业抢占功能。目前,nvaie-high-priority项目可以保证访问两个GPU,因为其分配的GPU配额设置为2。你可以为非优先级高优先级的项目提交额外的工作负载,并观察到你正在抢占非优先级低的作业。
作业抢占使你能够查看训练工作负载的检查点过程,在检查点保存当前进度,然后抢占工作负载以将其从GPU中删除。保存训练进度并释放GPU以供更高优先级的工作负载运行。
runai submit job3 -i gcr.io/run-ai-demo/quickstart -g 1 -p nvaie-high-priority
你可以通过运行命令来检查作业的状态:
runai describe job job3 -p nvaie-high-priority
如果返回到概览指示板,你将看到为nvaii高优先级项目运行的两个作业,而来自nvaii低优先级的工作负载被抢占并放回到挂起队列中。等待队列中的工作负载在GPU可用时自动重新调度。
要清理作业,运行以下命令:
runai delete job job1 -p nvaie-low-priority
runai delete job job2 job3 -p nvaie-high-priority
总结
NVIDIA提供一致的完整堆栈,可在GPU驱动的本地或云实例上进行开发。然后,开发人员和mlop可以在任何GPU驱动的平台上部署该AI应用程序,而无需更改代码。
Run:ai是人工智能工作负载计算编排的行业领导者,已在其Atlas平台上认证了NVIDIA ai Enterprise,这是一款端到端、安全的云原生人工智能软件套件。
来源:https://developer.nvidia.com/blog/train-your-ai-model-once-and-deploy-on-any-cloud-with-nvidia-and-runai/