006-分布式训练技术:DeepSeek的超大规模模型训练实践
那个凌晨三点半的OOM异常
上个月团队里新来的小伙子跑过来问我:“哥,我把batch_size调到32就OOM了,这卡可是80G显存啊!”我看了眼他的训练脚本,单卡训练,数据加载方式还是最原始的DataLoader。这场景太熟悉了——三年前我们训千亿参数模型时,第一个坎就是显存墙。今天咱们就聊聊DeepSeek怎么跨过这道墙,把模型规模推到新高度。
数据并行的那些“坑”
最早我们试过朴素的DP(Data Parallelism),代码写起来简单,几行wrap搞定。但实际跑起来问题一堆:梯度同步的通信开销大得吓人,多卡之间负载不均衡,主卡显存先爆……后来换到DDP(Distributed Data Parallel),每个进程维护独立的模型副本,通信用Ring-AllReduce优化。
# 这是我们现在还在用的基础模板defsetup_ddp():