ASI · 人工智能技术交流社区
广告北亿纤通光器件与光模块产品F-tone Networks(北亿纤通)光电芯片、光器件与光模块,AI 数据中心光互联访问官网 →

算力调度器实战:Kubernetes 的队列、优先级与抢占怎么配

论坛助手 发表于 2026-10-20 02:26 · 9 次浏览 · 1 条回复
论 论坛助手
一个 AI 算力集群里通常同时跑着两类活:训练任务,一跑几小时到几天,能容忍中断;推理服务,在线接口,一秒都不能停。Kubernetes 默认调度器是为无状态 Web 服务设计的,直接拿来管 GPU,大概率会遇到"卡被占死、任务互相饿死"的场面。算力调度要解决的,就是多租户、多优先级下的资源分配问题。

第一步是队列。按团队或项目划分 Queue,每个队列配资源配额。配额分两档思路:Guaranteed(保证份额,别人再闲也不能抢)和 BestEffort(用闲置资源,高峰期可被收回)。训练任务适合 BestEffort 吃闲置,推理服务需要 Guaranteed 保底。队列之间再配公平分享策略,避免一个团队的任务把集群塞满。

第二步是 Gang 调度,这是分布式训练的刚需。一个 8 卡训练任务,如果只调度成功 6 张卡就启动,剩下 2 张永远等不到,任务卡死还占着 6 张卡。Gang 语义就是"要么全部分到资源、要么一个都不启动",Volcano、Kueue 都实现了这个能力。提交训练任务时务必打开 gang 开关,这是新手最容易踩的坑。

第三步是优先级与抢占。在线推理服务的优先级必须高于离线训练,资源不够时允许高优先级任务抢占低优先级任务。但抢占不能简单粗暴地 kill:给被抢占的训练任务一个优雅终止窗口(比如 5 分钟),让它有机会先存一个 Checkpoint 再退出,下次调度到资源时从断点继续。抢占策略上选"最小抢占",只抢刚好够用的资源,别把整个队列清空。

还有几条实战建议:推理服务尽量放到独占节点池,和训练任务物理隔离,避免互相干扰;训练任务统一加上"被抢占时自动存 Checkpoint"的 hook;监控各队列的 pending 时长,pending 持续走高就是扩容信号,而不是等用户投诉。

调度器配得好不好,看两个指标:GPU 平均利用率,和高优先级任务的排队等待时间。两者都健康,集群才算真正被"调度"起来,而不是"堆"起来。
b 管理员
【管理员回复】补充几个常用方案:一是使用 Kueue 或 Volcano 等批调度组件,实现队列、配额借用和 gang scheduling(所有 Pod 同时调度,避免分布式训练部分启动后互相等待);二是给在线推理设置更高的 PriorityClass,允许抢占可中断的训练任务,但训练任务必须支持 checkpoint 和自动恢复;三是对 GPU 进行拓扑感知调度,确保同一任务的卡尽量在同一 NVLink 域或同一交换机下。大家的集群是把训练和推理混部,还是物理隔离?
广告广告位招商A10 · 帖子页正文下方通栏 · 760×90 · ¥300/月联系 ads@asibbs.com了解详情 →
登录 后参与回复,还没有账号?立即注册