多年来,对大多数团队而言,微调一直是一项看得见却够不着的AI能力:需要GPU集群、机器学习工程师和数周时间。对于应用开发团队来说,这笔投入通常并不划算。
到了2026年,情况已不再如此。LoRA、QLoRA和托管微调服务大幅降低了工程门槛,具备基本工程能力的团队都能上手。你可以用一块消费级GPU真正完成一次LoRA微调,也可以通过托管服务完成,算力成本不到€100。集中投入两周,就有可能得到可用于生产的微调模型。
这改变了取舍标准。许多在2024年因成本太高、过于复杂而不适合微调的场景,到了2026年已经值得考虑。有些团队默认采用RAG的场景,其实也更适合微调。
本文将说明微调何时胜过其他方法、小团队可采用的实操流程,以及能顺利上线的微调项目与效果不佳的项目之间有何区别。
微调何时胜出
上一篇文章对此作过简要介绍,下面展开说明。
1. 格式和结构一致性
如果你要求输出始终严格遵循某种特定格式,微调比提示词更可靠。
例如:每次输出都必须恰好包含5个要点,每个要点都以动词开头,并保持特定语气。提示词能让模型做到95%,微调则能达到99%以上。
模型会通过微调把这种结构学成默认行为;无需在每条提示词中重复要求,它自然就会照做。
2. 风格和口吻一致性
有严格品牌语言规范的公司常会发现,单靠提示词难免出现偏差。经历数千次交互后,口吻会逐渐走样。
用1,000多个能够体现品牌口吻的示例进行微调,模型就能将其内化。口吻之所以一致,是因为它已成为模型行为的一部分,而不再是一条需要模型记住的提示指令。
3. 专业领域或DSL
如果你的业务领域包含少见术语、自定义DSL,或者基础模型不熟悉的特定模式:
例如,一家公司使用自研的内部数据查询语言,基础模型从未见过。给出示例虽有帮助,却仍不够,模型会不断犯语法错误。
用5,000个正确的DSL代码示例进行微调后,模型便能熟练编写这种DSL,就像它原本就会写Python一样。
4. 用较小模型达到相当质量
在特定任务上,经过微调的8B模型有时能达到通用70B模型的水平。这样做有以下好处:
- 推理成本降低10~50倍。
- 推理速度提升3~10倍。
- 可用配置不高的硬件自行托管。
- 在目标明确的窄任务上,行为更可预测。
如果你的窄任务调用量很大,这可以节省可观的成本。
5. 行为安全
通过微调让模型始终拒绝某些请求或加入特定防护,往往比仅依赖提示词护栏更稳健。
例如,面向客户的AI绝不能报出价格,因为价格会动态变化。提示词能起到一定作用,却可能被绕过;微调则能让拒绝行为更加可靠。
6. 大规模应用少样本模式
如果每条提示词都要带上10个示例,而且这些示例占用大量token,微调会更高效。示例中的模式已经融入模型,提示词便可大幅缩短。
这对高调用量场景尤其重要,因为提示词token的成本会不断累积。
微调何时不占优势
同样重要的是,要知道什么时候不该微调。
1. 不断变化的知识
微调模型反映的是某一时点的快照。要加入新信息,就必须重新微调。对于动态知识,例如时事、特定账户的数据或最新政策,RAG可以处理,微调则不适合。
如果你所谓的“需要微调”只是想让模型了解自家产品,那就判断错了。RAG才是正确工具。
2. 数据不足
有效微调需要足够多的训练数据,最低数量因任务而异:
- 面向窄任务的LoRA:500~1,000个示例。
- 面向中等复杂度任务的LoRA:1,000~5,000个示例。
- 更通用的行为:5,000个以上。
示例少于500个时,通常很难做出有意义的微调。少样本提示或RAG往往效果更好。
3. 基础模型进步得比你维护得更快
前沿模型发展很快。一年前的微调模型,常常会被今天未经微调的前沿模型超越。要让微调模型不断追随持续变化的基准,本身就是一场永无止境的追赶。
没有明确的维护计划,微调就会变成技术债。
4. 还没有认真尝试提示词或RAG
一种出人意料却很常见的情况是:团队还没认真尝试提示词或RAG,就直接开始微调。微调模型上线了,质量也还可以,但其实只要迭代一周提示词,就能以1%的成本取得同样效果。
在开始微调之前,先认真尝试提示词和RAG。
5. 没有评估体系
没有评估就做微调,无异于赌博。你无法判断微调究竟带来了改善、造成了损害,还是毫无作用。许多所谓“成功”的微调只是心理安慰,甚至出现了质量倒退。
先建立评估体系,再做微调。
2026年的微调生态
下面快速梳理目前可用的方案。
托管服务
过去最省事的方法,是把数据上传给闭源服务商,再得到一个微调后的端点。如今这条路正在迅速变窄(状态核实于2026-07-07):
- OpenAI微调服务正在逐步收缩。 平台已不再对新用户开放;现有客户仍可在有限时间内运行微调作业,已完成微调的模型则可继续提供服务,直至其基础模型退役。当前模型的强化微调仅限受邀用户。不要再围绕这项服务规划新产品。
- Anthropic。 不提供自助式微调;过去只针对部分企业场景,通过合作伙伴准入的有限渠道提供服务(经由AWS Bedrock微调Claude 3 Haiku)。除非你的云服务客户经理另有明确答复,否则应视为不可用。
- Google Vertex AI tuning。 仍为Gemini系列提供微调服务。
- Together AI、Fireworks。 可在其基础设施上微调开放权重模型,正日益成为切实可行的托管方案。
趋势很明确:闭源模型微调正在收缩,开放权重模型微调才是值得长期投入的方向。因此,下文的实操示例采用开放权重方案。
成本:一次中等规模的微调(5K~50K个示例)通常需要€10~200,此外,每次推理还要在基础模型价格之上支付额外费用。
适用场景:大多数团队。使用便利带来的价值超过了小幅溢价。
自托管微调
GPU、代码和基础设施均由你自行提供。
- 开源模型: Llama 4、Qwen 3、Mistral、DeepSeek、Phi、Gemma。这些模型采用的许可证都足够宽松,允许进行微调。
- 工具: Hugging Face TRL、Axolotl、Unsloth、LLaMA-Factory,都已经相当成熟。
- 算力: 中等规模的模型可在单块H100上完成微调。也可以从RunPod、Lambda、Vast.ai或Modal租用GPU,价格为每小时$1~3。
成本:典型LoRA微调的算力成本为€50~500,另加工程人力成本。
适用场景:需要完全掌控模型选择、自定义数据处理或本地部署时,或者需要进行多次微调时——托管服务按次收取的成本会不断累积。
轻量级方案
对于规模很小的微调:
- 在消费级GPU上使用Unsloth。 一个下午即可在RTX 4090上微调小型模型(7B)。
- 在Apple Silicon上使用MLX。 可在Mac Studio上微调小型模型。
- 在Google Colab中使用LoRA。 可使用免费版,或每月€10~50的Colab Pro。
这些方案适合实验、小型模型和微调概念验证。
实操流程
小团队要完成可用于生产的微调,可以遵循以下流程。
第1步:验证需求(1~2天)
开始处理数据之前,先确认:
- 是否已经认真尝试了一周或更久的提示词优化?
- 如果涉及知识,是否已经尝试过RAG?
- 是否有评估结果证明当前方法无法满足需求?
- 能否明确说出微调具体应在哪些方面做得更好?
只要其中任何一个问题无法回答“是”,就先不要微调。
第2步:建立评估体系(1周)
没有评估就做微调,无异于赌博。
- 构建包含100~500个示例的评估集,覆盖目标行为。
- 定义指标:怎样才算成功?可以是格式符合率、口吻匹配度、准确率等。
- 建立基线:在基础模型上运行评估,记录当前分数。
只有这样,才能判断微调是否带来了改善。
第3步:准备数据(1~3周)
大部分工作都在这一步。训练数据的质量决定了微调模型的质量。
数据来源:
- 团队已有的高质量输出。
- 经过筛选的历史客户交互。
- 生成的示例(使用能力强的模型并精心设计提示词)。
- 客户专属数据(适用时使用;务必遵守权限要求并保护个人身份信息)。
格式:
聊天模型微调通常采用以下格式:
{
"messages": [
{"role": "system", "content": "..."},
{"role": "user", "content": "..."},
{"role": "assistant", "content": "..."}
]
}
JSONL文件每行存放一个示例。
规模:
- LoRA窄任务:500~2,000个示例。
- LoRA中等任务:2,000~10,000个示例。
- 通用行为:10,000个以上。
在一定范围内,数据通常越多越好。超过约50K个示例后,边际收益会逐渐下降。
质量优先于数量。
500个高质量且风格一致的示例,胜过5,000个质量平平的示例。与其塞进大量普通示例,不如花更多时间精心筛选少量优质示例。
多样性。
数据集应覆盖实际会遇到的全部输入类型。如果只用简单案例进行微调,模型遇到难题就会失败;如果只用边界案例,模型又会矫枉过正。
安全和拒绝数据。
应加入恰当拒绝请求的示例。否则,微调模型往往会变得更倾向于服从请求,仿佛什么都愿意做,从而导致安全性倒退。
训练集和评估集的划分。
留出5%~10%的数据用于评估。这些数据绝不能用于训练,只能用于衡量质量。
第4步:运行微调(1天~1周)
对于托管服务:
# OpenAI示例。先上传文件;API的training_file / validation_file
# 参数需要传入文件ID,而不是本地路径。
train = client.files.create(file=open("training.jsonl", "rb"), purpose="fine-tune")
val = client.files.create(file=open("validation.jsonl", "rb"), purpose="fine-tune")
client.fine_tuning.jobs.create(
training_file=train.id,
validation_file=val.id,
model="gpt-4o-mini",
hyperparameters={
"n_epochs": 3,
"batch_size": 8,
"learning_rate_multiplier": 1.0,
},
)
等待作业完成。所需时间从数小时到数天不等,具体取决于数据集规模和服务负载。
对于自托管方案(使用Axolotl):
base_model: Qwen/Qwen3-8B
load_in_4bit: true
adapter: lora
lora_r: 16
lora_alpha: 32
lora_dropout: 0.05
lora_target_modules:
- q_proj
- v_proj
- k_proj
- o_proj
datasets:
- path: ./data/train.jsonl
type: chat_template
num_epochs: 3
micro_batch_size: 2
gradient_accumulation_steps: 4
learning_rate: 0.0002
warmup_steps: 100
output_dir: ./output
运行:accelerate launch -m axolotl.cli.train config.yaml
在单块GPU上微调数小时。
关键超参数:
- 轮数: 通常为1~5轮。轮数太多可能过拟合,应关注验证损失。
- 学习率: 根据方法不同,一般在1e-5~5e-4之间。LoRA能承受比全量微调更高的学习率。
- LoRA秩(r): 8~64。秩越高,容量越大,过拟合风险也越高。
- 批大小: 在显存允许的范围内尽量增大。
第一次微调时,先采用知名方案中的默认值。只有具备评估结果作为依据时,才去优化超参数。
第5步:评估(3~5天)
在微调模型上运行整套评估。
- 分数是否高于基础模型?
- 提高了多少?
- 是否有其他方面倒退,例如通用能力、安全性或边界案例?
常见情况:
- 目标任务明显改善,其他方面轻微倒退: 对窄任务而言可以接受。
- 目标任务明显改善,其他方面严重倒退: 微调过度。减少训练轮数或降低LoRA秩。
- 改善有限: 可能是数据不足或质量不高。应迭代数据,而不是调整超参数。
- 毫无改善: 一定有环节出了问题。检查数据格式、训练日志和评估方法。
第6步:生产测试(1~2周)
全面部署前,先进行A/B测试:
- 让5%~10%的生产流量使用微调模型。
- 其余90%~95%使用基础模型。
- 对比质量分数、用户反馈和下游指标。
收集1~2周数据后,再决定是全面发布、继续迭代,还是回滚。
第7步:部署(1~2天)
对于托管服务,只需将调用指向微调模型ID,非常简单。
对于自托管方案,需要搭建推理服务器(目前通常采用vLLM)、加载LoRA适配器并接入流量。
第8步:监控(持续进行)
微调模型上线后,需要监控:
- 质量指标,包括在线评估和用户反馈。
- 随时间变化的漂移。
- 基础模型的进步是否已缩小差距(定期与最新基础模型重新比较)。
第9步:维护(每3~6个月)
微调不是“一次上线,从此不管”。
- 基础模型更新后,定期基于新版本重新微调。
- 数据发生漂移后,更新训练数据以反映当前模式。
- 评估体系扩展后,随着新测试案例出现重新验证。
常见做法是每季度重新微调一次:更新数据、运行微调和评估,效果更好时再部署。
完整示例
下面是一个模拟场景——我们特意说明这一点。你可以使用本文前面的Axolotl配置自行运行这套方案:通过微调匹配客服口吻。
问题: 一家SaaS公司在客服沟通中形成了鲜明、友好、直白易懂的语言风格。提示词只能不稳定地模仿这种风格。团队希望所有AI辅助沟通都能可靠地保持这一口吻。
数据: 约3,500个历史客服工单,其中的回复均被资深客服人员评为高质量。所有工单都已清除个人身份信息,并统一为同一种格式。大部分工作量都在数据处理上。
方法: 在开放权重的8B模型上使用LoRA(即上文的Axolotl配置,基础模型属于 Qwen/Qwen3-8B 这一规格),rank=16,训练3个epoch,并采用默认学习率。在租用的单块24~80 GB GPU上运行数小时即可完成,算力成本为几十美元。微调模型通过vLLM或开放权重模型托管服务提供推理。
如何判断效果(必须在微调前确定): 留出一部分工单,请同一位资深评审者在不知道模型来源的情况下,分别为基础模型和微调模型的回复草稿评估口吻匹配度,并预先设定达标标准。如果这套方案成功,盲评得分应有清晰可见的提升;如果评审者无法分辨两者,说明数据的风格特征不够鲜明,此时进一步筛选数据比增加训练轮数更有效。
维护: 随着新的高质量工单不断积累,每季度重新微调一次。流程建成后,每个周期只需一天工作。
这里特意不列出精确的前后对比百分比:那些数字只属于我们的模拟场景,并不适用于你的场景,而且口吻匹配分数无法跨数据集直接比较。等我们发布自己的实测结果时,会同时附上评估集和评审方案。
这才是一次成功的生产级微调:没有魔法,只有严谨的数据工作、适度的算力,以及一套在微调前就已确定的评估方法。
常见失败模式
以下几种情况很常见:
失败1:小数据集过拟合。 只有500个示例,却训练10个epoch。模型记住了训练集,面对真实输入却表现不佳。解决办法:增加数据或减少训练轮数。
失败2:灾难性遗忘。 在窄任务上进行高强度微调会削弱通用能力。模型更擅长你的目标任务,却更不擅长其他任务。解决办法:降低学习率、减少训练轮数,或者加入多样化的非目标任务数据。
失败3:数据格式不匹配。 训练数据的格式与模型在生产环境中的实际使用格式不同,导致微调模型学到错误的数据分布。解决办法:确保训练格式与推理格式完全一致。
失败4:评估覆盖不足。 评估集很简单,生产环境中的问题却很难。微调模型在评估中得分很高,面对真实用户却失败。解决办法:在评估集中纳入困难案例。
失败5:毫无章法地调整超参数。 没有明确方法就反复调整超参数,结果时好时坏,也无法积累有效结论。解决办法:每次只改一个变量,然后评估并总结规律。
失败6:疏于维护。 微调模型上线后,团队转向其他工作,模型逐渐过时。六个月后,基础模型的进步已经让它失去价值。解决办法:安排定期重新微调。
失败7:安全投入不足。 微调往往会削弱模型默认的拒绝行为。如果训练数据中没有安全示例,微调模型可能会答应基础模型原本会拒绝的请求。解决办法:在训练数据中加入拒绝示例。
失败8:针对错误指标进行优化。 微调促使模型优化某个特定指标,但真正的用户价值体现在其他方面。解决办法:选择与用户价值一致的指标,而不是只选择容易测量的替代指标。
行之有效的具体方案
下面给出几套带有明确取舍的方案。
方案1:格式严格的结构化输出
目标: 按特定schema可靠地输出JSON。
数据: 2,000个“输入与有效JSON输出”示例。
方案: 在小型模型(8B)上使用LoRA,rank=8,训练3个epoch;推理时结合约束生成。
结果: schema符合率超过99%,速度非常快。
方案2:匹配品牌口吻
目标: 面向客户的内容始终保持统一的品牌口吻。
数据: 3,000多个“提示上下文与符合品牌口吻的输出”示例,由能够评判口吻匹配度的人员进行筛选。
方案: 在中型模型(8B~70B)上使用LoRA,rank=16,训练2~3个epoch;采用较低的学习率(1e-4)以保持稳定。
结果: 口吻一致性达到单靠提示词无法实现的水平。
方案3:专用DSL或专业领域
目标: 用自定义DSL生成代码。
数据: 5,000~20,000个“描述与有效代码”示例。
方案: 在代码专用模型(Code Llama、DeepSeek Coder)上使用LoRA,rank=32,训练3~5个epoch。对于代码,使用较高的学习率(2e-4)通常没有问题。
结果: 能够熟练生成DSL代码。
方案4:用较小模型达到相当质量
目标: 用经过微调的小模型替代大模型,以降低成本和延迟。
数据: 大模型根据真实输入生成的10K~50K个示例,即合成数据。
方案: 在小型模型(8B)上使用LoRA,rank=16,训练2~3个epoch;推理时使用vLLM提高吞吐量。
结果: 成本降低5~10倍,在目标明确的窄任务上达到相当质量。
方案5:安全和拒绝微调
目标: 稳健地拒绝特定类别的不当请求。
数据: 1,000~3,000个“不当请求与恰当拒绝”示例,另加1,000多个正常交互示例,以免模型过度拒绝。
方案: 使用LoRA,rank=8,训练2个epoch,并采用较低的学习率(5e-5)来实现细微的行为调整。
结果: 可靠拒绝目标类别的请求,同时在合理请求上保持有用。
战略问题
除了具体方法,微调也是一项战略选择:
- 我们要长期投资这项能力,还是所有任务都使用前沿模型?
- 我们是否愿意长期持续维护微调模型?
- 质量提升是否值得承担持续增加的复杂度?
对大多数团队而言,答案是:只为调用量大或战略价值高的特定场景选择性微调,其他任务则使用前沿模型。维护大量微调模型的运营成本很高。
最能从微调中获益的团队,懂得有所取舍。他们只维护一两个微调模型,维护到位,而且投资回报明确,而不是拥有一批无人认真维护的微调模型。
要点总结
2026年的微调已经比不久前容易得多。借助LoRA、托管服务和低价算力,小团队可以在2~4周内,以不到€500的算力成本上线可用于生产的微调模型。
尽管如此,对于大多数“AI不够好”的问题,微调仍不是正确答案。先充分优化提示词,尝试RAG,并建立评估体系。只有完成这些工作之后,而且能明确说清微调要弥补什么差距时,才应考虑微调。
如果问题确实适合微调,例如需要严格的格式、统一的口吻、专业领域能力,或需要降低高调用量任务的成本,微调就能带来切实而持久的收益。前提是严谨对待数据、评估和维护。
对于合适的问题,微调决定了AI是“大多数时候能用”,还是“用起来就是可靠”。这件事值得认真做好。



