大规模AI训练与推理集群资源调度系统设计要点

随着大模型训练、后训练、推理和评估任务的规模不断扩大,AI 集群逐渐从单机多卡走向多机多卡、多机房甚至多云环境。此时,资源调度系统不再只是简单的"找一台有空闲 GPU 的机器",而是需要同时处理 GPU、CPU、RDMA 网络、本地存储、并行文件系统、任务优先级、队列配额、故障隔离和利用率优化等一系列问题。

本文从工程实践角度,梳理大规模 AI 训练与推理集群资源调度系统的关键设计点,涉及 Kubernetes、容器、分布式系统、GPU/RDMA/存储协同等方向。

一、资源抽象与拓扑感知

AI 集群中的资源类型远比普通 Web 集群复杂。调度系统首先要解决资源抽象问题。

常见资源包括:

GPU:型号、显存、算力、MIG 切分、NVLink 拓扑、PCIe 位置;

CPU:核数、NUMA 节点、大页内存、绑核能力;

网络:RDMA 网卡、IB/RoCE、带宽、交换机层级;

存储:本地 NVMe、并行文件系统、对象存储、缓存盘;

其他异构硬件:NPU、FPGA、专用推理卡等。

在 Kubernetes 中,可以通过 Device Plugin 上报 GPU、RDMA 等扩展资源,通过 Node Label 标识机型、机房、网络拓扑和存储类型。调度器在做决策时,不能只看"剩余数量",还要看资源之间的亲和关系。

例如,同一训练任务的多个 Pod 如果被分散到跨 Spine 的节点上,NCCL 通信效率会明显下降。因此,拓扑感知调度是大规模 AI 集群的基础能力。

二、Kubernetes 调度扩展与 Gang Scheduling

原生 Kubernetes 调度器适合通用工作负载,但在 AI 场景下有几个明显不足:

缺少 Gang Scheduling:一个分布式训练任务需要所有 Worker 同时启动,否则容易死锁;

队列与配额能力弱:多团队共享集群时,需要队列、配额、公平共享;

抢占与回填不够灵活:高优先级任务需要快速获得资源;

拓扑感知不足:GPU、RDMA、NUMA 之间的亲和关系难以表达;

异构资源编排复杂:GPU、CPU、存储、网络需要联合调度。

常见做法是基于 Kubernetes Scheduler Framework 扩展 Filter、Score、Reserve、Permit、Preempt 等阶段,或者使用 Volcano、Kueue、YuniKorn 等调度组件。通过 CRD 定义 Queue、PodGroup、ElasticQuota 等对象,可以实现队列配额和组调度。

示例:

yaml

apiVersion: scheduling.volcano.sh/v1beta1

kind: PodGroup

metadata:

name: llm-training-job

spec:

minMember: 8

queue: research

priorityClassName: high

这个 PodGroup 表示一个训练任务至少需要 8 个 Pod 同时满足条件后才能启动,避免部分 Worker 长期占用资源却无法推进任务。

三、容器运行时与 GPU 支持

AI 训练任务通常运行在容器中。常见容器运行时包括 Docker、Containerd、Kata、Podman 等。

Containerd:轻量、稳定,适合作为 Kubernetes 默认运行时;

Docker:生态成熟,但 Kubernetes 已逐步转向 Containerd;

Kata:提供更强隔离,适合多租户安全场景;

Podman:无守护进程,适合某些边缘或特殊环境。

GPU 容器需要 nvidia-container-toolkit 等组件支持。RDMA 场景还需要挂载 IB 设备、配置 IPC_LOCK、共享内存和大页内存。对于训练任务,容器内还需要关注:

NCCL 环境变量;

GPU 可见性;

RDMA 设备亲和;

共享内存大小;

Checkpoint 写入路径;

数据缓存目录。

容器运行时选择不只是"能跑就行",它会直接影响启动速度、隔离性、GPU 性能和故障恢复能力。

四、GPU、RDMA 与存储协同调度

在大模型训练中,计算、通信、存储三者必须协同。

  1. GPU 与 RDMA 亲和

同一通信组的 GPU 和 RDMA 网卡应尽量位于同一 NUMA 节点或同一 PCIe 拓扑下。调度器可以通过 Node Label 和 Device Plugin 获取这些信息,在打分阶段优先选择通信代价低的节点组合。

  1. 数据本地性

训练数据集往往很大。如果每次任务启动都从远端对象存储拉取数据,GPU 会长时间等待 I/O。调度时可以优先选择已经缓存数据集的节点,或者结合缓存系统做数据预热。

  1. Checkpoint 优化

大模型训练需要定期保存 Checkpoint。Checkpoint 写入慢会阻塞训练。调度系统可以感知存储带宽和本地 NVMe 容量,把 Checkpoint 压力分散到不同存储层。

  1. 避免资源碎片

GPU 任务对资源组合要求高。如果调度器只做简单装箱,容易产生"有 GPU 但缺 RDMA"或"有 GPU 但 CPU 不足"的碎片。需要通过 bin packing、拓扑打分和重调度来减少碎片。

