选择GPU调度策略时,核心原则是根据业务类型、资源规模、QoS需求来决定:
- 训练/大任务:优先Gang 调度 + 资源池隔离
- 推理/在线服务:优先延迟敏感调度 + 碎片整理
- 混合负载:优先优先级 + 抢占 + 配额管理
- K8s 环境:优先专用 GPU 调度器(HAMi / k8s-device-plugin / Volcano)
下面系统讲清楚怎么选。
一、先明确 4 个关键维度
| 维度 | 说明 |
|---|
| 任务类型 | 训练 / 推理 / 离线 / 在线 |
| GPU 使用粒度 | 整卡 / MIG / MPS / 虚拟化 |
| 负载特征 | 长/短任务、可中断、延迟敏感 |
| 管理规模 | 单机 / 小规模集群 / 大规模 |
这 4 个维度决定你“不该选什么”。
二、常见 GPU 调度策略对比
1️⃣ 静态分配(最基础)
适合:小规模、实验环境
方式:固定绑定 GPU 卡
优点:实现简单、稳定
缺点:利用率低、碎片严重
✅ 不推荐生产环境
2️⃣ 时间片轮转(Temporal)
适合:轻推理 / 小任务
方式:多个任务分时复用 GPU
| 优点 | 缺点 |
|---|
| 提升利用率 | 切换有开销 |
| 适合短时任务 | 不适合大模型 |
✅ 常用于 边缘推理
3️⃣ 空间划分(Spatial)
通过硬件或软件切分 GPU:
✅ MIG(A100/H100)
✅ MPS
✅ 常用于 推理 + 训练混合
4️⃣ Best-Effort / 抢占调度
关键词:优先级 + 抢占
- 高优先级任务可抢占低优先级
- 常用于:在线推理 > 离线训练
✅ 大规模混合负载必选
5️⃣ Gang Scheduling(分布式训练必选)
问题:
8 卡训练任务,只拿到 7 卡 → 死锁
解决:
- 一次性调度所有 GPU
- 常用工具:Volcano / YARN / Slurm
✅ 多卡训练必须
6️⃣ 碎片感知调度(Fragmentation-aware)
问题:
有 4 张卡,但被 1 卡任务占满
策略:
✅ 大集群非常重要
三、按场景直接给结论(重点)
✅ 场景 1:大模型训练(单任务多卡)
推荐策略
工具
- Slurm / Volcano / K8s + Gang plugin
✅ 场景 2:在线推理(低延迟)
推荐策略
- 独占 GPU 或 MIG
- 延迟优先调度
- 不混部训练任务
工具
✅ 场景 3:离线推理 / 批量任务
推荐策略
✅ 场景 4:训练 + 推理混合
推荐策略
✅ 场景 5:多租户云平台
推荐策略
- 配额(Quota)+ QoS
- MIG / vGPU
- 计费 + 审计
四、Kubernetes 下的推荐组合(实战)
基础方案
- k8s-device-plugin
- 整卡 / MIG
- Node 亲和性
进阶方案(推荐)
- Volcano(Gang + 优先级)
- HAMi(GPU 虚拟化 + 共享)
- Koordinator(QoS + 混部)
五、选择决策表(速查)
| 场景 | 调度策略 |
|---|
| 单卡推理 | 独占 / MIG |
| 多卡训练 | Gang |
| 在线服务 | 延迟优先 |
| 离线任务 | Best-effort |
| 混合负载 | 优先级 + 抢占 |
| 多租户 | 配额 + 隔离 |
六、一句话总结
GPU 调度不是“选一个算法”,而是“组合策略 + 工程约束”
先定 QoS,再定隔离方式,最后选调度器。
如果你愿意,我可以:
- ✅ 给你 K8s GPU 调度 YAML 示例
- ✅ 帮你 设计一套 GPU 调度架构图
- ✅ 针对 你现在的业务(训练/推理/规模)给具体方案
直接说你的场景即可。