AI 课堂

注意力机制与 MoE:长文本关联与算力解耦

2026-08-02修订于 2026-09-17

本课结构 点击折叠
  1. 一句话定义
  2. 先把公式摆上桌:Attention = softmax(QKᵀ/√d_k)·V
  3. 生活化类比(建筑行业版)
  4. 本质与能力边界
  5. 实战演练
  6. 建工案例:一份报价单的追问清单
  7. 供应商话术拆解
  8. 常见问答
  9. 自测
  10. 概念卡片
  11. 延伸阅读

注意力让任意两个 token 直接“连线”,MoE 让模型的“知识容量”和“每次计算量”解耦。这是听懂私有化部署报价的两把钥匙。

本课回答的业务问题:为什么模型能记住第 3 页的“乙方”是第 80 页的某公司?为什么厂商报“671B 参数”又说“推理成本低”?8 张卡到底够不够?

前置课程:第 1 课(token 与分词)。

读完本课你将能够

  1. 说清注意力机制里“提问、标签、内容”(Q/K/V)的分工,能向同事解释模型为什么能跨页记住“乙方”是谁——以及为什么有时会记错;
  2. 用“长度翻倍、计算量翻四倍”和 KV cache 两笔账,解释长文档为什么又慢又贵又吃显存;
  3. 区分总参数与激活参数两个口径,独立复算“671B 权重 ≈ 1.34TB”这类显存账(历史算例);
  4. 拿着四问清单评审一份私有化部署报价,识破“拿参数做算术”式的销售话术。

一句话定义

自注意力(self-attention)让每个 token 根据相关度从全文加权提取信息——它是 Transformer 架构的核心算子;MoE(混合专家)把模型中负责加工 token 的层复制成多个“专家”,每个 token 只激活少数几个——总参数决定知识容量与存储,激活参数决定单次计算量。

这句话拆开有四层,每层都值得停一下:

  • “每个 token 根据相关度从全文加权提取信息”——主体是每个 token,动作是加权提取。第 1 课讲过,模型眼里没有段落和句子,只有一串 token(见第 1 阶段第 1 课)。注意力就是让这串 token 互相“看见”的机制:任何一个 token 都能和全文任何位置的 token 直接建立联系,不用一页页翻。第 3 页的“乙方”能和第 80 页的公司全称对上号,靠的就是这种“任意两点直接连线”。
  • “核心算子”——算子可以理解为一道标准化工序,就像定额体系里“人工挖土方”是一道固定工序。2017 年提出的 Transformer 架构,主体就是把注意力这道工序叠几十层反复做。本课不求数学推导,只求你说清这道工序“干什么、贵在哪”。
  • “复制成多个专家,每个 token 只激活少数几个”——模型内部大量参数集中在负责加工 token 信息的前馈层(FFN)上。MoE 把这层复制成很多份(所谓“专家”),再配一个路由器,每个 token 到来时只挑最对口的几份参与计算。“专家”是形象说法,不是“土建专家、机电专家”那种人类分工,后面专门拆。
  • “总参数决定容量与存储,激活参数决定计算量”——全课最重要的一句话。总参数像公司的总编制,激活参数像单个项目实际投入的人力:养 256 人的公司,知识储备是 256 人的,但单个项目只派 8 人。读私有化报价、算显存、估成本,全靠把这两个口径分开。

先把公式摆上桌:Attention = softmax(QKᵀ/√d_k)·V

这一行就是注意力的全部数学。不需要线性代数基础,逐段白话拆开:

  • Q(Query,提问):当前 token 发出的查询请求。比如处理到“它”这个字时,提问相当于“我在找一个当主语的公司方”。
  • K(Key,标签):每个 token 挂着的标签,供别人比对——像投标文件封面上的资质标签。
  • QKᵀ(打分):拿我的提问和全场每个标签做匹配,本质是一串乘加运算,产出一列相关度分。谁能回答我的问题,谁的分高。
  • √d_k(降温):分数统一除以一个和向量粗细有关的固定值。直觉:不降温的话分数动辄很大,softmax 之后会“一家独大到 99.9%”,其余信息全被挤掉;除一下,让权重留点余地,多个来源都能贡献。
  • softmax(变百分比):把一列分数换算成一列加起来等于 100% 的权重。分最高的占比最大,但通常不是独占。
  • ·V(按百分比取货):V(Value,内容)是每个 token 携带的信息本体。按刚才的百分比把全场内容混合成一份加权平均,作为当前 token 更新后的表示。

