尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

大模型是如何进行计算的,通过例子理解

大模型是如何进行计算的,通过例子理解 假设用户输入“苹果是什么颜色” 模型需要预测下一个词“红”。 为了达到向量级别的直观理解我们假设模型内部的隐藏层维度是 4维实际中通常是4096维或更高并且为了简化我们假设模型只有 1个注意力头Head 和 1层网络。 以下是完整的计算全流程### 第一阶段文本变向量Embedding模型无法直接理解汉字所以首先要把输入的三个词Token变成向量* Token 1 (“苹果”) → 变成 4维向量 $X_1$* Token 2 (“是”) → 变成 4维向量 $X_2$* Token 3 (“什么”) → 变成 4维向量 $X_3$### 第二阶段Q、K、V 是怎么算出来的模型内部有三套固定的“滤镜”也就是训练好的权重矩阵$W_Q$、$W_K$、$W_V$。它们的作用是把输入的向量“投影”成三个不同角色的向量。以 Token 1 (“苹果”) 为例它的向量 $X_1$ 会分别乘以这三个权重矩阵* **Q (Query)** $X_1 \times W_Q$* *物理含义*“我是谁我想找什么信息”相当于搜索引擎里的**搜索词*** **K (Key)** $X_1 \times W_K$* *物理含义*“我是什么特征别人能怎么搜到我”相当于网页的**标签/索引*** **V (Value)** $X_1 \times W_V$* *物理含义*“我具体携带了什么内容”相当于网页的**正文内容**同样的过程也会发生在“是”和“什么”身上。此时每个词都有了自己的 Q、K、V 向量。### 第三阶段KV Cache 登场避免重复劳动在实际推理中为了避免每次预测新词都把前面的词重算一遍模型会把前面算好的 K 和 V 存进显存这就是 **KV Cache**。* 存入缓存Token 1 的 $K_1, V_1$Token 2 的 $K_2, V_2$Token 3 的 $K_3, V_3$。### 第四阶段预测下一个词核心注意力计算现在模型要根据前面的话预测下一个词。此时只有最后一个词Token 3 “什么”需要充当“提问者”。**Step 1生成新的 Query**模型只计算 Token 3 的 Q* $Q_3 X_3 \times W_Q$**Step 2Q 与历史 K 算相似度打分**拿 $Q_3$ 去和 KV Cache 里所有的 K 做“点积Dot Product”运算看看谁跟当前的问题最匹配* 分数1 $Q_3 \cdot K_1$ “什么”和“苹果”相关吗* 分数2 $Q_3 \cdot K_2$ “什么”和“是”相关吗* 分数3 $Q_3 \cdot K_3$ “什么”和“什么”相关吗*(注因为因果掩码机制Token 3 只能看它自己和前面的词不能偷看未来的词)***Step 3Softmax 归一化分配注意力预算**把上面的分数通过 Softmax 函数变成加起来等于 100% 的权重概率。假设算出来的结果是* 权重1 0.7 高度关注“苹果”* 权重2 0.1 略微关注“是”* 权重3 0.2 关注“什么”**Step 4用权重去提取 V 的内容加权求和**用上面的权重去 KV Cache 里把对应的 V 捞出来按比例混合* **最终输出向量** $(0.7 \times V_1) (0.1 \times V_2) (0.2 \times V_3)$这个“最终输出向量”是一个融合了上下文信息的新向量它现在包含了极强的“水果、颜色”的语义特征。### 第五阶段输出预测结果这个融合了上下文的向量会穿过模型最后的输出层一个巨大的矩阵乘法映射回整个词表比如几万个词。模型会给词表里的每个词打一个分Logits* “红” 的得分9.5* “绿” 的得分6.2* “苹果” 的得分1.1* “的” 的得分0.5最后通过采样策略比如选分数最高的或者按概率随机抽一个模型选出了得分最高的 **“红”**。然后“红”会被变成新的向量追加到 KV Cache 中继续去预测下一个词“色”。这就是大模型“一个字一个字往外蹦”的底层真相---通过这个例子你能直观感受到 Q、K、V 的分工以及 KV Cache 的作用了吗如果这部分消化得差不多了我们可以接着聊聊当上下文长达几万字时这个 $Q \cdot K$ 的点积计算会导致显存爆炸业界是怎么用 **PagedAttention分页注意力** 像操作系统管理内存一样解决这个问题的
返回列表