大模型SFT过程的不稳定?

内容分享2小时前发布 榆灿28
0 0 0

本期通过“乐队演奏乐曲”这一例子跟大家探讨SFT后大模型变傻了的问题,感兴趣的同学欢迎评论区交流哦~️在训练LMM时,我们会发现一个有趣的现象:同一份数据进行多次训练,在benchmark上的预测结果波动很大,精度变化为67%±2.1%,这种波动比其他魔改和trick还要大。就像一支乐队演奏同一首乐曲,结果每次都有些许不同,而且这种差异有时会超过我们改变乐曲的效果。️对此现象的思考如今,在大模型的时代,我们就像在指挥一个庞大的乐团,需精心编排每一首乐曲(模型),让听众(用户)沉醉。我们的指挥棒就是通过构造Instruction数据来唤醒模型的技能和对齐指令。在SFT的过程中,我们就像在比赛中不断调整乐队的演奏,以达到最佳效果。(1)第一,演奏阶段的波动类似于乐手对乐曲理解的差异,这可能影响整体效果。我们可以通过选择最稳定的乐手(如采用greedy方法)来减小这种波动,但即使是同一乐手五次演奏,结果也可能不同,由于乐手可能需要根据其他乐手的演奏调整自己。若想一致演奏,可能需要乐手单独演奏,也就是设置batch_size=1。(2)其次,训练阶段的波动包括乐手状态(Data Shuffle)、乐器状态(Model Dropout)和乐队整体状态(混合精度因素)。调整乐队的排练计划(设置seed)能控制这些因素,但即便如此,乐队演奏依然可能波动。因此,我们开始关注乐队演奏中的失误(模型的loss变化),明确是否是引入混合精度造成的问题。️实验结果在训练模型时,我们进行了四次不同设置的实验,具体见上图,实验表明,flash attention在梯度更新阶段的多线程原子性可能导致半精度计算结果不固定。为解决这一问题,可以思考使用单线程kernel进行训练,尽管这会带来训练速度的降低。️最佳方案使用fp16混合精度训练,并撤销flash attention,以提高结果的一致性和整体性能。需要补充项目经验的同学可后来台T我~大模型SFT过程的不稳定?
大模型SFT过程的不稳定?
大模型SFT过程的不稳定?
大模型SFT过程的不稳定?
大模型SFT过程的不稳定?

© 版权声明

相关文章

暂无评论

none
暂无评论...