大模型里的“概率”到底是什么?——用最通俗的话讲清权重、激活、KV 缓存和量化
第一次听说大模型时,很多人会以为它像数据库一样“记住了答案”,或者像搜索引擎一样“查到了答案”。其实不是。大模型本质上是一台极其复杂的概率计算器:你给它一句话,它算的是“下一个字最可能是什么”。
这篇文章不讲公式,只用比喻、配图和例子,带你从零开始看懂支撑这台计算器的几个关键概念:权重、激活、KV 缓存、量化,以及模型到底是怎么从概率里“挑”出下一个字的。
1. 权重:模型记住的“菜谱”
一句话比喻:权重就像一本厚厚的菜谱里写好的“配比”——训练时反复试验定下来,做菜时照着用,不会变。
如果你把大模型想象成一个超级大的函数,输入是文字,输出也是文字。这个函数里面有几千亿个数字,这些数字就是权重(Weights)。
权重的形态通常是密密麻麻的矩阵,你可以把它看成一个巨大的“乘法表”。训练的过程,就是不断调整这些数字,让它们对人类语言越来越“合拍”。一旦训练完成、模型发布,这些数字就固定了——无论谁来用同一款模型,权重都是一样的。
模型在训练时读了无数句子,发现“猫”后面经常跟着“喵”“抓”“睡”。于是权重里和“猫”相关的某些数字被调得比较大。以后你输入“猫”时,这些大数字会让“喵”更容易被算出来。
2. 激活:当下输入“点亮”的网络
一句话比喻:权重是房子的电路图,激活是当你按下某个开关时,房间里实际亮起来的灯。
权重是固定不变的,但输入千变万化。同样一张“电路图”,输入“猫”和输入“蛋糕”,亮起的灯完全不一样。激活(Activation)就是模型在处理当前输入时,每个节点实际算出来的数值。
你可以把激活理解为“当下的信号强度”:有些节点被输入强烈点亮(数值接近 1),有些几乎没反应(数值接近 0)。模型正是通过这些亮起的节点,来判断接下来该输出什么。
输入“猫”时,和“动物”相关的隐藏节点被点亮;输入“蛋糕”时,和“食物”“甜”相关的节点被点亮。权重没变,但激活值变了,所以输出概率跟着变。
3. KV 缓存:给模型做“便利贴”
一句话比喻:KV 缓存就像你做长除法时随手记的草稿。算过的部分不再重算,只在便利贴上接着写下一步。
大模型生成文字是一个字一个字往外“蹦”的。比如要生成“今天天气真好”,它先算出“今”,再算“天”,再算“气”……每算一个新字,理论上都要把前面所有字再看一遍。
如果没有缓存,生成第 5 个字时,模型要把第 1~4 个字重新算一遍;生成第 100 个字时,要把前 99 个字重新算一遍。这显然太浪费了。
KV 缓存(Key-Value Cache)就是把这些已经算过的“中间结果”存下来。下一次只需要把新字加进来,前面的内容直接读缓存,速度大幅提升。
KV 缓存需要把每个已生成 token 的 K、V 两个向量存下来。对话越长,便利贴越厚,占用的显存就越多。这也是为什么超长上下文会“吃”显存的主要原因之一。
4. 量化:把高清照片压成“缩略图”
一句话比喻:量化就像把一张 4K 高清照片存成不同清晰度的版本:8-bit 是高清,4-bit 是标清,2-bit 是像素风——文件小了,细节也少了。
权重是海量的浮点数。训练时通常用 16-bit 甚至 32-bit 的高精度来存;但部署到普通电脑或手机时,这么存太占内存、也太慢。量化(Quantization)就是把每个数用更少的位(bit)来表示。
- 16-bit:原始精度,每个数占 2 字节。
- 8-bit:每个数占 1 字节,精度损失很小。
- 4-bit:每个数只占半个字节,内存减半,常用于本地部署。
- 2-bit:每个数只占 1/4 字节,极致压缩,但精度损失明显。
如果你的显卡只有 8 GB 显存,想跑一个 14 GB 的模型,就可以用 4-bit 量化,把模型压到 3.5 GB。代价是答案质量可能轻微下降;2-bit 压得更狠,但模型可能开始“胡言乱语”。
5. 采样:从概率里“挑”出下一个字
一句话比喻:模型给每个候选字都发了一张“中奖券”,概率就是中奖券的数量。采样就是开奖——但不一定是最大那张,只是它中奖机会最大。
当模型处理完输入后,最后会输出一个概率分布:每个可能的下一个字都有一个概率。比如接在“今天天气”后面,候选字可能是:
模型并不是每次都选概率最大的字——那样回答会非常机械。实际生成时会加入一点“随机性”,也就是你常听说的 temperature(温度)和 top-p(核采样):
- temperature 低:概率差距被拉大,模型更“保守”,几乎总选最大概率的字。
- temperature 高:概率被摊平,模型更“放飞”,可能选到概率不高的字,回答更有创意但也更容易跑题。
- top-p:只从概率累加达到 p(比如 90%)的那一小批字里选,避免抽到太离谱的候选。
6. 串起来:一次生成的完整流程
现在我们把所有概念串成一条线,看模型是怎么从“你输入的文字”走到“输出一个字的”。
- 你把“今天天气”输给模型。
- 模型用权重和当前激活算出候选概率。
- 已有 token 的 K、V 被存进KV 缓存,避免重算。
- Softmax 把原始分数变成概率,再采样出“真”。
- 把“真”拼回输入,继续下一轮,直到生成完整句子。
一句话速查卡
- 权重:模型训练好的固定数字,相当于“菜谱配比”。
- 激活:当前输入在网络里实际点亮的信号。
- KV 缓存:把已生成内容的中间结果记下来,避免重复计算。
- 量化:用更少的位数存权重,让模型更小更快,但会损失一点精度。
- 采样:从概率分布里挑下一个 token,温度/Top-p 控制随机性。
它们共同完成了一件事:把人类的文字输入,变成下一个最合理的文字输出。
微信公众号
欢迎关注「字与码」
如果这篇文章对你有用,也欢迎在微信里继续关注后续更新。
X / Twitter
关注 @ax2_zicode
更即时的技术观察、新文章提醒和一些短想法会发在 X 上。