本文详细介绍了在阿里云容器服务ACK托管集群Pro版中,通过共享GPU调度实现GPU显存和算力精细化分配的操作指南。
一、核心功能概述
ACK托管集群Pro版支持为应用申请GPU显存和算力资源,实现以下两种任务模式:
- • 仅申请显存
- • 同时申请显存和算力
注意: 两种任务模式不能共存于同一节点。
二、前提条件
集群要求
- • 已创建ACK托管集群Pro版,且版本≥v1.20
- • 调度器需满足特定版本要求(例如1.28集群需调度器版本≥v1.28.1-aliyun-5.6)
组件要求
- • 安装共享GPU组件,Chart版本≥1.2.0
- • cGPU版本≥1.0.5
三、使用限制
算力申请规则
- • 每张GPU卡算力按100计量(代表100%算力)
- • 申请值需为5的倍数,最小值5(否则任务提交失败)
地域支持
- • 仅限特定地域(如北京、上海、深圳、香港、新加坡、美国硅谷等15个地域)
集群创建时间
- • 2022年3月1日前创建的集群需手动升级调度器(提交工单→卸载旧组件→安装新组件)
四、操作步骤详解
步骤一:创建支持算力分配的节点池
在容器服务控制台创建节点池,关键配置:
- • 节点标签1:
ack.node.gpu.schedule=core_mem(开启GPU显存和算力隔离) - • 节点标签2:
ack.node.gpu.placement=binpack(启用Binpack算法分配GPU)
重要提示: 现有GPU节点需先移除再重新加入节点池,不可直接通过kubectl修改标签。
步骤二:验证算力分配功能
执行命令 kubectl get nodes <节点名> -o yaml,检查输出中是否包含 aliyun.com/gpu-core.percentage 字段,确认算力功能已开启。
步骤三:部署测试任务
创建Job示例:
- • 申请资源: 2 GiB显存 + 30%算力(单张GPU卡的30%)
关键YAML配置:
resources: limits: aliyun.com/gpu-mem: 2 # 显存(单位GiB) aliyun.com/gpu-core.percentage: 30 # 算力百分比
验证效果:
- • 通过
nvidia-smi查看资源使用情况:显存限制为约2 GiB,算力利用率为30% - • 日志刷新速度变慢,确认算力被限制在30%左右
五、注意事项
- • 多任务共享同一GPU时,
nvidia-smi显示的算力为累计值(如3个30%任务显示90%) - • 测试完成后可通过
kubectl delete job cuda-sample清理任务
总结
本文提供了从环境准备、节点池配置到任务部署的全流程指南,通过共享GPU调度实现GPU资源的精细化管控,显著提升资源利用率。适用于AI训练、推理等需要动态分配GPU算力的场景。
官方文档[1]