大模型微调入门——什么场景才该微调,LoRA 和全参怎么选

📅 2026/7/12 13:21:33 ✍️ 编辑团队 👁️ 阅读次数
大模型微调入门——什么场景才该微调,LoRA 和全参怎么选
Day10大模型微调入门——什么场景才该微调LoRA 和全参怎么选前言90% 说要微调的人其实都不该微调上周有个读者在后台留了条挺长的消息。檀木我们 RAG 上线三个月了效果一直上不去。老板说别折腾检索了让我去微调一个模型。可我连微调要多少张卡都不知道该从哪下手我盯着这条消息看了挺久。不是不会答。是这句话里藏着一个特别普遍的误区——效果不好 该微调了。我见过太多团队prompt 没调明白、检索没做干净一拍脑袋就上微调烧了几万块 GPU 费回头一看效果还不如改两行 prompt。所以这篇我不急着教你怎么调参。先帮你把两道选择题做对你的问题到底该不该用微调解决vs RAG真该微调了LoRA 和全参怎么选把这两题答对你已经跑赢 80% 匆忙上微调的人。PART 01微调 vs RAG——先把这道选择题做对很多人把微调和 RAG 当成二选一。这是第一个大坑。它俩根本不是解决同一个问题的。RAG 解决的是知识你的私有数据、公司文档、最新资讯——模型不知道的现查现答还能附来源。微调解决的是行为让模型用你想要的风格说话、按固定格式输出、学会某个领域的推理套路。一个管知道什么一个管怎么说话。记住这个决策框架知识要频繁更新、要可溯源→ 用RAG。文档改了重灌一遍就行几秒钟。输出风格/语气/格式固定、领域推理方式特殊→ 用微调。比如让它永远用你们公司的法务口吻写合同条款。两者可以叠加先微调一个懂行的底座再叠 RAG 注入实时知识。这才是企业里的成熟做法。两个最常见的翻车现场翻车一用微调塞知识。把公司文档全喂进模型微调指望它记住。结果知识一更新又得重训一遍烧钱且永远滞后。知识的活儿就该交给 RAG。翻车二用 RAG 改风格。检索做得再好也改不了模型说话的味儿。你想让它简短干练它偏给你长篇大论——这不是知识问题是行为问题RAG 管不着。所以回到开头那位读者RAG 效果上不去第一反应不该是换微调而是先问我的问题是知识问题还是行为问题。八成是检索或数据没弄干净Day09 讲过跟微调没关系。PART 02LoRA vs 全参微调——重武器里选哪把好假设你已经判断清楚这事儿真该微调。那接下来选哪把枪全参微调Full Fine-Tuning更新模型的所有参数。它的好处是效果上限高坏处也明显——显存爆炸。一个 7B 模型全参微调光优化器状态就要吃掉几十 G 显存没几张 A100 别想。而且容易灾难性遗忘学了新任务把老本事忘光了。LoRALow-Rank Adaptation低秩适配这才是 2026 年普通人的主战场。它的思路特别优雅——别动原模型只在旁边焊两个小矩阵。把权重更新写成W W₀ B·AW₀是原模型权重完全冻结一个参数都不动B和A是两个很小的矩阵比如 4096×8 和 8×4096只训练它俩为什么这么干管用因为研究发现模型权重的实际变化内在秩很低。你不需要动全部几十亿参数用两个小矩阵就能近似表达那个变化。效果立竿见影可训练参数从几十亿降到几百万不到总参数的 0.1%一张消费级显卡甚至 Mac就能跑效果逼近全参微调多数场景差距可忽略还能热切换一个底座挂多个 LoRA按需加载像换皮肤一样所以入门选谁答案很清楚LoRA。除非你是大厂、有卡、追求极限效果才考虑全参。PART 03最小可跑通的微调流程理论说完上手。最小闭环就三步备数据 → 训练 → 评估。第一步备数据指令微调格式微调不是随便喂文本得整理成指令—输出对。最常见的是这种 JSON{instruction: 把客服反馈分类, input: 收到的货破了, output: 物流破损投诉} {instruction: 把客服反馈分类, input: App 一直闪退, output: 功能Bug反馈}一个小提醒几百条高质量数据胜过几万条垃圾。先把数据洗干净Day09 的功夫这儿用上了别指望靠量堆出效果。第二步LoRA 训练peft transformersfrom transformers import AutoModelForCausalLM from peft import LoraConfig, get_peft_model from trl import SFTTrainer, SFTConfig # 1. 加载基座模型4bit 量化省显存 model AutoModelForCausalLM.from_pretrained( Qwen/Qwen2.5-7B-Instruct, load_in_4bitTrue, device_mapauto ) # 2. 挂 LoRA只训练注入的低秩矩阵原模型冻结 lora_config LoraConfig( r8, lora_alpha16, lora_dropout0.05, target_modules[q_proj, k_proj, v_proj, o_proj], task_typeCAUSAL_LM, ) model get_peft_model(model, lora_config) model.print_trainable_parameters() # trainable params: 6M || all params: 7.6B || trainable%: 0.08% # 3. 训练 trainer SFTTrainer( modelmodel, train_datasetds, argsSFTConfig( output_dir./lora-out, per_device_train_batch_size4, num_train_epochs3, learning_rate2e-4, bf16True, ), ) trainer.train() # 4. 合并导出推理时不用再挂 LoRA merged model.merge_and_unload() merged.save_pretrained(./qwen2.5-7b-my-lora)print_trainable_parameters()那一行会告诉你7.6B 参数里只训了 0.08%。这就是 LoRA 省钱的秘密。第三步评估别省这一步训练完先别急着上线。留一小撮没训过的数据让模型跑一遍看输出对不对。没有评估的微调等于盲飞。还有个省钱心法从小处验证。先用 7B 量化模型 几百条数据 LoRA 跑通整条链路确认方向对了再考虑加大投入。别一上来就全参 万级数据那是烧钱比赛。结尾RAG 给模型补课微调给模型塑形盘点一下这篇的核心微调 vs RAG 不是二选一RAG 管知识微调管行为先判断你的问题是哪一类入门选 LoRA冻结原模型、只训低秩矩阵一张卡就能跑效果逼近全参最小闭环备指令数据 → LoRA 训练 → 评估 → 合并导出我见过最可惜的是那些 RAG 都没玩明白、就冲去微调的团队。钱花了问题还在。RAG 给模型补课微调给模型塑形——补错地方越努力越跑偏。工具是工具先搞清楚你要解决什么问题比学怎么用工具更重要。互动时间你现在手头的 AI 项目卡在知识还是行为上是 RAG 检不准还是模型说话味儿不对评论区说说我帮你判断该不该上微调。下一篇 Day11 预告微调的数据到底怎么准备——几百条高质量数据怎么挑、怎么标注、怎么避免把模型教坏。关注小刘檀木不错过每一篇。— END —小刘檀木 · 帮普通人把 AI 学进简历