核心要点

  • 澄清规模与负载:千卡级训练 LLM 还是多租户混合任务?关注扩展效率、GPU 利用率与故障恢复

  • 并行策略组合:数据并行 + 张量并行 + 流水线并行 + ZeRO 分片,按模型大小与互联拓扑选择

  • 调度与容错:K8s/GPU 调度按拓扑亲和分配,checkpoint + 弹性训练应对故障与抢占

  • 配套数据管线、实验管理与成本/利用率监控,扩展效率(弱扩展线性度)是核心评价

标准回答

需求与指标

先澄清:是支撑单个千卡 LLM 预训练,还是多团队多任务共享集群?核心指标:扩展效率(加卡是否近线性提速)、GPU 利用率(MFU)、平均无故障训练时长与恢复时间、单位训练成本。

整体架构

资源调度层(K8s + GPU 调度)→ 训练框架层(并行 + 优化)→ 数据管线层 → 实验/产物管理层 → 监控层,贯穿全栈。

并行策略

按模型规模组合 并行:数据并行(多副本同步梯度)打底;模型放不下时上张量并行(层内切分,需高速 NVLink);超深模型用流水线并行(层间切分);用 DeepSpeed ZeRO 分片优化器状态/梯度/参数省显存。三维并行(DP×TP×PP)按 GPU 互联拓扑组合,TP 放机内、PP/DP 跨机。

调度与容错

GPU 调度做拓扑感知(同任务的卡尽量同机/同交换机,减跨机通信)、gang scheduling 保证整组同时启动。容错是大规模训练命门:定期异步 checkpoint,节点故障/抢占时从最近 ckpt 弹性恢复,支持动态增减节点继续训练。

数据与实验

数据管线做分布式读取、shuffle 与预取,避免 IO 成瓶颈;实验管理记录超参、代码版本、指标与产物,保证可复现。

监控与成本

监控 GPU 利用率、通信占比、loss 曲线与吞吐,异常(loss 爆炸、慢节点 straggler)告警;用利用率和成本看板驱动资源回收与混部,弹性用 Spot/潮汐算力降本。

常见误区

⚠️ 常见踩坑

只讲并行策略不讲容错与调度:千卡训练每天都可能掉卡,没有 checkpoint + 弹性恢复,一次故障就前功尽弃;也别忽略数据 IO 与通信瓶颈,否则加卡不提速、扩展效率塌方。

追问

追问 1三维并行(数据/张量/流水线)如何配比?依据是什么?

依据模型大小、单卡显存与集群互联拓扑。张量并行通信最密集,应放在 NVLink 高带宽的机内、规模不宜过大(常 8 以内);流水线并行跨机,要平衡气泡(micro-batch 越多气泡越小);数据并行最外层扩规模。先用 TP 让模型放进单机,PP 跨机切深度,DP 复制扩吞吐,再叠 ZeRO 进一步省显存。最终以实测 MFU 与扩展效率调参定型。

追问 2千卡训练故障频繁,如何最小化损失并快速恢复?

异步分层 checkpoint:把 ckpt 写本地 SSD 再后台上传,缩短写阻塞;用冗余/分片 ckpt 避免单点。检测 straggler 与掉卡后,弹性训练从最近 ckpt 重启并把故障节点替换为备机,无备机时降并行度继续。配合健康检查、自动重调度与「热备节点池」,把恢复从小时级压到分钟级;高价值任务可做 in-memory checkpoint 或冗余副本进一步降损。

追问 3如何提升 GPU 利用率(MFU)与降低成本?

算子层用混合精度(BF16/FP8)、FlashAttention、融合算子减少访存;通信用梯度分桶 overlap、ZeRO 通信重叠计算降同步开销;消除 IO 瓶颈(数据预取/缓存)与 straggler。集群层做混部(训练 + 离线任务填谷)、潮汐与 Spot 算力、按利用率回收闲置卡。用 MFU 与每 token 成本看板量化,持续找瓶颈优化扩展效率。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。