模型微调技术 思维导图定稿版总览微调基础与选型微调数据准备微调过程与参数配置微调评估与效果验证微调部署与工程化一、微调基础与选型什么时候需要微调选型决策先问自己RAG或Prompt能不能解决能用Prompt解决 → 别微调成本最低能用RAG解决 → 别微调知识更新灵活两者都搞不定 → 考虑微调必须微调的典型场景需要模型学会特定的输出格式或风格Prompt不稳定时举例客服必须用规定话术、合同必须用固定条款表述需要模型掌握RAG检索不到的内部隐性知识举例公司内部专有流程、老员工经验、特定业务判断逻辑需要模型遵循严格的行为规范安全性/合规性举例金融合规审核、医疗问诊边界控制需要降低线上推理成本小模型微调后效果接近大模型推理成本大幅下降不需要微调的场景知识频繁更新 → RAG更合适微调跟不上更新速度任务简单且Prompt可控 → Zero-Shot/Few-Shot够用数据量不足少于几百条→ 微调效果不稳定容易过拟合面试点微调是最后手段不是第一选择。能用Prompt/RAG解决就别微调全参数微调Full Fine-Tuning原理一句话更新模型所有参数让模型完全适配新任务优点效果上限最高理论上能达到最好的任务适配适合目标任务和预训练任务差异很大的情况缺点显存需求巨大7B模型全参微调需要约60-80GB显存单卡A100才80G训练慢更新全部参数每一步都重灾难性遗忘风险高容易丢失通用能力适用场景资源充足且精度要求极高如企业核心业务模型不计成本追求效果面试点外包岗几乎不会让你做全参微调了解它的定位和限制即可LoRALow-Rank Adaptation低秩适配原理一句话不修改原模型参数在旁路加两个小矩阵只训练这两个小矩阵通俗解释“原来要改一万个参数现在用两个小矩阵100100个参数的乘积来近似这个改动”优点可训练参数减少99%以上7B模型全参微调需训练70亿参数LoRA只需几百万显存大幅降低7B模型LoRA微调只需16-24GB显存单张消费级显卡可跑训练速度快参数量少反向传播快可插拔LoRA权重是独立文件可随时切换基础模型不变缺点效果略低于全参微调但差距在缩小对某些任务如需要大幅改变模型行为的任务适配能力有限核心参数面试必须能说出r秩低秩矩阵的维度一般设8/16/32r越大表达能力越强但参数越多alpha缩放因子一般设r的2倍控制LoRA对原模型的影响程度target_modules对哪些层加LoRA通常选Transformer的Q和V矩阵面试点LoRA是2024-2026微调的主流方案外包岗最可能实际用到的就是LoRAQLoRAQuantized LoRA原理一句话把基础模型先量化到4bit再在量化模型上加LoRA训练通俗解释“先把模型的精度从32位压缩到4位省出大量显存再在上面做LoRA微调”和LoRA的关键区别LoRA基础模型保持FP16/BF16精度QLoRA基础模型量化到4bitNF4格式显存再降低约4倍优点显存极低7B模型QLoRA微调只需6-10GB显存消费级显卡如RTX 3060就能跑效果接近LoRA4bit量化对微调效果影响很小让个人开发者也能微调大模型缺点训练比LoRA稍慢多了量化和反量化操作对某些模型架构兼容性不如LoRA面试点QLoRA是资源受限时的首选消费级显卡微调7B模型的标配方案三者对比速查表面试快速说出来全参微调显存60-80G7B、效果最好、成本最高、适合企业级不计成本场景LoRA显存16-24G7B、效果好、成本中等、适合主流微调场景QLoRA显存6-10G7B、效果接近LoRA、成本最低、适合个人/小团队其他PEFT方法了解即可P-Tuning/P-Tuning v2在输入层加可训练的虚拟Token不修改模型内部参数Adapter在Transformer层之间插入小型网络模块面试点LoRA是PEFT中最主流的方法其他了解名字和原理即可面试很少深入问面试话术微调选型决策第一步能用Prompt/RAG解决就不微调第二步必须微调时数据量小/资源有限上QLoRA正常资源上LoRA第三步只有效果要求极高且资源充足时才考虑全参微调“目前我最常用的是LoRA性价比最高7B模型单张24G显卡就能跑”二、微调数据准备数据来源与获取内部数据最有价值业务系统沉淀的用户问答记录、客服对话日志内部文档、规范、知识库中的高质量文本面试点内部数据最贴近业务微调效果最好但需要脱敏处理外部数据开源数据集HuggingFace/GitHub上的领域数据集公开的指令微调数据如Alpaca格式的数据集可参考其结构用大模型生成数据用GPT-4生成一批问答对人工筛选后用来训小模型人工构造领域专家编写典型问答对质量最高但成本也最高适用场景数据量需求不大但质量要求极高的场景面试点实际项目通常是三者混合内部数据做基础外部数据补量人工数据保质量数据格式与构造指令微调格式最常见Alpaca格式{“instruction”: “任务描述”, “input”: “用户输入”, “output”: “期望输出”}ShareGPT格式多轮对话{“conversations”: [{“from”: “human”, “value”: “…”}, {“from”: “gpt”, “value”: “…”}]}面试点格式选错会导致训练失败要根据微调框架的要求选择正确格式数据构造流程步骤一定义任务类型分类/生成/对话/抽取步骤二确定数据格式单轮选Alpaca多轮选ShareGPT步骤三编写System Prompt统一风格和角色设定举例客服微调时System Prompt写“你是XX银行客服语气专业且亲切”步骤四构造具体的instruction-input-output三元组步骤五检查格式一致性字段名、JSON结构、System Prompt是否统一面试点数据格式不一致是新手最容易犯的错误会导致训练出的模型行为不可控数据质量把控质量控制标准准确性期望输出是否符合事实、是否和业务规范一致一致性相同类型的输入输出的风格和格式是否统一完整性每条数据是否三个字段都齐全无空值无截断多样性是否覆盖了不同场景、不同难度、不同表述方式的输入数据清洗常见问题乱码和特殊字符 → 正则清理重复数据 → 去重完全重复和语义近似重复输出截断 → 检查长度是否异常短剔除或补全格式错误 → JSON解析校验抓出格式不对的条目指令和输出不匹配 → 人工抽查或用LLM判断是否跑题数据标注质量保障标注规范文档写清楚怎么标、边界case怎么处理多人交叉验证重要数据两人同时标注不一致的讨论对齐面试点标注质量比数据量重要100条高质量数据可能比1000条低质量数据效果好面试点微调效果的上限由数据质量决定模型和数据都是同样的道理——垃圾进垃圾出数据量与配比最少需要多少数据LoRA微调几百到几千条高质量数据就能看到明显效果全参微调通常需要万条以上数据质量越高所需数量越少面试点外包岗常问“数据不够怎么办”能答出“先拿几百条高质量数据做LoRA看效果再决定要不要加数据”数据配比策略通用数据领域数据混合通用数据占10-30%防止模型忘记通用能力灾难性遗忘各类任务数据均衡避免某一类任务数据过多导致模型偏向该任务面试点微调不只是加领域数据还要保留一定比例的通用数据防止遗忘数据不够时的应对策略数据增强同一条数据换几种表述方式生成变体用大模型辅助生成写几个示例让GPT-4批量生成类似数据人工筛选迁移学习先用相近领域的大量数据预微调再用目标领域少量数据精调面试点数据增强和LLM辅助生成是数据量不足时的实用手段面试话术数据准备实践第一格式统一全部数据同一格式System Prompt统一字段齐全第二质量把关准确性一致性完整性多样性四维检查第三数据配比领域数据为主但保留10-30%通用数据防止灾难性遗忘三、微调过程与参数配置LoRA核心参数配置r秩Rank含义低秩矩阵的维度决定了LoRA的表达能力推荐值8/16/32选型逻辑r8大部分场景够用参数最少训练最快r16效果和成本的最佳平衡点常用r32任务和原模型差异大时用参数多但表达能力强面试点r不是越大越好r8和r16效果差距很小r32以上收益递减alpha缩放因子含义控制LoRA权重对原模型输出的影响程度推荐值一般设为r的2倍r8时alpha16r16时alpha32通俗解释“alpha越大LoRA的改动越大胆alpha越小改动越保守”面试点alpha/r的比例比绝对值更重要比例越大LoRA影响越大target_modules目标模块含义对Transformer的哪些层加LoRA常用方案只加Q和V矩阵最常用效果好且参数少加Q、K、V、O全部注意力矩阵效果更好但参数增加加MLP层任务差异大时考虑参数增加较多面试点Q和V是首选大部分场景只加这两个就够dropout含义随机丢弃一部分神经元输出防止过拟合推荐值0.05-0.1数据量小时适当调高训练超参数配置学习率Learning Rate含义每次参数更新的步长LoRA推荐值1e-4到5e-4全参微调的10倍左右原因LoRA参数量少可以用更大学习率加速收敛学习率调度Cosine衰减常用训练过程中学习率逐渐降低到接近0Warmup前几步从小学习率逐步升到目标值避免初期震荡面试点学习率是影响微调效果最关键的参数太大不收敛太小训不动Epoch与步数含义Epoch完整过一遍训练数据1个Epoch包含多步LoRA推荐值3-5个Epoch数据量少时可以多跑几个Epoch5-10个数据量多时1-3个Epoch就够面试点Epoch不是越多越好跑太多会过拟合训练集loss继续降但验证集loss开始升就该停了Batch Size含义每次更新参数用多少条数据推荐值根据显存定能塞多少塞多少7B模型LoRA单卡24G一般batch_size4-8梯度累积显存放不下大batch时多步梯度累积一次更新模拟大batch效果面试点batch_size影响训练稳定性和收敛速度太小震荡大太大可能过拟合优化器选择AdamW最常用推荐值betas(0.9, 0.999)SGD较少用需要更精细调参训练过程监控必看指标Loss曲线训练集和验证集都要看正常情况两条线一起下降趋于平稳过拟合信号训练loss继续降验证loss开始升 → 立即停欠拟合信号两条线下降缓慢或还在快速下降 → 增加Epoch验证集指标根据任务类型生成任务看Perplexity/ROUGE/BLEU分类任务看准确率使用工具WandB/TensorBoard可视化训练曲线实时监控面试点训练不挂监控等于闭眼开车连过拟合了都不知道面试点Loss曲线的形状比数值更重要趋势能告诉你是该继续训还是该停过拟合识别与防范如何判断过拟合信号一训练loss持续下降验证loss不降反升信号二训练集效果很好测试集效果很差信号三模型输出开始背训练数据的原文防范措施增加dropout0.1-0.2减少Epoch增加数据量和多样性降低r减小LoRA表达能力面试点小数据集微调最容易过拟合防范措施要提前准备别等过拟合了再补救面试话术参数配置实践LoRAr16alpha32target_modules选Q和Vdropout0.05训练学习率2e-4Cosine衰减WarmupEpoch3-5batch_size按显存塞满监控挂WandB看loss曲线训练loss和验证loss背离立即停“这套配置在大部分场景效果不错具体任务再微调”四、微调评估与效果验证自动化评估指标生成类任务指标Perplexity困惑度含义模型对下一个Token的预测有多“困惑”越低越好适用场景评估模型对数据的整体拟合程度局限只能反映概率分布不能反映实际生成质量ROUGE含义生成文本和参考文本的重叠度n-gram匹配ROUGE-1单词级别重叠ROUGE-2双词级别重叠ROUGE-L最长公共子序列匹配适用场景摘要、翻译等有参考答案的生成任务BLEU含义生成文本和参考文本的n-gram精确匹配度适用场景翻译任务为主局限只看匹配不看语义两个意思相同但措辞不同的句子得分低分类/抽取类任务指标准确率Accuracy预测正确的比例F1分数精确率和召回率的调和平均精确率/召回率看漏判和误判的比例面试点自动指标快但不全面ROUGE/BLEU和人工评价经常不一致不能只看指标LLM-as-Judge评估原理用更强的模型如GPT-4当裁判给生成结果打分评估维度准确性回答是否正确完整性有没有遗漏关键信息风格一致性是否符合要求的语气和格式和参考答案的相似度1-5分打分Prompt示例“请从准确性、完整性、风格一致性三个维度对比以下两个回答给出评分和理由”优点比ROUGE/BLEU更贴近人工判断能评估语义层面局限GPT-4也有偏好和偏见成本高不适合大规模实时评估人工评估评估维度准确性回答和预期是否一致流畅度语言是否通顺自然风格符合度是否满足业务要求的语气和格式安全性有没有越界或危险内容评估方式单盲评估评估者不知道哪个是原模型、哪个是微调模型对比评估同一条输入新旧两个模型各生成一个答案人工选哪个更好绝对打分1-3分或1-5分制设定明确的评分标准面试点人工评估最准但最慢最贵一般只抽一部分case做人工评估和自动指标配合使用对比评估与灾难性遗忘检测对比评估流程步骤一准备通用评测集不是微调领域的是日常问答/推理/常识步骤二原模型跑一遍记录各指标步骤三微调模型跑一遍记录同样指标步骤四对比领域任务指标是否提升步骤五对比通用任务指标是否下降灾难性遗忘检测定义微调后模型在通用任务上的能力明显下降检测方法用一组通用评测集如MMLU子集、常识推理题、开放问答对比微调前后得分可接受范围通用能力下降不超过3-5%出现了怎么办增加通用数据比例、降低微调强度减少Epoch/降低r面试点只提升领域能力不检查通用能力是危险的灾难性遗忘是微调最常见的问题之一效果验证的工程实践离线评估准备评测集领域任务通用任务混合各占一定比例自动化跑指标ROUGE/F1/准确率等LLM-as-Judge打分抽100条用GPT-4评判小流量上线验证和Prompt的A/B测试同理5%流量走微调模型95%走原模型观测1-3天对比核心指标点踩率、采纳率、人工介入率面试点离线评估过不等于线上效果好必须经过线上A/B验证才能全量面试话术评估实践第一层自动指标用ROUGE/F1等快速跑一轮看有没有明显退步第二层LLM评判抽一部分用GPT-4打分抓出自动指标发现不了的语义问题第三层人工抽检线上A/B人工盲评对比线上小流量验证用户行为指标“尤其注意检查灾难性遗忘通用评测集跑一遍确保通用能力没有明显下降”五、微调部署与工程化LoRA权重合并为什么要合并方式一合并后部署把LoRA权重融入基础模型生成一个完整的全量模型文件好处可直接用标准推理框架加载无需额外适配缺点生成的新模型文件大小和原模型一样大占用存储方式二不合并分开加载部署时先加载基础模型再加载LoRA适配器好处一个基础模型可搭配多个LoRA节省存储灵活切换缺点需要推理框架支持LoRA加载vLLM/TGI已支持合并操作步骤能说出流程步骤一加载基础模型步骤二加载LoRA权重步骤三调用merge_and_unload()把LoRA权重融合进基础模型步骤四保存合并后的完整模型工具HuggingFace PEFT库、Unsloth专为加速LoRA设计的工具合并后模型大小会变化吗合并后的模型和基础模型大小完全一样参数总量没变只是参数值被LoRA修改了不是增加了参数面试点生产环境建议用分开加载的方式灵活且省存储量化部署为什么微调完还要量化微调后的模型通常是FP16/BF16显存需求大量化到INT4/INT8后推理显存大幅降低成本更低量化方式GPTQ离线量化需要校准数据效果好但慢AWQ离线量化比GPTQ更快效果接近bitsandbytes在线量化加载时自动转换方便但效果稍差QLoRA的特殊注意QLoRA训练时基础模型已是4bit但LoRA权重是FP16部署时合并→转成FP16全量→再量化到4bit或直接分开加载面试点QLoRA训练完不要直接保存4bit模型部署先合并再重新量化更好面试点微调量化是小模型替代大模型的完整链路多GPU训练配置什么时候需要多GPU单卡显存放不下7B全参微调单卡放不下必须多卡需要更大batch_size加速训练数据量大单卡训太慢并行策略能说出名字和一句话区别DeepSpeed ZeROZeRO-1优化器状态分片到各卡ZeRO-2优化器梯度分片ZeRO-3优化器梯度参数全分片最省显存但通信多面试点LoRA微调一般ZeRO-2就够全参微调才需要ZeRO-3FSDPFully Sharded Data ParallelPyTorch原生方案原理类似ZeRO-3和DeepSpeed选一个即可团队偏好用哪个就用哪个面试点多卡训练的核心是“把模型或数据切到多张卡上通过通信同步信息”外包岗知道怎么配DeepSpeed配置文件就够了微调成本估算面试加分项显存估算7B模型为例全参微调约60-80GB必须多卡A100LoRA约16-24GB单张A10/3090/4090可跑QLoRA约6-10GB单张RTX 3060/4060可跑时间估算几千条数据3-5个EpochLoRA单卡几小时到一天QLoRA单卡半天到一天全参多卡几小时到一天但卡更贵费用估算云GPU租赁A10080G约5-8元/小时A10/309024G约1.5-3元/小时一次典型LoRA微调总成本几十到几百元面试点能快速估算成本证明你有实际落地经验不只是纸上谈兵面试话术部署实践“部署上我一般用分开加载的方式基础模型不动只加载LoRA适配器”“需要推理加速就上量化微调后GPTQ量到INT4配合vLLM部署”“多卡训练用DeepSpeed ZeRO-2配LoRA够用配置文件和训练脚本一起管在Git里”“成本上一次LoRA微调几十到几百块钱比全参微调省钱一个数量级”