← 返回资讯

微调自托管 vs 用 API:怎么在两条路中做正确选择

2026-07-06

“要不要微调一个自己的模型”是开发者在 API 调用验证业务后常问的问题。通常的触发场景是这样的:Prompt 调了两三周,输出格式还是时不时跑偏,客服同事在群里反馈”这条回答又答非所问了”,于是有人在评审会上抛出一句”要不要上微调”。这时候先别急着立项——直接用 API + 优化 Prompt 往往能解决 80% 的场景,微调的成本和复杂度远超预期,而且一旦决定微调,就意味着接下来几周你要认真面对数据标注、显卡排队、loss 曲线不收敛这些琐碎又费神的事。这篇文章把两条路的真实成本、常见踩坑和判断依据摊开讲清楚,帮你少走弯路。

两条路的本质区别

维度直接调用 API微调 + 自托管
启动成本几乎为零(一个 API Key)高(数据准备 + 训练 + 部署)
迭代速度快(改 Prompt 即可)慢(重新训练 + 测试 + 部署)
效果上限受限于基础模型的能力边界可针对特定任务超越基础模型
数据隐私数据发往第三方数据留在本地
运维负担零(无服务器)高(GPU 节点 + 框架 + 监控)
模型迭代自动(API 升级新模型版本)手动(需重新训练或更换基础模型)

什么场景适合继续用 API?

满足以下条件,优先继续用 API:

  • 业务逻辑可以通过 Prompt 表达清楚:System Prompt + Few-shot 示例已经能达到目标效果
  • 需要频繁迭代:每周甚至每天都在调整任务定义,微调跟不上迭代节奏
  • 调用量不稳定或还在验证阶段:流量波动大,自建闲置成本高
  • 对最新模型能力有依赖:新版本 API 自动获益,自托管需要主动升级

关键原则:先做 Prompt Engineering,再考虑 RAG,最后才考虑微调。很多”微调需求”本质上是 Prompt 没写好。

什么场景值得微调?

微调真正发挥价值的条件比较苛刻:

场景说明
特定格式/风格的稳定输出如特定 JSON Schema、行业术语风格,Prompt 难以稳定控制
领域专业知识注入大量行业特定知识,RAG 检索覆盖不了
推理效率优化用小模型微调到大模型在特定任务上的效果,降低推理成本
合规数据隔离数据不能发往外部,必须本地闭环
高频稳定任务同类任务日均百万次以上,自建边际成本显著低于 API

微调的隐性成本清单

选择微调前,确保你已经把这些成本算进去:

数据成本

  • 高质量训练数据准备(标注、清洗、格式化):通常 数周人力
  • 数据量要求:SFT(有监督微调)通常需要 500–5000 条高质量样本起步

训练成本

  • 7B 模型 LoRA 微调:通常需要 1–2 张 A100,跑几小时到几十小时
  • 全量微调(Full Fine-tuning):显存需求是推理的 3–5 倍,成本更高

部署与运维成本

持续迭代成本

  • 基础模型升级时,需要重新微调(训练数据、调参、评测全套再来一遍)

微调技术选型

如果确定要微调,主流技术路线:

技术方法显存需求适用场景
LoRA / QLoRA低秩适配,只训练少量参数低(1–2 张 24GB 卡)大多数场景的首选
Full Fine-tuning全量参数微调极高(训练显存 = 推理 × 3–5)需要深度定制,有充足 GPU
PEFT(Prefix Tuning / IA³)参数高效方法极低任务切换频繁,多任务共享一个基础模型
DPO / RLHF偏好对齐中高调整模型风格、遵从性,需要偏好数据

LoRA + QLoRA 是 90% 场景的正确起点:显存友好,效果接近全量微调,可在消费级 GPU 上完成。

具体到怎么选:如果你只有 1 张 24GB 卡(比如 4090),QLoRA(在 LoRA 基础上把基础模型量化到 4bit 再训练)几乎是唯一现实的选项,7B 模型量化后显存占用能压到十几 GB,代价是训练速度会比 LoRA 慢一些、精度有极轻微损失,绝大多数任务感知不到差别。如果你手上是 A100/H100 这类 80GB 大卡,直接上 LoRA(不量化)训练更快、更稳。全量微调则建议只在两种情况下考虑:一是任务和预训练分布差异极大(比如把通用模型改造成专门的代码生成模型),LoRA 这种”打补丁”式的适配天花板不够高;二是你已经验证过 LoRA 效果不达标,且预算允许——全量微调对显存的要求是同规模推理的 3–5 倍,7B 模型全量微调基本要多卡(4×A100 起步)才跑得动,而且优化器状态(Adam 的一阶二阶动量)会再吃掉相当于参数量 2 倍的显存,这也是很多人第一次跑全量微调直接 OOM(显存溢出)的根源。

微调过程中真实会踩的坑

这几个坑不是理论上”可能发生”,是几乎每个第一次微调的团队都会撞上的:

1. CUDA out of memory(OOM)

