alibaba / Pai-Megatron-Patch

The official repo of Pai-Megatron-Patch for LLM & VLM large scale training developed by Alibaba Cloud.
Apache License 2.0
723 stars 103 forks source link

关于SFT不同DP训练的loss对不上的问题 #382

Open yspMing opened 3 days ago

yspMing commented 3 days ago

使用deepseek 进行sft模式的训练,分别使用8卡和16卡进行训练,会出现第一个iter的loss对不上的情况,都是tp1,pp1的切分方式;

进一步分析发现第一个microbatch的loss能够对上,后面的就对不上了,第一个iterloss如图所示:

截屏2024-11-19 21 44 01

gbs设为32,mbs设为1,8卡的时候每张卡跑4个microbatch,16卡每张卡跑2个microbatch,表颜色的数据是能够对的上的loss,其他的对不上,sft的代码存在问题吗,还是本身就该是这样?

lostkevin commented 2 days ago

应该是megatron默认开启的data sharding的问题,它会将数据均分到各DP rank再在rank内shuffle,考虑[0, 1, 2, 3, 4, 5, 6, 7] 8个sample;DP2时,数据被切为rank0: [0,1,2,3] rank1:[4,5,6,7]; DP4时,数据被切为rank0: [0,1] rank1:[2,3] rank2:[4,5] rank3:[6,7].

可以观察到DP4的rank2与DP2的rank1开头的数据一致,这与图上的情况是类似的。