OpenBMB / MiniCPM

MiniCPM3-4B: An edge-side LLM that surpasses GPT-3.5-Turbo.
Apache License 2.0
6.88k stars 436 forks source link

[Feature Request]: 未来会提供退火阶段开始前的继续预训练范例代码吗? #63

Closed jyweky closed 7 months ago

jyweky commented 7 months ago

Feature request / 功能建议

请问未来会提供退火阶段开始前的继续预训练的范例代码吗? 其实我最近在尝试复现你们文章提及的WSD退火,我实现方式是 HF 的 accelerate + pytorch,按照你们文章自己实现了WSD调度器,从头训练一个0.27b模型,模型参数初始化时直接用你们提供的两个脚本 configuration_minicpm.py 和 modeling_minicpm.py,模型 config 里的新超参 scale_emb、dim_model_base、scale_depth 也是根据你们文章的比例来缩放,只有12B token的数据量,batch size 1024。

结果是 Loss 从热身阶段到热身后的恒定lr 100步都在稳定下降,可是100步之后在缓慢上升降不下来。应该是我实现方式不对(特别是模型初始化部分)属于技术太菜乱搞一通😂。很想看看官方实现的全量训练是什么样的🙏。

ShengdingHu commented 7 months ago

我们尝试写一份用开源框架的退火代码,但是您可能需要等一段时间。您的这个问题我推测有可能是batchsize太小了,你可以估算一下,batchsize小约等于lr大,相当于你反而加大了lr,因此loss不降。另外,mup方案里的 二维张量的学习率是其他部分的1/9 。我建议您在退火阶段可以使用梯度累积来达到4M的bs,然后不用mup方案训练的话需要将lr开到 0.001 开始退火。

jyweky commented 7 months ago

原来如此,非常感谢您的解惑。