开发者学堂课程【5分钟玩转阿里云容器服务:如何使用 ACK 共享 GPU 调度】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1038/detail/18167
如何使用 ACK 共享 GPU 调度
内容介绍
一、容器服务之共享 GPU 调度
二、实际操作
三、共享 GPU 调度的组件功能
四、显存不隔离模式的共享任务
五、多卡共享功能
六、最新上线的算力隔离功能
一、 容器服务之共享 GPU 调度
共享容器调度是阿里云容器服务AI套件提供的能力之一,K8S 原生调度器仅支持单卡调度,共享 GPU 调度借助于阿里自研 cgpu 显卡调度技术,能够为用户提供多个应用,共享同一个显卡的调度能力,共享 GPU调度在进行显卡资源调度时,具有支持 GPU 的显存和算力隔离,适配开源标准方案,AI应用无需重新编译或进行 CUDA库替换,以及针对英伟达设备的底层操作API更加稳定和收敛的特点,其中共享GPU 调度又可分为基础版和专业版,其中基础版只能用于专业版 ACK 集群,专业版只能用于Pro版ACK集群,专业版共享 GPU 调度在具有技术所有功能的基础上增强了多卡共享调度能力。能够支持单一 PUD 在多 GPU 卡申请部分显存以及算力同时安装方式上也更加简单。基础法需要登录到每台机器上进行组件安装,专业版需要在控制台进行两步操作即可使用减少安装流程以及出错风险。
二、实际操作
下面就将通过实际操作来带领大家了解一下,Pro 版 ACK 集群共享 CPU 调度的安装以及基本使用并展示组件能力。
这里已经部署了一台包含异构节点的集群安装共享GPU调度的第一步是是安装AI套件,从控制台的侧边栏应用卡中找到云原生AI套件的位置,进入云原生AI套件点击一键部署,勾选部署选项当中的调度组件,再点击页面底部的部署AI条件即可。
第二步需要去节电池定义启用调度能力的节点,首先进入节点池标签编辑需要启动调度能力的节电池,确认节电池当中的机器规格为异构计算机型,打开高级选项添加如视频(均衡分布策略)中所示的节点标签并按需勾选下方的同时更新存量节点的标签及污点并点击确认即可,算力调度以及不隔离调度所需的节点标签各位可自行查看文档获取。需要注意的是算力调度的节点首次启用能力时必须重新加入节点池以安装必备组件。最后可以去节点选项卡中确认当前节点池中的节点已经包含了刚刚所添加的节点标签。
三、共享 GPU 调度的组件功能
本期将演示显存共享、多卡共享以及算力共享3种能力,显存共享包括显存隔离模式以及不隔离模式。首先通过控制台部署形成隔离模式的共享任务
这里已经提前编辑好的任务模版并已经提前创建好了不同模式的节点池,在调度时可以通过 Pod 中的 NodeSelectoe 选择显存的共享模式,任务会创建五个pod,每个Pod申请2GB的显存,通过选择器将Pod部署到隔离模式的节点上,部署一下等待Pod 创建好,这里由于之前已经部署过 Pod所以创建速度比较快。这里通过Pod内的英伟达命令去查看的所具有的显卡信息,可以发现此时Pod只能看到2GB的显存,此时 Pod 的可用显存已经被隔离了
四、显存不隔离模式的共享任务
这里同样部署5个Pod,通过选择器将Pod部署到不隔离模式的节点上。这里同样Pod创建好,同样进入Pod查看显卡信息袋泡茶就好。键进入bios查看显卡信息可以发现,此时Pod可以看到整张显卡的显存,此时多个Pod如果被调度到同一显卡上,这些Pod会产生一些显存的竞争以及挑战。
五、多卡共享功能
多卡共享功能是指同一个Pod在进行资源申请时其申请的资源会平均分配到多张显卡上。并且此时每张显卡剩余的资源都可以被调度给其他的Pod使用,使用多卡共享功能的关键步骤在于在Pod的描述文件当中添加以阿里云gpucount为key的label这样调度器就会将申请的Pod的显存以及算力资源平均分配到多张卡中,可以申请的资源量必须能够给显卡数量整除。这里我部署一下多卡共享任务。进入节点查看。可以发现此时Pod申请了两张显卡,并且每张显卡能看到的内损量都是1GB
六、最新上线的算力隔离功能
通常Pod占用显存的大小并不能完全代表任务的计算量多少,通过算力隔离功能能够让不同的应用更加有效地进行协同,更加有效地进行算力分配。申请GPU算力的关键步骤在于Pod描述文件当中添加以阿里gpucount为key的资源如任务模板所示
部署一下并等待Pod创建好。进入Pod查看显卡使用情况。可以发现此时这些Pod的申请显卡资源为2GB同时所有的Pod在同一显卡上所占用的显卡总的算力为50%是符合预期的。