拿 4 个 token 走一遍(权重为虚构示例数字)。序列:[乙方] [收到] [发票] [后]。处理到“后”时,它想表达“在什么之后”,打分后经 softmax 得到权重:发票 0.70、乙方 0.20、收到 0.10。加权取货,“后”的新表示里七成信息来自“发票”——它就成功表达了“收到发票之后”。整句话的每个 token 都在做同样的动作,这就是“从全文加权提取信息”。

两个要点:一,这是连续加权,不是“选定唯一答案”——乙方也贡献了 20%,只是少;二,打分规则不是人写的,是模型在训练中自己学出来的参数。

生活化类比(建筑行业版)

注意力——评标现场的交叉核对:每个评标专家(token 的 Query“提问”)拿着自己的评分点,与所有投标文件的资质标签(Key)比对,按匹配度从各家的标书内容(Value)里摘取信息写进评审意见。匹配度越高,权重越大。注意:真实评标是“离散选中几家”,注意力是对全文的连续加权平均——每家都贡献一点,只是权重不同。

多头注意力——分专业评标组:商务组盯价格条款、技术组盯施工方案、法务组盯责任划分,各组独立打分,最后汇总——多组 Q/K/V 各学一种关系(指代、语法、条款呼应)。

MoE——公司专家委员会:公司养了 256 位专家(知识容量 = 总参数),每个问题到分诊台(路由器)后只请最对口的 8 位会诊(计算成本 = 激活参数),不开全员大会。

类比成立在哪:评标类比抓住了三件事——带着问题找全场比对(Q 对 K)、按匹配度决定取多少(权重)、多专业组独立打分再汇总(多头)。专家委员会类比抓住了“养人的成本”与“干活的成本”是两笔账——这正是总参数与激活参数的关系,也是 MoE 全部商业价值的来源。

类比失效在哪:其一,评标是离散入围、委员会要形成一致意见,注意力是连续加权、各专家输出直接按比例混合,没有“讨论”和“表决”环节。其二,评标专家有专业背景和签字责任,注意力权重只是训练学出来的数字,没有“责任”概念,不能当结论的证据。其三,评标一次性定标,注意力在生成文本时每写一个新 token 都要把前文重新扫一遍——长文又慢又贵的根源就在这。其四,评标组的专业分工是人为安排的,多头各自“盯什么”是训练中自发形成的,人未必说得清某一组头到底在盯哪种关系。其五,真专家有稳定可命名的专业边界(钢结构专家不碰机电标),MoE 的“专家”按 token 用法模式自发分工,与人类学科不对齐——别指望指出“哪位专家懂 EPC”。

本质与能力边界

1. O(n²):长文档为什么又慢又贵

注意力的打分是“每个 token 对所有 token”两两比对。设文本长 n 个 token,比对次数约 n×n = n²:

  • 1,000 token 的短文:100 万次(1,000×1,000);
  • 2,000 token:400 万次——长度翻倍,计算量翻四倍,因为 (2n)² = 4n²;
  • 10,000 token:1 亿次,是 1,000 token 的 100 倍;
  • 128k(131,072 token)超长上下文:约 171.8 亿次(131,072²,示例演算)。

模型有几十层,每层都要做一遍,量级结论只会更狠。这解释了三件业务上的事:为什么上下文窗口扩容是硬功夫而不是“改个配置”;为什么超长输入往往更慢、单位成本更高;为什么“窗口越大越好”不成立——装得下(第 1 阶段第 1 课)和算得动是两回事。

2. 因果掩码:只许看前文

生成式模型是一个 token 一个 token 往下写的。写第 100 个 token 时,只允许注意前 99 个和它自己,不许偷看后文——这不是安全政策,而是“预测下一个 token”这一训练方式的机械结果:训练时它就是只拿着前文学后文。

类比:做结算书逐行往下写,写第 100 行时只能引用前 99 行和已知条件,不能引用还没写的第 101 行。三个实务影响:①模型不知道自己接下来会说什么,它是一边写一边决定——所以“先列提纲再展开”的提示有效(提纲成了前文,后文能注意它);②指代消解只能回看,实战演练会用到;③它没有“写完全文再通读一遍”的环节,长答案末尾的汇总可能与开头矛盾——一致性校验要靠程序,分工逻辑同第 1 阶段第 1 课“计数交给程序”。

3. 首字为什么慢:prefill 与 decode 两段时间

模型处理一次请求分两段计时,慢的地方完全不同。读题段(prefill):把你贴的整份合同一次性并行处理,O(n²) 的比对主要发生在这里——3 页合同几乎无感,300 页合同(接近 128k)光“读题”就要做完 171.8 亿次比对量级的活(示例演算),这段等待就是首字延迟:模型开口之前的时间。答题段(decode):一个 token 一个 token 往外写,每写一个新 token 都要回头与所有旧 token 连线一遍,输出越长越慢,表现为“吐字速度”。

两段时间各有各的账:长输入慢在“读题”,长输出慢在“答题”;并发一高,读题的活还要排队——后文建工案例里十几人同时贴长合同、首字延迟从几秒拖到几十秒,机制就在这。一句话记住:读题是批发,答题是零售,两笔账分开算。

4. KV cache:用显存换速度

生成第 1,000 个 token 时,前 999 个 token 的 K(标签)和 V(内容)其实已经算过,丢掉重算太浪费,推理系统把它们缓存起来——这就是 KV cache:用显存空间换计算时间

算一笔账(示例数字,虚构演算):设某模型 60 层(示例值),每层每 token 需缓存 K、V 各 4,096 维(示例值),FP16 每个数 2 字节——单 token 缓存 ≈ 60 × 2 × 4,096 × 2 ≈ 1MB。一次 128k 全长会话:131,072 × 1MB ≈ 130GB;10 人同时各开一个 128k 长会话 ≈ 1.3TB——比 8×80GB = 640GB 的全部显存还大一倍。

真实模型会用各种结构手段压缩这份缓存(头数、维度的设计不同),实际数字以所选架构为准,但规律不变:KV cache 随上下文长度和并发数线性膨胀,是私有化报价里最常见的隐藏成本。权重是固定开销,KV cache 是随用量长出来的开销——两本账必须分开算。

5. 注意力 ≠ 理解,更 ≠ 权限

注意力只做一件事:可学习的加权汇总。由此守住两条边界。第一,不能由“它只是加权平均”断言模型没有推理能力——单道工序简单,不等于几十层叠起来后整体能力简单,就像单个定额子目很简单、整套造价体系却能干复杂的活;反过来,模型答对了也不能说“看,注意力让它理解了”。算子层面的简单与整体能力的高低,没有直接证明关系。第二,注意力权重不是证据,也不是权限。它不区分“指令”和“材料”——第 1 课埋过伏笔:模型靠习惯而非物理墙区分二者(提示注入),在注意力眼里,你的指令和材料里的句子一样按“相关度”参与连线。谁连线强,不代表谁“有权”,可视化热力图也不能当“模型依据了哪条”的证据。

6. MoE:专家不是“多个模型投票”

常见误解:MoE 是“土建模型、机电模型、法务模型各答一遍再投票”。不是。专家是同一个模型内部加工层的碎片化副本,路由器给每个 token 打分、选出少数几个(top-k)并加权混合它们的输出。整个过程发生在模型内部、逐 token 进行——同一句话里,相邻两个 token 请到的专家组合都可能不同。它不是多个独立模型的集成,更不存在投票表决。

7. 总参数与激活参数:两个口径,两个用途

存储看总参数:路由是按 token 现场决定的,任何专家都可能被选中,所以全部参数都得装进显存待命,不管激活不激活。历史算例(数字仅为算例,非选型建议):DeepSeek-V3 总参数 671B——FP16 每参数 2 字节,671×10⁹ × 2 字节 ≈ 1.34TB 纯权重量;而 8×80GB = 640GB 显存装不下,必须量化、卸载或加设备。若压到每参数约 1 字节,约 671GB,仍超 640GB;约 0.5 字节,约 335GB,装得下但精度更低——质量与速度的取舍要实测(示例演算)。

计算看激活参数:DeepSeek-V3 每 token 激活约 37B,37/671 ≈ 5.5%。单 token 的计算量相当于一个 37B 级的稠密模型,却拥有 671B 的知识容量。再取一个历史算例:Mixtral 8×7B,总参数约 47B、每 token 激活约 13B,激活比例约 28%。这就是“报 671B 又说推理成本低”并不矛盾的原因——容量按总参数记账,计算按激活参数记账

但性能不能只看参数做算术:实际表现还受量化精度、KV cache 占用、多卡通信和并发的影响。参数算术只回答“显存放不放得下、理论计算量多大”,回答不了“你的场景快不快、准不准”——后者只有实测能回答。

实战演练

演练一:注意力怎么把“它”读成“乙方”

条款(虚构示例):

乙方收到发票后,它应在三十日内向甲方支付合同价款。

模型逐 token 处理,走到“它”时,问题来了:“它”字本身不携带身份信息,它的 Query 相当于问:“我要找一个当主语的公司方,前面谁像?“对可见 token(因果掩码:只能看前文,此处”甲方“还没出现)打分,softmax 后的权重(虚构示例数字):

可见 token 权重 为什么
乙方 0.62 公司方、句子主语,最匹配
发票 0.14 名词,但不是主语方
收到 0.09 动作
后 / 标点 / 它自身 0.15 弱关联

加权取货后,“它”的新表示里六成多信息来自“乙方”;往后的“支付”再连线时,付款义务就落到乙方头上,而“支付”的另一组头会去连“甲方”,锁定收款方。多头在这里分了工:一组盯“谁付”(乙方),一组盯“付给谁”(甲方),一组盯“何时、凭何”(三十日、发票)。第 3 页定义、第 80 页引用能对上,机制就是这样——全文任意两点直接连线,不靠翻页。

但要看清边界:权重是概率,不是查表。0.62 不是 100%;长文里堆了几万个 token 后,连线可能连错——把“它”连到前面另一家公司头上,就是实务中“指代漂移”事故的机制根源(呼应第 1 阶段第 1 课的 lost in the middle:材料在场,未必被用上)。工程对策:关键指代显式写全称,别让模型靠注意力猜。

演练二:逐项算一份 MoE 私有化报价的显存账

供应商报价(示例话术):“671B MoE 私有化部署,8 卡 H100(80GB/卡),128k 上下文。“三本账逐项算:

第一本:权重账。FP16:671B × 2 字节 ≈ 1.34TB > 640GB(8×80GB),装不下;量化到每参数约 0.5 字节 ≈ 335GB,装下了——但要追问:什么精度、质量损失多少、有没有同题对比评测(历史算例)。

第二本:KV cache 账。按上文示例口径(约 1MB/token):单会话 128k 全长 ≈ 130GB;目标并发 10 人 ≈ 1.3TB。权重 335GB + KV cache 1.3TB 远超 640GB——要么降并发、要么限长度、要么加卡。“支持 128k”和“128k 下还撑得住目标并发”是两句话。

第三本:运行开销账。推理框架本身、多卡通信缓冲还要吃掉一块显存(比例随部署方案不同),留不出余量的方案一上量就崩。

三本账加完,结论通常不是“8 卡不行”,而是“8 卡跑得动什么、跑不动什么必须说清”——这正是拿去和供应商对表的清单。

建工案例:一份报价单的追问清单

背景(虚构):青柏产业园一期是“智慧工地 + 合约数字化”试点,业主与总包决定合同审查系统私有化部署,材料不出内网。供应商现场演示惊艳,方案一句话:“671B MoE 大模型,推理成本低,配 8 卡 H100 即可,支持 128k 上下文。“演示全程单人、短文档的最好 case,没人当场算账,项目按 8 卡采购。

做法与踩坑(虚构):设备到场,试运行两周出了三件事。①单人审短合同确实快;但合约部十几人同时使用、又有人贴进一份 300 页总包合同(接近 128k)时,首字延迟从几秒拖到几十秒,高峰期部分请求直接失败。②追查发现权重是量化后才勉强装进 640GB 的,长文加并发把 KV cache 顶上去,显存余量归零。③复盘时才发现,“推理成本低”是按单 token 报的口径,折算成“每份合同审完”的成本,与当初的理解对不上。

修复(虚构):按演练二的算法重做三本账;要求供应商补交“目标并发 + 长短文档混合”工况下的实测报告(吞吐、首字延迟、输出质量);业务侧配合,超长合同按第 1 课的方法分段投喂、高峰限流;最后把四问清单写进公司采购规范。

结论:671B 是总参数还是激活参数、显存三本账怎么算、成本按什么口径、“支持”的边界条件——四个问题全部能从机制推出来。听懂机制,就不用靠信任供应商过日子。

供应商话术拆解

话术:“私有化部署 671B MoE 大模型,推理成本低,配 8 卡 H100 即可,支持 128k 上下文。”

拆解四问,以及合格回答应该长什么样

  1. “671B”是总参数还是激活参数?——两个口径必须分开报:总参数决定显存门槛(全部权重都得装进去),激活参数决定单次计算量(DeepSeek-V3 口径为 671B 总参数、每 token 激活约 37B,历史算例)。只报一个数的,先让他补齐另一个。
  2. FP16 权重约 1.34TB,8×80GB = 640GB 装不下,是否量化?——合格回答给出量化精度、质量评测的同题对比;不合格回答:“我们做了智能优化,用户无感知”——形容词不是数据。
  3. 128k 上下文下 KV cache 多大?目标并发多少人?——合格回答能把权重、KV cache、运行开销三本账摊开算给你看,并说明“128k 与高并发同时发生”时的边界;只演示单人短文档的,等于没回答。
  4. “推理成本低”按什么口径?有没有实测数据?——单 token、单次请求、每成功任务三个口径差别巨大(重试和失败也要钱,见第 1 阶段第 1 课的三本账)。合格回答:目标并发下的吞吐、首字延迟、输出质量实测报告,并附测试工况。

合格回答的共性:敢把边界条件说在前面——多少并发、多长文档、什么精度,拿数字和工况说话。不合格的信号:只用形容词(智能、无感、深度优化),只演最好 case,一追问细节就绕回演示。

常见问答

Q1:注意力的可视化连线图,能当“模型依据了哪条条款”的证据吗? 不能。注意力权重是推理过程的内部中间量,展示出来的连线不等于模型给出的理由,只能当线索。同理,也不能拿“注意力只是加权平均”去断言模型有没有推理能力——算子简单不等于整体简单,两个方向都不能推。

Q2:费用按 token 线性收,为什么长文档让人感觉贵得多、慢得多? 计费常是线性的,计算量是平方的(O(n²)):1 万 token 的比对量是 1 千 token 的 100 倍(示例演算)。服务商的成本结构决定了超长输入往往更慢、单位成本更高;具体怎么定价各家不同,价格以官方为准,但“长文更金贵”的机制原因就是这个。

Q3:KV cache 会把我们的对话内容存下来吗? KV cache 是解题过程的“草稿”——本次推理用的中间结果,不是模型的长期记忆,也不是训练数据,会话结束就失去意义。真正决定“你的数据去哪了”的是供应商的数据留存与训练条款——那是合同问题,看协议,不看机制。

Q4:“8 卡跑 671B”的方案能信吗? 先过数字关:FP16 权重 1.34TB > 640GB,方案必然含量化或卸载(历史算例)。不是不能做,而是要他交底:什么精度、质量损失多少、长文加高并发时还撑不撑得住——这些都要实测数据。

Q5:MoE 的专家是按专业分工的吗?能不能说“这位专家懂 EPC”? 不能。专家的分工是训练中按 token 用法模式自发形成的,与人类学科体系不对齐,可解释性有限。“256 位专家、每 token 请 8 位”说的是数量结构,不是专业目录。

Q6:激活参数只有 5.5%,是不是模型只用了 5.5% 的能力? 不是。知识容量装在全部 671B 参数里,5.5% 说的是每个 token 的加工量。像图书馆藏书百万册,你一次只借三本——借得少不等于馆藏少。

Q7:都 128k 窗口了,还有必要分段吗? 窗口解决“装得下”;本课讲的是“算得动、用得好、划得来”:O(n²) 的计算量、KV cache 的显存、中段信息利用打折(见第 1 阶段第 1 课)都不随窗口变大而消失。分段与检索仍是长文档的常规做法(第 2 阶段检索课专门展开)。

Q8:现在窗口动不动几十万 token,O(n²) 是不是已经被解决了? 没有,只是被“绕着走”。工程上有滑窗注意力、稀疏注意力等各种省算力设计(名称与效果随架构而变,以官方文档为准),共性是“少连一些线”换“省下大量计算”——省的是成本,让渡的是一部分全局连线能力。所以“窗口大”只说明装得下,不代表每个角落都被同样仔细地看过;评审方案时,仍要问“全量比对还是省算力变体”。

自测

同上案例:请独立指出至少 3 个需要追问或可能藏坑的技术点,并说明理由。

参考要点(先自己作答,再展开对照)

四个可追问的坑,理由都从机制推出。①参数口径:671B 是总参数,必须追问激活参数(DeepSeek-V3 口径约 37B,历史算例)——总参数决定显存与容量,激活参数决定单次计算量,两个数不分开,“推理成本低”就没法核。②权重账:FP16 下 671B × 2 字节 ≈ 1.34TB,超过 8×80GB = 640GB,方案必然含量化或卸载;要追问量化精度、质量损失与同题评测对比——省显存的每一步都在赌质量。③KV cache 账:“支持 128k”不等于“128k 下还能扛住目标并发”;KV cache 随长度和并发线性膨胀(示例口径约 1MB/token),要问目标并发数与高峰余量。④口径与实测:成本要落到“每成功任务”,并要求目标并发下的吞吐、首字延迟、输出质量实测报告——不接受形容词。能再提到卸载牺牲速度、多卡有通信开销、不能只看参数做算术,更好。

概念卡片

名词 一句话定义
自注意力(Q/K/V) 每个 token 用“提问”匹配全文“标签”,按相关度加权汇总“内容”
多头注意力 多组独立 Q/K/V 并行,各学一种词间关系再拼接(分专业评标组)
因果掩码 生成时只许看当前及之前的 token,不许偷看后文
O(n²) 标准全注意力的计算量随长度平方增长——长文成本根源
KV cache 缓存已算中间结果避免重算;长上下文 + 高并发时是显存杀手
prefill / decode 读题段并行处理输入(决定首字延迟)、答题段逐字生成(决定吐字速度)
MoE(混合专家) 把 FFN 复制成 N 个专家、路由只激活 top-k:容量与算力解耦
路由器(router) MoE 里给每个 token 打分、挑选专家的部件,逐 token 工作
总参数 / 激活参数 总参数影响存储与容量,激活参数影响计算;性能还受精度/缓存/并发影响

延伸阅读

  • 谱系(了解即可):2017 Transformer 论文 → 2021 Switch Transformer → 2023 Mixtral 8×7B → DeepSeek-V3/V4 系列。历史型号参数(671B/37B、47B/13B)仅作算例,不构成选型建议。
  • 机制细节参考:Attention Is All You Need(2017)。当前各模型架构参数属动态信息,以官方发布为准,核验于 2026-09-16。
  • 下一课:这副庞大的权重是怎么练出来的——预训练与后训练各管哪一段。

← 课程目录