现象:训练脚本跑到某个 step 突然报 CUDA error: out of memory 或者 RuntimeError: CUDA out of memory. Tried to allocate ...。根因通常是 batch size 设太大,或者序列长度(max_seq_length)超出了预期——比如你的训练样本里混进了几条超长文本,某个 batch 恰好凑齐了几条长样本,显存瞬间顶爆。修法:先把 batch size 降到 1,用梯度累积(gradient accumulation)凑够等效 batch size;同时对训练数据做长度分布统计,把超过 95 分位数的超长样本单独截断或剔除,别让极端值拖累整体训练稳定性。

2. Loss 不收敛或者震荡

现象:训练几十个 step 后 loss 曲线不降反升,或者上下剧烈跳动。常见根因有三个:学习率设太高(LoRA 场景常见的坑是照搬全量微调的学习率,通常需要调高一个数量级,比如从 2e-5 调到 1e-4 到 2e-4 区间,但具体值要结合你用的框架默认配置核对);训练数据里有脏数据(格式错乱、标签打反);或者数据量太少导致模型在几十条样本里反复过拟合又震荡。排查顺序建议是:先抽查 100 条训练样本人工核验格式和标签是否正确,再看学习率和 warmup 设置,最后才考虑加数据量。

3. 微调后效果反而变差(灾难性遗忘)

现象:微调前模型能正常回答的常识问题,微调后开始一本正经地胡说八道,或者只会输出训练集里见过的固定套路。这就是”灾难性遗忘”——模型在拟合你的小样本任务时,把预训练阶段学到的通用能力冲掉了一部分。修法:一是控制训练轮数(epoch),大多数 LoRA 微调 2–3 个 epoch 就够,跑 10 个 epoch 基本必现遗忘;二是在训练数据里混入一定比例(比如 10%–20%)的通用对话样本,让模型”记得”自己还是个通用助手;三是微调完必须跑一遍基础能力评测集,不能只看业务指标。

微调之后,推理部署怎么落地

很多人低估了”微调完成”和”能对外提供服务”之间的距离。微调产出的是一份权重文件(LoRA 场景下是几十到几百 MB 的适配器权重,需要和基础模型一起加载),要真正跑起来对外提供 API,还得解决这几件事:

  • 推理框架:用 vLLM、TGI(Text Generation Inference)这类专门的推理服务框架,而不是直接用训练框架(如 transformers 的 generate 方法)做线上推理——后者没有做 KV Cache 复用、连续批处理(continuous batching)这些优化,同样的卡吞吐能差 5–10 倍。
  • LoRA 权重合并 vs 动态加载:可以选择把 LoRA 权重合并进基础模型(推理时和普通模型无异,但每个任务要存一份完整模型);也可以用支持多 LoRA 动态挂载的框架(vLLM 较新版本支持),一个基础模型同时服务多个 LoRA 适配器,节省显存。业务线多、每条线数据量不大的场景,优先选动态加载。
  • 并发与显存预算:推理时显存占用 = 模型权重 + KV Cache(随并发数和上下文长度线性增长)。7B 模型 FP16 权重约 14GB,剩余显存基本都被 KV Cache 吃掉,24GB 卡上大概能撑几十路中等长度的并发请求,具体数值要用你的真实上下文长度和框架实测,不要凭感觉估。

完整的自建推理部署细节(框架选型、显存测算、成本核算)参考 自建推理成本测算,这里不重复展开。

API Fine-tuning:兼顾两者的折中选项

OpenAI、阿里云等提供商支持 API 层面的微调(Hosted Fine-tuning):

  • 你提供训练数据(上传到平台)
  • 平台负责训练和托管微调后的模型
  • 调用时和普通 API 体验相同

优点:省去自建推理基础设施;缺点:数据发往第三方,微调成本按 token 计费,定制化程度低于完全自建。

决策树

业务需求

Prompt Engineering 能否解决? → 是 → 继续用 API,停止
  ↓ 否
数据能否发往外部? → 否(合规要求)→ 必须自建(微调或直接推理)
  ↓ 是
调用量是否稳定且大?(日均亿 token+)→ 否 → 继续用 API
  ↓ 是
评估自建月总成本 vs API 月费用 → API 更低 → 继续用 API
  ↓ 自建更低
评估团队是否有 MLOps 能力 → 否 → 招人或用 Hosted Fine-tuning
  ↓ 是
→ 启动自建/微调

常见问题

RAG 和微调有什么区别,什么时候用哪个?
RAG(检索增强生成)是把外部知识检索后拼入上下文,适合知识库频繁更新的场景;微调是把知识”烧入”模型参数,适合固定的格式/风格/专业知识。优先尝试 RAG,它不需要训练,迭代成本极低。

微调后的模型效果一定比基础模型好吗?
不一定。微调数据质量差、数量不足或任务定义不清,反而会降低效果(“灾难性遗忘”)。微调前必须有清晰的评测指标,且准备好高质量的标注数据。

用 API Fine-tuning(如 OpenAI)和自建微调怎么选?
如果数据不敏感且对基础设施没有特殊要求,API Fine-tuning 是更低摩擦的起点,可以先验证微调是否真的有效,再决定是否值得自建。


延伸阅读: