MindSpore做大模型分布式训练多卡分布出现异常
·
问题描述
在用 MindSpore 做大模型分布式训练时遇到棘手问题,求有实战经验的朋友指点一下。
目前已经完成模型组网、数据集加载、优化器配置,单机单卡训练可以正常跑通,loss 下降也很平稳,但切换到多卡分布式训练后就出现异常:多卡训练 loss 震荡剧烈,收敛速度远不如单机,不同卡之间输出 logits 存在明显差异,偶尔还会出现训练中途精度突然跳水,也没有显存溢出、报错退出的情况。
已经排查了分布式初始化、批次切分、梯度聚合、混合精度配置,也核对了学习率、权重衰减等超参,确认数据集分片无重复、无漏数据,但问题始终没能解决
问题分析
多卡分布式训练 loss 震荡、精度跳水、卡间 logits 不一致,核心是参数初始化不一致、梯度同步失效、混合精度 / 并行策略不匹配、BatchNorm 未做同步、数据集 sharding 随机性不一致导致,优先排查:所有进程固定相同随机种子、启用 AllReduce 梯度同步、同步 BN、关闭各卡独立 shuffle、确认数据并行下参数广播正常、混合精度 loss scale 全局统一,按「种子→初始化→同步 BN→梯度聚合→数据分片→混合精度」顺序排查即可解决。
更多推荐


所有评论(0)