五、多机房、多地域与多云调度

当集群扩展到多机房、多地域或多云时,调度问题会更加复杂。

需要考虑:

数据合规与地域限制;

跨机房带宽成本;

网络延迟;

故障隔离;

统一配额与权限;

多集群控制面;

任务迁移与重调度。

常见方案是使用多集群调度框架,例如 Karmada、Clusternet,或自研联邦调度层。核心思路是:控制面统一,数据面分散;任务尽量靠近数据;跨云资源作为弹性补充,而不是默认选择。

六、在离线混布与潮汐资源

AI 集群中既有在线推理服务,也有离线训练、评估和后训练任务。在线服务对延迟敏感,离线任务对吞吐敏感。通过混布可以提高整体利用率。

关键机制包括:

QoS 分级;

优先级与抢占;

资源超卖;

潮汐资源回收;

驱逐前通知;

Checkpoint 后抢占。

训练任务通常可以容忍一定中断,只要支持 Checkpoint 和恢复。但 GPU 显存不可压缩,抢占代价高,因此不能简单照搬 CPU 混布策略。调度器需要评估抢占成本,选择合适 victim,并尽量避免频繁抖动。

七、排队、优先级与抢占

大规模集群中,排队策略直接影响公平性和利用率。

常见策略包括:

FIFO;

优先级队列;

公平共享;

DRF;

配额与弹性配额;

回填调度;

Gang Scheduling;

抢占与驱逐。

回填调度可以在大任务等待资源时,先运行小任务,提高利用率。但回填必须保证不会导致大任务无限等待。抢占则需要结合优先级、运行时长、Checkpoint 成本和队列配额综合判断。

八、利用率优化的关键指标

利用率优化不能只看 GPU 使用率。更合理的指标包括:

GPU SM 活跃度;

显存占用;

RDMA 带宽利用率;

存储 I/O 等待;

队列等待时间;

任务排队时长;

资源碎片率;

有效算力产出;

任务失败率;

Checkpoint 恢复时间。

高 GPU 利用率不一定代表高吞吐。例如,GPU 在等待数据时也可能显示较高占用。真正需要关注的是有效计算时间和端到端任务效率。

九、工程实现建议

实现一个可用的 AI 调度系统,通常需要多种语言和组件配合:

Go:编写 Controller、Operator、Scheduler Plugin;

Python:策略分析、离线评估、任务模板;

Shell:自动化运维和初始化;

Kubernetes:CRD、Device Plugin、Scheduler Framework;

Prometheus + Grafana:监控与告警;

OpenTelemetry:链路追踪;

日志系统:审计与问题定位。

工程上建议从单集群调度开始,逐步引入队列、优先级、Gang Scheduling、拓扑感知、混布和多集群能力。不要一开始就追求大而全,而应优先解决最影响任务效率和稳定性的瓶颈。

十、总结

大规模 AI 训练与推理集群的调度系统,是 Kubernetes、容器、分布式系统、GPU、RDMA、存储和队列策略的综合工程。它的核心目标可以概括为:

稳定:任务能跑起来,故障能恢复;

高效:GPU、网络、存储利用率高;

公平:多团队多队列资源共享合理;

可观测:问题能定位,容量能规划;

可扩展:从单集群走向多机房、多云。

对于从事 AI 基础设施方向的工程师来说,理解资源抽象、拓扑感知、Gang Scheduling、抢占、混布和利用率闭环,是构建大规模训练平台的重要基础。

做猎头这些年攒了不少行业洞察,好机会也会第一时间分享,主页经常更新,有缘的话,锁定我🔒,不迷路。

相关推荐
GlobalInfo1 小时前
2026-2032年工业无人机测绘服务产业链及前景趋势报告:产业洞察、十五五路径与市场竞争格局
人工智能·无人机
鬼手点金1 小时前
模型即 Agent:当模型本身成为产品
开发语言·前端·人工智能·python·机器学习
阿Q的AI笔记1 小时前
推理已占AI工作负载47%、显存浪费从60%降至4%:大模型部署工程化完全指
人工智能
田里的水稻1 小时前
PyTorch-Dataset\DataLoader数据加载
人工智能·pytorch·python
语音之家1 小时前
NeurIPS 2026|AnyEdit:免人声分离,嘈杂音频也能局部编辑
人工智能·音视频·消融实验·声源分离
染指11101 小时前
147.Agent-LangGraph归并函数
开发语言·人工智能·python·langchain·agents
思绪漂移1 小时前
人机交互(人和AI)中的流程设计原则之一
人工智能·人机交互
磁场转动100万匹1 小时前
PyTorch 版 YOLOv3 源码逐段详解:从配置文件到训练、评估、检测(定制自己的数据集)
人工智能·深度学习·yolo
lisw052 小时前
“科学前沿极限突破计划”述评!
大数据·人工智能·学习