大模型时代 GPU 资源怎么调度?多个团队共用 GPU 集群怎么管?
面试怎么回答
GPU 贵且稀缺、通常整卡分配、不同任务差异大、多卡训练还对拓扑敏感。我会按负载类型分池:在线推理池保障容量,训练池按项目排期,弹性池跑批量推理和数据处理、可被抢占。每个团队有保障配额,超出部分用空闲资源但优先级低,这和 YARN 容量调度一样;低优先级任务被抢占要能保存检查点恢复。小模型推理和调试用 MIG 或时间片共享,夜间推理缩容把卡给批量任务。平台上一般用 Kubernetes 加批调度器支持队列、配额和成组调度。运营上监控实际算力和显存利用率,识别占卡不用并回收,按团队统计 GPU 小时做成本分摊。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
公司买了一批 GPU:算法团队要训练和微调,数据团队要跑批量 Embedding 和数据清洗,应用团队要部署在线推理服务。很快就出现了「有人占着卡不用,有人排队排不上」的情况。面试官问这题,想看你能不能把大数据集群的资源管理经验迁移到 GPU 上。
GPU 资源和 CPU 资源有什么不同
- 贵且稀缺:一张卡的成本远高于普通服务器,闲置就是浪费;
- 粒度粗:一张卡通常整卡分配,切分能力有限;
- 任务差异大:在线推理要低延迟、长期占用;训练是长时间独占多卡;批量推理和数据处理可以随时启停;
- 拓扑敏感:多卡训练需要卡之间高速互联,调度时要考虑卡在哪台机器、哪些卡之间互联。
调度体系的设计
- 按负载类型分池:
- 在线推理池:保障容量,按服务预留;
- 训练池:按项目和时间段排期;
- 弹性池:批量推理、数据处理、实验,用剩余资源,可被抢占;
- 配额和优先级:每个团队有保障配额,超出部分可以使用空闲资源,但优先级低、可被抢占。这和 YARN 的容量调度思路一致;
- 抢占和断点:低优先级任务被抢占时,要能保存检查点、之后恢复,因此弹性任务必须支持断点续跑;
- 共享和切分:小模型推理、开发调试不需要整卡,可以用 MIG(多实例 GPU)或时间片共享提高利用率;
- 潮汐调度:白天在线推理流量高,夜间流量低时把推理服务缩容,释放的卡给批量任务和训练使用。
平台层面
很多公司基于 Kubernetes 管理 GPU,配合批调度器支持队列、配额、成组调度(训练任务要么全部拿到卡、要么都不启动)。
运营:利用率是核心指标
- 监控每张卡的实际利用率(算力利用率、显存利用率),而不只是「是否被分配」;
- 识别「占卡不用」:分配了但长期利用率很低的任务,通知负责人或自动回收;
- 按团队统计 GPU 小时和成本,做成本分摊;
- 定期复盘配额是否合理。
数据团队的视角
数据团队的 GPU 任务大多是批量的(Embedding、数据清洗、离线推理),适合放在弹性池里,利用夜间和空闲资源,并且一定要做到可中断、可恢复。