在分布式大模型训练中,模型初始化策略对收敛速度的影响不容忽视。近期在优化一个70B参数模型时,我们发现不同初始化方法导致的收敛差异高达30%。
实验设置:使用PyTorch Lightning + DeepSpeed框架,在4xV100集群上进行训练。
测试对比:
- Xavier初始化:
torch.nn.init.xavier_uniform_(tensor) - Kaiming初始化:
torch.nn.init.kaiming_uniform_(tensor, a=math.sqrt(5)) - 正态分布初始化:
torch.nn.init.normal_(tensor, mean=0.0, std=0.02)
关键发现:
- 使用Kaiming初始化时,前100个step的loss下降速度明显更快,但第500step后出现震荡
- Xavier初始化在中期表现稳定,但在训练初期收敛缓慢
- 正态分布初始化效果最稳定,但初始收敛速度最慢
优化实践: 我们采用混合策略:前100个epoch使用Kaiming初始化,之后切换到Xavier。通过以下代码实现:
for name, param in model.named_parameters():
if 'embed' in name or 'layer_norm' in name:
torch.nn.init.normal_(param)
else:
torch.nn.init.kaiming_uniform_(param, a=math.sqrt(5))
可复现步骤:
- 准备相同架构模型(如LLaMA-7B)
- 分别应用三种初始化方法
- 使用相同超参数训练(batch_size=64, lr=1e-4)
- 记录每个epoch的loss变化曲线
该优化方法已在多个分布式训练场景中验证有效,建议在大模型训练初期优先尝试。

讨论