【博客506】k8s扩展调度器,支持更灵活的GPU调度
k8s 扩展调度器慈云数据自营海外云服务器,高稳定高性价比,支持弹性配置,支持更灵活的 GPU 调度后台
现在,随着公司在机器学习和深度学习方面的投资越来越多,他们开始发现从头开始构建人工智能系统并不容易。
以深度学习为例。对于深度学习来说,算力是一切的根源。为了使用大量数据训练性能更好的模型并加快整个过程,企业 IT 系统需要能够快速有效地调用和管理大规模 GPU 资源。同时河南调度服务器云空间,由于算力资源非常昂贵,企业还需要通过分布式训练等方式实现GPU资源利用率最大化,进行成本控制。
面对这样的新需求,基于 Kubernetes 的云原生技术为人工智能提供了一种新的工作模式。凭借其功能河南调度服务器云空间,Kubernetes 将模型训练、推理和部署无缝扩展到多云 GPU 集群,使数据科学家能够跨集群节点自动部署、维护、调度和操作多个 GPU 加速应用程序容器。
在 1.6 和 1.9 版本中,Kubernetes 相继提供了对 NVIDIA GPU 和 AMD GPU 容器集群管理和调度的支持,进一步提升了统一管理和调度 GPU 等扩展资源的能力。
然而,Kubernetes作为下一代AI开发的基础也存在缺陷。在为训练任务分配算力资源时,通常会随机分配容器所在节点的 GPU,无法指定要使用的某种类型的 GPU。
虽然这对于大多数深度学习模型训练场景来说已经足够了,但如果数据科学家想要更灵活地使用更高的性能或某种类型的 GPU,Kubernetes 就会捉襟见肘。
核心痛点
1. Kubernetes 作为新一代 AI 开发的基础也存在缺陷。在为训练任务分配算力资源时,通常会随机分配容器所在节点的 GPU,无法指定要使用的某种类型的 GPU。
2. Kubernetes 在分配 GPU 设备时太大,通常以 GPU 训练卡作为自愿应用的最小单位
这导致显卡利用率低
溶液:
1. 扩展调度程序
2. 使用时间切片细分显卡资源分配时间片的粒度
3. 使用 GPU 共享解决方案细分显卡资源分配内存粒度
1. 扩展调度程序
依赖于以下现有的 Kubernetes 工作机制:
Scheduler Extender 机制
Device Plugin 机制
API Server 扩展机制(CRD)
Admission 扩展机制(ResourceQuota)
另一种方法:一种侵入性但廉价的修改方式
当库贝莱特申请装备时,
它是随机选择的,所以在 kubelet 申请设备时,使用一些库或自制资源获取逻辑来获取主机上显卡的具体信息,比如:连接到 NVlink 的,视频内存大,频率高,这样的细节,保存了显卡信息和显卡 ID 信息的绑定关系。那么当 kubelet 调用 nvidia-plugin 的分配时,就可以按照自己逻辑中 pod 的需求,将显卡 ID 申请给最合适的兄弟
二、利用时间切片细分显卡资源分配粒度
具体细节请参考之前的博文:K8S GPU 时间分片
第三,使用GPU共享解决方案细分显卡资源分配内存的粒度
部署参考链接:
阿里巴巴开源解决方案源码链接:
相关阅读: