训练与推理的区别
训练是把语料压成一份权重,发生一次就结束了。推理是拿这份权重去算一次答案,你每按一次回车就发生一次。
你会遇到的现象
- 你纠正了它一个错误,它当场认错,下次开新会话又错一遍
- demo 阶段账单没感觉,一上线就发现成本失控
- 老板问「能不能训练一个我们自己的模型」,你不知道该怎么接
两件完全不同的事
训练是:拿海量文本,一遍遍让模型猜下一个 token,猜错就微调参数,重复几万亿次。这个过程要几个月、上万张卡、天文数字的电费。结束之后,得到一份权重文件。这份文件从此就是死的。
推理是:把你的输入喂进这份权重,算出一串输出。这个过程通常几秒钟,用一张卡的一小部分算力,成本是几分几毛。但它每次调用都要重新发生一遍。
最容易误会的一条:你跟它说的任何话,都不会改变权重。你在对话里纠正它,它这一轮听进去了,是因为你的纠正进了这一次的输入序列,下一个 token 会参考到它。会话一关,这段输入就没了,权重还是原来那份。
| 训练 | 推理 | |
|---|---|---|
| 发生几次 | 一次 | 每次调用一次 |
| 量级 | 几个月、几千万到几亿 | 几秒、几分钱 |
| 谁在做 | 模型厂商 | 你和你的用户 |
| 改了会怎样 | 换出一个新模型 | 改这一次的答案 |
| 你能不能碰 | 基本不能 | 全在你手上 |
你能改的只有一侧
把这条线画清楚,很多争论会当场结束。
- 训练侧,你唯一的动作是选型。模型的知识截止日、语言强项、代码能力、天生的口味,都是训练时定死的。不满意就换一个,没有第二条路。别指望用提示词把一个不擅长中文的模型调成擅长中文。
- 推理侧,你能动的东西很多。提示怎么写、给多少上下文、温度调多少、要不要挂检索、要不要给工具、用哪个档位的模型、要不要开缓存。日常做 AI 产品,九成工作量在这里。
- 中间还有一层叫微调。它介于两者之间:在已有权重上用少量数据再训一轮,改的是风格、格式、领域口径,不是知识量。成本比训练低几个数量级,但比改提示高得多,而且改完就固化了,不如提示灵活。先把提示和检索用尽,再考虑微调。
成本从哪来
推理是按 token 计费的,输入和输出分开算,输出通常贵好几倍。于是账单的公式很简单:调用次数 × 每次的输入长度 × 单价,加上输出部分。三个乘数里,你最容易失控的是中间那个。
典型的失控是这样的:一开始提示词两百字,效果不错。后来加了系统规则,八百字。再后来接上历史对话、检索到的文档、工具返回的结果,一次请求变成两万 token。用户点一次,你付两万 token 的钱,而且每一轮对话都要把前面全部重发一遍。
能压的几个地方:把不变的前缀固定住走缓存、把长文档先摘要再进上下文、把简单任务分流给便宜档位的模型、把多轮对话阶段性压缩一次。这几件事都在推理侧,都是你能做的。
还有一条容易忽略的:延迟也是推理侧的账。输出越长,等待越久,因为它是一个 token 一个 token 吐的。要产品响应快,最有效的手段往往不是换更强的模型,而是让它少说几句。
