miller
发布于

代码定义结构,权重存储知识:一个例子看懂大模型如何推理

下载一个开源模型时,经常会看到一种奇怪现象:模型代码只有几十 KB,权重文件却有几个 GB,甚至几十 GB。
为什么差距这么大?模型的知识到底存放在哪里?当我们输入一句话时,代码和权重又是如何配合,最终生成结果的?

要理解这些问题,不需要先研究 Transformer 或注意力机制。我们从一个只有 3 个参数的小模型开始,一步步走完整个推理过程。

先搭一个最小模型
假设我要做一个判断天气的小模型。

输入两个数:

温度
湿度
输出一个数:

适合出门的分数
分数越高,越适合出门。

模型结构写出来只有几行:

class WeatherModel:
def init(self):
self.w1 = None
self.w2 = None
self.b = None

def forward(self, temp, humidity):
    return temp * self.w1 + humidity * self.w2 + self.b

代码定义了这样一个公式:

分数 = 温度 × w1 + 湿度 × w2 + b
这里有一个很重要的事实:

代码只规定了:

这里需要三个数字。

但它并没有规定:

这三个数字具体是多少。

https://mp.weixin.qq.com/s/TM9lv6b-9AH8O9ZiApgTBA

浏览 (15)
点赞
收藏
评论