兄弟们,最近群里天天有人问微调模型翻车的事,今天来唠点干货。先说数据清洗——这步没做好,后面全是白干。我试过直接用原始中文语料训LLaMA,结果输出一堆乱码,后来发现是标点符号和空格没统一处理。建议用正则筛掉特殊字符,再按句子长度截断,别超过模型最大token的80%。
训练参数这块,最坑的就是学习率。见过有人直接套用默认值0.001,结果loss直接飞了。我习惯用cosine衰减+前5%步数预热,初始学习率调到1e-5左右,batch size根据显存凑整。记得开gradient checkpointing,不然12G显存训7B模型容易OOM。
部署时候更刺激,量化推理千万别贪快用int4,输出质量能跌30%。建议先跑BF16版本测试,再考虑int8。另外LoRA权重合并时,记得把adapter和base model的dtype对齐,不然推理直接崩。
最后问一嘴:你们微调时,遇到过最诡异的bug是啥?我先来,模型学到一半突然开始重复输出“忘记忘记忘记”,后来发现是数据里某条样本标签写错了 😅 |