
1. LLM微调的核心概念与技术背景大型语言模型LLM的微调finetuning是指基于预训练的基础模型通过特定领域的数据进行二次训练的过程。与直接使用基础模型相比微调后的模型在特定任务上的表现通常会有显著提升。这个过程本质上是在不改变模型架构的前提下调整模型参数使其更适应目标领域。基础LLM如GPT、LLaMA等通常在海量通用语料上训练掌握了通用的语言理解和生成能力。但当面对医疗报告生成、法律文书分析等专业场景时原始模型的表现往往不尽如人意。这时就需要通过微调来校准模型的专业能力。2. 微调前的关键准备工作2.1 数据准备与清洗数据质量直接决定微调效果。建议按以下步骤处理数据数据收集确保覆盖目标场景的各种情况。例如做客服机器人时需包含咨询、投诉、售后等各类对话数据清洗去除乱码、敏感信息、无关内容数据标注对需要特定输出的任务如分类需进行准确标注数据分割按8:1:1划分训练集、验证集和测试集注意数据量不是越大越好关键是相关性和质量。实践中发现1万条高质量数据的效果常优于10万条低质数据。2.2 计算资源评估微调对硬件要求较高需提前评估7B参数模型至少需要1张A10040GB13B参数模型需要2-4张A10070B参数模型需要8张以上A100如果资源有限可以考虑使用参数高效微调方法如LoRA降低batch size使用梯度累积3. 微调过程中的关键技术选择3.1 微调方法选型常见微调方法对比方法参数量训练速度显存占用适用场景全参数微调100%慢高数据量大、资源充足LoRA1-5%快低资源有限、快速迭代Adapter3-10%中等中等多任务学习Prefix-tuning0.1-1%最快最低少量数据、快速实验对于大多数应用场景推荐从LoRA开始尝试。我们在电商客服场景的测试表明LoRA能达到全参数微调95%的效果但训练时间缩短60%。3.2 关键超参数设置这些参数需要特别注意学习率通常设为1e-5到5e-5之间batch size根据显存调整一般16-64训练轮次3-10个epoch避免过拟合序列长度根据实际文本长度设置过长会浪费计算实测发现学习率对结果影响最大。建议先用小规模数据做lr range test找到最佳学习率区间。4. 微调过程中的常见问题与解决方案4.1 损失值震荡不收敛可能原因及解决方法学习率过高逐步降低学习率观察变化数据噪声大检查并清洗异常数据batch size太小适当增大但注意显存限制梯度爆炸添加梯度裁剪norm1.04.2 模型过拟合应对策略增加正则化dropout率设为0.1-0.3早停机制监控验证集loss连续3次不降则停止数据增强对文本数据进行同义词替换等操作模型蒸馏用大模型生成更多训练数据4.3 显存不足OOM优化方案启用梯度检查点gradient checkpointing使用混合精度训练fp16/bf16尝试更小的模型尺寸使用参数高效微调方法5. 微调后的模型评估与部署5.1 评估指标选择根据任务类型选择合适的评估方式生成任务BLEU、ROUGE、人工评估分类任务准确率、F1值问答任务EM精确匹配、F1特别注意不要只看测试集分数要进行真实场景测试。我们曾遇到测试集准确率95%的模型实际使用中只有70%效果。5.2 部署优化技巧模型量化将FP32转为INT8体积缩小4倍图优化使用TensorRT或ONNX Runtime加速缓存机制对常见请求结果进行缓存动态批处理提高GPU利用率6. 实战经验与避坑指南数据质量检查训练前先人工检查100条样本确保无标注错误小规模试验先用5%数据快速验证方案可行性版本控制对数据、代码、模型都做好版本管理监控迭代上线后持续收集bad case用于下一轮微调特别提醒不要盲目追求最新技术。在实际业务中简单稳定的方案往往比复杂的新技术更可靠。我们曾花费两周尝试最新微调方法最终发现效果不如基础LoRA。最后分享一个实用技巧微调时保存多个中间checkpoint如每500步后期可以从中选择最优模型避免因早停错过最佳参数。