兄弟们,微调这活儿看着简单,实操起来全是细节。先说数据清洗,别相信原始数据集直接喂进去就能涨点。我试过用中文对话数据微调Llama2,结果生成了一堆“嗯嗯啊啊”的废话——后来发现是语料里夹杂了大量噪声。建议至少三步走:去重(用MinHash或simhash)、过滤短文本(长度<50 token的直接扔)、检查标签一致性(特别是多轮对话里的角色混淆)。
再说学习率,很多人直接抄LoRA的默认1e-4,结果模型直接跑飞。我踩过的经验是:7B模型用1e-4还好,13B以上降到3e-5起步。另一个坑是batch size,显存不够时别堆梯度累积,试试用DeepSpeed ZeRO-3或者QLoRA的4bit量化,实测能省40%显存。
最后补一刀:微调后一定要做基准测试。我见过有人用自定义数据训完,MMLU掉点8%还不知道咋回事。建议跑个OpenCompass或者lm-evaluation-harness,对比基座模型指标。
抛个问题:你们在微调时,有没有遇到过loss下降但生成质量反而更差的情况?来评论区聊聊解法。 |