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