兄弟们,最近在搞一个LLaMA的LoRA微调项目,折腾了大半个月,总算把loss压到0.8以下。今天来聊聊我踩过的几个硬核坑,全是实操经验,不整虚的。
**1. 数据预处理才是爹**
别一上来就调超参。我第一版直接用raw text训,loss死活不降。后来发现是标签噪声太大。建议:先做数据清洗,去掉重复样本,用正则过滤特殊符号,再用tokenizer跑一遍,确保输入长度不超过max_length的90%。这步能省一半调试时间。
**2. 学习率调度别乱用**
很多教程吹Cosine scheduler,但小规模微调(千条数据以内),用线性warmup+固定衰减反而更稳。我试过cosine,loss在epoch 3直接炸了,改成线性后收敛平滑多了。推荐初始lr=2e-4到5e-4,batch size根据显存调,尽量大但不爆显存。
**3. 验证集别偷懒**
每100步跑一次验证,别只看训练loss。我有次训练loss降到0.3,验证集却飙到1.5,明显过拟合。加了dropout和weight decay后,差距缩到0.2以内。建议early stopping patience设5轮,防止白费电费。
最后抛个问题:你们微调时,遇到过最诡异的bug是什么?是梯度爆炸还是数据泄露?评论区聊聊,我请喝咖啡☕。 |