GPU集群调度(Slurm / K8s)
AI TERM术语词条Slurm / K8s
术语释义
在共享显卡资源池上分配训练与推理任务,决定排队时长与整体利用率,常用 Slurm 与 Kubernetes 两类工具。
GPU 集群调度指在共享的显卡资源池上,把训练、微调与推理任务分配到具体节点与显卡的过程,常用工具包括 Slurm(面向高性能计算的批处理调度系统)与 Kubernetes(K8s,容器编排系统)。它要解决的问题是:显卡昂贵且数量有限,任务大小不一,如何减少空闲与碎片,让整体利用率尽可能高。
调度关注点
- 队列与优先级:区分交互式调试与长时训练,避免小任务被大任务长期阻塞。
- 资源碎片:合理装箱,减少有卡却拼不出整机的浪费。
- 抢占与恢复:高优先级任务可抢占低优先级任务,被抢占方需支持断点续训。
- 拓扑感知:把通信密集的任务尽量放在同一节点或高速互联范围内。
- 可观测性:统计排队时长与显卡空转率,作为扩容与策略调整的依据。
两条常见路线
以批处理作业为主的训练集群常选 Slurm,配置直接、贴近高性能计算的使用习惯;以容器化微服务为主的场景更倾向 Kubernetes,便于与既有发布体系打通。也有团队两者并用,训练任务走前者,在线推理走后者。混合部署时要统一账号、存储挂载与监控口径,否则排障会在两套体系之间来回跳,值班成本明显上升。无论选哪条路线,都要把排队时长与失败重试纳入监控,否则问题往往在用户抱怨之后才被发现。调度策略直接决定研究人员的等待时间与机房投入的产出比,因此它既是技术问题,也是资源分配与团队协作的问题。
常见误区
- 只盯显卡利用率:利用率高可能来自无效计算,还要看任务是否真的在推进。
- 忽略存储与网络:数据读取或互联带宽跟不上时,加卡也不会提速。
- 一刀切优先级:全部设为高优先级等于没有优先级,队列依然会堵。
- 缺少断点续训:没有检查点机制时,抢占会直接浪费已投入的算力。
- 只看扩容不看策略:调度规则不合理时,加机器只能缓解排队,不能消除浪费。
实践要点
- 给任务分级:按紧急程度与时长分成少数几档,规则简单才容易被遵守。
- 定期复盘排队数据:看是谁在等、等多久,据此调整配额而不是凭感觉扩容。
- 预留应急额度:为线上推理与故障排查留出少量显卡,避免被训练任务占满。
- 让等待可见:把排队时长反馈给使用者,便于他们自行调整任务规模。