微调的"最后一公里"

很多团队以为微调完了就大功告成了。但微调只是完成了50%的工作。将微调后的模型部署到生产环境,这"最后一公里"才是最难的。

部署微调模型不是"把模型文件复制到服务器上"那么简单。你需要处理LoRA合并、模型量化、推理框架适配、线上监控、灰度发布、AB测试——每一步都有坑。

第一步:LoRA合并——“合"还是"不合”?

LoRA微调后,你有一个"基座模型"和一个"LoRA适配器"。部署时有两个选择:

方案A:合并(Merge)。 将LoRA适配器的权重合并到基座模型中,生成一个完整的模型文件。

  • 优点:部署简单,所有推理框架都支持,推理速度无影响
  • 缺点:失去灵活性(无法切换LoRA),合并后模型文件变大

方案B:不合并(Load on the fly)。 在推理时动态加载LoRA适配器。

  • 优点:灵活(可以随时切换不同的LoRA),节省存储(一个基座+多个适配器)
  • 缺点:推理速度下降5-10%(额外的矩阵乘法),部分推理框架不支持

建议:生产环境用合并,实验环境用不合并。 生产环境需要稳定和性能,合并后部署最简单;实验环境需要灵活,不合并可以快速切换。

第二步:模型量化——“省显存"的代价

量化可以将模型从FP16压缩到INT8或INT4,显存占用降低50-75%。但量化有代价:

INT8量化:

  • 精度损失:1-2%(几乎无损)
  • 显存节省:50%
  • 推荐:所有生产环境都建议使用INT8量化

INT4量化:

  • 精度损失:3-8%(取决于任务)
  • 显存节省:75%
  • 推荐:简单任务(分类、情感分析)可以接受,复杂任务(推理、代码生成)不建议

量化的坑:不是所有模型都支持量化。 有些模型(如DeepSeek V4的MLA架构)对量化敏感,量化后性能损失较大。量化前必须先测试,不能假设"量化总是无损的”。

第三步:推理框架适配——vLLM的"隐藏"限制

2026年最流行的推理框架是vLLM。但vLLM对微调模型有一些"隐藏"限制:

限制1:vLLM对LoRA的支持有限。 vLLM支持加载LoRA适配器,但不支持所有的LoRA配置。如果你的LoRA配置比较特殊(比如给FFN层也加了LoRA),vLLM可能不支持。

限制2:vLLM的KV Cache可能与微调后的模型不兼容。 微调改变了模型的权重分布,可能导致KV Cache的命中率下降(PagedAttention的Block复用率降低)。

限制3:vLLM的Continuous Batching可能与微调后模型的输出分布不兼容。 微调后的模型可能产生更长的输出(或更短的输出),影响批处理效率。

建议:部署前,用vLLM的benchmark工具测试微调模型的吞吐量和延迟。 不要假设微调后的模型和原始模型在推理框架上表现一样。

第四步:灰度发布——“先让1%的用户试试”

永远不要一次性将微调模型上线给所有用户。 灰度发布是微调模型部署的"安全带"。

灰度发布流程:

  1. 1%流量 → 观察1小时 → 检查错误率、延迟、输出质量
  2. 10%流量 → 观察1天 → 检查用户反馈
  3. 50%流量 → 观察1周 → 全面检查
  4. 100%流量 → 全量上线

灰度发布的监控指标:

  • 错误率(500错误/超时)
  • 延迟(P50/P95/P99)
  • 输出质量(用模型评分自动打分)
  • 用户投诉率

第五步:AB测试——“新模型真的比旧模型好吗?”

灰度发布保证"新模型不出问题",但AB测试才能回答"新模型是否比旧模型更好"。

AB测试的设计:

  • 对照组:旧模型(或API)
  • 实验组:微调后的模型
  • 分流:随机分配,保证两组用户画像一致
  • 指标:用户满意度、任务完成率、人工评分

AB测试的陷阱:

  • 样本量不足:至少需要1000个样本才能得出统计显著结论
  • 指标选择错误:用户满意度比准确率更重要
  • 测试时间不够:至少测试1周,覆盖不同时间段(工作日vs周末)

第六步:线上监控——“模型在衰退吗?”

微调模型不是"一劳永逸"的。 模型性能会随时间衰退——因为数据分布会变化(concept drift),用户行为会变化。

线上监控的指标:

  • 输出质量评分(用GPT-5自动评分,每天抽样100条)
  • 用户投诉率(按周统计)
  • 任务完成率(用户是否完成了任务)
  • 推理延迟和错误率

当输出质量评分连续下降2周,或者用户投诉率上升50%,就需要考虑重新微调。

结语:部署是"起点",不是"终点"

微调结束的那一刻,不是项目的终点,而是部署的起点。 将模型部署到生产环境,并持续监控、持续优化——这才是完整的微调项目。

很多团队花了3个月做微调,但只花了3天做部署。正确的做法是反过来:花3个月做部署规划,花3天做微调。 因为微调只是"模型变好",而部署是"用户变好"——后者才是最终目标。


数据来源:作者团队微调模型部署经验(2026年),vLLM文档,HuggingFace TGI文档。