并行训练
2 篇文章
- Stanford CS336 第七讲精读:并行(上)——ZeRO/FSDP、流水线并行与张量并行斯坦福 CS336(Language Modeling from Scratch, Spring 2025)第七讲完整讲义:单卡为什么不够用、8 卡一个盒子的网络层级、必须背下来的 all-reduce ≡ reduce-scatter + all-gather、数据并行的显存账单(16 字节每参数、5 份权重)与 ZeRO 三阶段(stage 1 在带宽受限下几乎免费,stage 3 就是 FSDP)、batch size 为什么是一种被花掉的资源、流水线并行的气泡与 zero-bubble 技巧、张量并行的切法与 8 卡经验法则、激活内存公式与序列并行,最后落到 3D/4D 并行的经验法则与 Megatron、DeepSeek、Llama 3 的真实配置。
- Stanford CS336 第八讲精读:并行(下)——把集合通信、数据/张量/流水线并行写成代码斯坦福 CS336(Language Modeling from Scratch, Spring 2025)第八讲完整讲义:上一讲讲概念,这一讲把概念落成代码。从 1980 年代的集合通信原语讲起(broadcast/scatter/gather/reduce/all-gather/reduce-scatter 与 all-reduce ≡ reduce-scatter + all-gather),再看 PCIe/以太网与 NVLink/NVSwitch 两代硬件(H100:18 条 NVLink 4.0、总带宽 900 GB/s)、NCCL 与 torch.distributed 的分工,然后逐行实现三个 bare-bones 训练脚本——数据并行(在 SGD 里插一行 all-reduce)、张量并行(沿宽度切、一路 all-gather)、流水线并行(按层切、micro-batch 与点对点通信),最后用 JAX/Levanter 的十行代码对照,并总结「重计算 / 存内存 / 存到别的 GPU 再通信」这条贯穿全课的主线。