LLM 基础工程概念
我不是面试大模型算法岗,所以不需要从 Transformer 公式、训练细节讲到很深。但做 Agent、RAG、Tool Call 这类应用,还是需要理解一些常见工程概念:温度、Top-K、Top-P、KV Cache、Prompt Cache、量化模型。
解码参数:Temperature、Top-K、Top-P
LLM 生成文本时,本质上是在一步步预测下一个 token。模型每一步都会给出一组候选 token 的概率分布,解码参数决定“从这些候选里怎么选”。
Temperature
Temperature 控制输出的随机性。
温度越低,模型越倾向于选择概率最高的 token,输出更稳定、更保守、更可复现;温度越高,低概率 token 也更容易被选中,输出更多样、更有创造性,但也更容易跑偏。
一般来说:
- 代码生成、事实问答、RAG、工具调用:用低温度,比如 0 到 0.3。
- 创意写作、头脑风暴、营销文案:可以适当提高,比如 0.7 到 1。
温度不是“智商旋钮”。调高温度不会让模型更聪明,只是让采样更随机。
Top-K
Top-K 的意思是每一步只从概率最高的 K 个 token 里选。
比如 top_k=50,模型先把所有候选 token 按概率排序,只保留前 50 个,剩下的全部丢掉,再从这 50 个里面采样。
K 越小,输出越保守;K 越大,候选范围越宽,输出越多样。
Top-P
Top-P 也叫 nucleus sampling,意思是只保留累计概率达到 P 的那一小批 token。
比如 top_p=0.9,模型会从最高概率 token 开始往下加,直到累计概率达到 90%,只在这批 token 里采样。
Top-K 是固定保留 K 个候选,Top-P 是按概率质量动态决定保留多少个候选。实际使用里,Top-P 比 Top-K 更常见,因为它会根据当前分布自动调整候选集合大小。
怎么调
工程上不要同时把所有参数都调得很激进。一般先固定 Top-P,比如 0.9 或 0.95,再调 Temperature。
对 Agent 和 Tool Call 来说,稳定性通常比创造性重要,所以温度应该偏低。否则模型更容易乱选工具、编参数、输出不稳定格式。
KV Cache
KV Cache 是大模型自回归推理里的基础机制,几乎所有高效推理都离不开它。
Transformer 生成文本时,每生成一个新 token,都要关注前面已经出现过的 token。如果每一步都从头重新计算整段上下文,成本会非常高。
KV Cache 的做法是:把前面 token 在注意力层里算出来的 Key、Value 缓存起来。下一步生成新 token 时,不用重新计算前面所有 token 的 Key、Value,只需要计算新 token 自己的部分,再和缓存里的内容做注意力。
直观理解:
KV Cache 的价值是降低生成阶段延迟,尤其是长上下文、多 token 输出时非常重要。代价是占显存或内存,因为缓存会随着上下文长度和并发请求数增长。
所以服务端部署模型时,经常会遇到一个取舍:上下文越长、并发越高,KV Cache 占用越大,能同时服务的请求数就越少。
Prompt Cache
Prompt Cache 和 KV Cache 不是同一层东西。
KV Cache 是推理运行时的底层缓存机制;Prompt Cache 更偏产品/API 层,是后来服务商暴露出来的“跨请求复用相同 prompt 前缀”的能力。它通常建立在前缀预计算和缓存复用之上,但调用者感知到的是一个 API 能力,而不是模型架构本身的新组件。
很多应用的 prompt 前半部分是固定的,比如 system prompt、工具说明、长文档前缀、固定业务规则。不同用户请求都带着同一大段前缀,如果每次都重新计算这段前缀,就很浪费。
Prompt Cache 的思路是:把这段固定前缀预先计算并缓存起来。后续请求如果命中相同前缀,就可以复用缓存,减少首 token 延迟和输入 token 成本。
直观理解:
量化模型
量化模型就是把模型权重从高精度数值压缩成低精度数值。
常见模型训练和推理会用 FP16、BF16 这类 16 位浮点数。量化会把权重压到 INT8、INT4,甚至更低。这样模型体积更小,占用显存更少,推理也可能更快。
直观理解:
量化的价值:
- 能在更小显存的机器上跑更大的模型。
- 降低部署成本。
- 提高吞吐或降低延迟,具体取决于硬件和推理框架。
量化的代价:
- 输出质量可能下降,尤其是复杂推理、代码、数学、多语言场景。
- 量化越激进,风险越大。INT8 通常比较稳,INT4 更省但更容易损失效果。
- 不是所有硬件和推理框架都能从量化里获得同样收益。
所以选量化模型不能只看“参数量”和“显存占用”,还要在自己的任务上评估。比如客服问答可能 4-bit 也够用,但代码生成、安全审查、复杂 Agent 规划可能需要更高精度。