兄弟们,最近在社区里看到一堆人问“怎么微调才能不掉点?”,我来泼点冷水。微调这活儿,不是跑个脚本就完事的,坑多得能让你怀疑人生。先说几个关键点:
1️⃣ 数据质量比数量重要。别迷信几万条数据,脏数据一堆,模型直接学歪。我试过用1k条精标数据微调Llama 3,效果吊打10k的垃圾数据。清洗时注意标签一致性,尤其是分类任务,样本不平衡先做重采样。
2️⃣ 学习率别头铁。默认的1e-5经常崩,建议从1e-4开始,用cosine衰减。我踩过最惨的坑是AdamW weight decay设太大,损失直接飞升。实测AdamW + 线性warmup最稳。
3️⃣ 冻结层要有策略。全量微调容易灾难性遗忘,特别是基座模型预训练数据量大的时候。建议先冻住底层,只调顶层或LoRA层。我试过8B模型用LoRA rank=16,单卡A100跑完,效果和全量微调打平。
4️⃣ 评估别只看loss。线下loss降了,线上推理可能崩。务必搞个holdout集跑BLEU或ROUGE,尤其是生成任务。我见过loss从2.1降到1.8,但输出全是“的”字重复。
5️⃣ 部署前做量化。微调后的模型直接部署,显存吃满。建议用GPTQ或AWQ量化到4-bit,推理速度翻倍,质量损失可控。我测过Llama 3 8B量化后,PPL只涨0.3,但吞吐从20 tok/s飙升到80。
最后问大家:你们微调时遇到最离谱的bug是什么?我翻车过学习率忘调,直接训出“复读机”模型。评论区见! |