K3 七天课 · Day 4 / 7 课程首页 自测题 映射 K3
Day 4 · 2.8 万亿,为什么每次只用 1040 亿?(MoE)

把大脑拆成 896 个专家,每次只叫 16 个

Day 1 留下一个坑:K3 有 2.8 万亿个数字,但每次「接龙」只动 1040 亿——剩下的去哪了?今天的答案叫 MoE(混合专家):把大脑拆成 896 个专家小组,路由器按需点名,每次只叫 16 个干活。省钱、省电,还越拆越聪明。

学完你能回答
2.8T 总参数和 104B 激活参数是什么关系?
学完你能回答
896 个专家、每 token 激活 16 个,怎么做到不吵架?
学完你能回答
「规模定律」为什么说越大越划算?

0起点:这些你早就会了

今天讲的是「分工」的智慧。你在学校、在公司见到的那些分工场景,就是 MoE 的雏形:

你已经会的AI 世界里对应的东西
医院分科室:内科外科各管一摊,挂号台帮你分诊MoE(混合专家):896 个「专家」各管一类知识,路由器负责分诊
挂号台问两句就知道该挂哪个科路由器(Router):看一眼 token,决定叫醒哪 16 个专家
全班做作业,老师只改收上来的那几本Top-16 激活:每次只算被点名的专家,其余在休息
热门科室挤爆、冷门科室没人去负载不均:专家也会「忙的忙死、闲的闲死」,需要调节
图书馆藏书 280 万册,一次只借几十本总参数 vs 激活参数:2.8T 全存着,104B 每次算
人越多、越细分,反而越高效(分工红利)规模定律:模型越大,单位成本的「聪明程度」越高

核心就一句:「存得下」和「算得起」是两回事——MoE 就是让 2.8T 的脑子存得下、又算得起的办法。

1问题:2.8T 个数字,为什么不能全算?

K3 一共存着 2.8 万亿个数字(这就是「总参数」)。如果每接一个字,这 2.8T 个数字全都要算一遍——不是不能,是贵到离谱:算得慢、耗电大、一次请求就要花很多钱。可 2.8T 又不能删,删了知识就少了。

聪明人都会想到一件事:能不能每次只算一部分?就像图书馆藏书 280 万册,你查「苹果为什么甜」时,根本不用翻农业、化学、历史全部书架——只翻「植物学 + 食品科学」那几架就够了。

总参数 2.8T vs 激活参数 104B 总参数像一整面墙的书,每次接龙只读其中一小摞(104B),其余原封不动地存着 2.8T 是「家底」,104B 是「每次真的花出去的」 总参数 2.8T:全部存着 = 一整个「知识图书馆」,平时全锁在书架上 激活参数 104B:每次真算 104B ≈ 2.8T ÷ 27 每次接龙只翻这一小摞书 同样的「聪明」,成本只有 1/27 (那 98% 的专家也不是白存——它们让 K3 懂得更多) 「总参数」决定知识面,「激活参数」决定每次花多少钱——两者解耦,是 MoE 的全部秘密
图 1 · 总参数 vs 激活参数:左边是 K3 的「全部家底」2.8T 个数字,像图书馆的全部藏书,锁在书架上(存着,不占计算)。右边是每次接龙「真的翻开读」的部分——只有 104B,约等于总参数的 1/27。这就是为什么 K3「又大又便宜」:大在知识面,便宜在每次只算一小部分。
记住这两个词,后面会一直用:
总参数(2.8T):模型里存的所有数字——决定「懂多少」;
激活参数(104B):处理一个字时真的参与计算的数字——决定「每次花多少钱」。
进阶小注 ·传统 Dense 模型总参数 = 激活参数,算一次前向的 FLOPs 与参数规模成正比。MoE(Mixture-of-Experts)把 FFN 层换成多个专家,每个 token 只经过 Top-k 专家,于是 激活参数 ≪ 总参数,推理成本与激活参数挂钩、知识容量与总参数挂钩——这就是「稀疏激活」的本质。

2核心:896 个专家 + 一个路由器

MoE 的想法一句话:把一层大脑,拆成 896 个小专家,每个专家专精一类「活」;每个字进来,路由器看一眼,挑最对口的 16 个专家来算。

K3 的细节是:896 个「路由专家」(被点名的)+ 2 个「共享专家」(每次都参与的,管通用技能,相当于全科医生)。也就是说,每个字实际动用了 16 个路由专家 + 2 个共享专家。

MoE:路由器把 token 分发给 Top-16 个专家 一串 token 经过路由器,路由器选出 16 个最相关的专家(高亮),其余专家在休息;2 个共享专家总是参与 每个 token:路由器点名 → 16 个路由专家 + 2 个共享专家干活 苹 果 很 甜 路由器 点名 Top-16 896 个路由专家(每个圆点 = 1 个) ● 被点名的 16 个专家:只有它们在算 … … 2 个共享专家:每次都在(全科医生) 路由器会给每个专家打「相关分」,只把 token 派给分数最高的 16 个 → 98% 的专家这轮在休息
图 2 · MoE 的一天:左边是正在处理的 token(苹果/很/甜……),中间的路由器给 896 个专家打分,选出最对口的 16 个(第二行高亮块),再加上 2 个「全科医生」共享专家,一起处理这个字。没被点名的 880 个专家原地待命——它们不参与计算,所以不花钱。
打个比方
像一家有 896 个专科医生的医院。你挂号(token)进来,分诊台(路由器)看一眼症状,只叫对口的那 16 个专科医生 + 2 个全科医生来会诊,其余 878 个医生继续休息。要是每个病人都把 896 个医生全叫来——医院立刻瘫痪,收费还上天。
进阶小注 ·K3 的 MoE 层采用 DeepSeekMoE 式组织:2 个全宽度共享专家(N_s=2)+ 896 个路由专家,每个 token 经路由器(Sigmoid 打分)选 Top-16。路由专家在低维潜空间(ℓ)中运算,而不是完整的 d 维——这叫 LatentMoE,是 K3 能把专家数堆到 896 的关键(Day 6 深读)。

3专家的两个坏毛病:偷懒和不均衡 → QB 来治

思路很美好,但真把 896 个专家放一起,会出两个麻烦——都是「人」的问题:

K3 的解决办法叫 QB(Quantile Balancing,分位数平衡)。思路很朴素:给每个专家发一个「偏置分」(加分/减分),冷门的加分让路由器更愿意点它,热门的减分让路由器少点它——最后让每个专家接到的活一样多。

QB 负载均衡:从 (4,3,1,0) 到 (2,2,2,2) 4 个专家负载 4/3/1/0 不均衡,QB 调整偏置后变成 2/2/2/2 均衡 负载均衡:让每个专家接到一样多的活 调整前:忙的忙死,闲的闲死 4 个 3 个 1 个 0 个 忙到冒烟 全程摸鱼 QB 调节 调整后:人人均等,其乐融融 2 2 2 2 四个专家各接 2 个活,谁也不闲着 做法:给冷门专家「加分」、给热门专家「减分」,分数加在路由器打分上,让 Top-16 的名单变得更公平
图 3 · QB 分位数平衡:左边:4 个专家收到的活是 4、3、1、0 个——专家 1 忙到冒烟、专家 4 全程摸鱼,训练时有的卡算到爆、有的卡闲着。QB 给每个专家配一个「偏置分」,把流量重新分配(中间箭头),右边变成 2、2、2、2——人人均等。这个偏置是拿「分数的分位数」算出来的,所以叫「分位数平衡」。
为什么「均衡」这么重要?因为 896 个专家是分放在几百张显卡上训练的(明天 Day 5 讲)。如果不均衡:负载高的卡成为瓶颈,其他卡干等;而且没被用到的专家等于「没上课」,学不到东西,白占参数。QB 保证了「每个专家都练到、每张卡都不闲着」。
进阶小注 ·QB 是无辅助损失路由:不加额外的均衡损失项,而是给路由器分数加专家专属偏置 b_j(只影响 Top-k 选择,不影响混合权重与梯度)。偏置取「边际 s_{i,j} − α_i 的目标分位数」——保证每个专家恰好拿到 q = mk/n 个 token。大规模下用直方图估计分位数,一次 all-reduce 搞定,通信量只有自然方案的 1%。

4稀疏度 56:98% 的专家在休息,为什么还更强?

896 个专家里只叫 16 个,这个「16/896 = 1/56」的比值,行话叫稀疏度 56。换句话说:处理每个字,约 98% 的专家在睡觉。

有人会问:既然只算 16 个,那另外 880 个是不是白存了?恰恰相反——它们让 K3 的「知识覆盖面」大了几十倍。打个比方:一个人脑子里存着 896 门课的知识(虽然每门课只在上课时翻对应那本),那他的「见识」当然比只存 16 门课的模型广。专家越多,每个专家可以越「专」——一个专家只管德语动词变位,练得越精。

稀疏度 56:56 个格子只有 1 格被激活 8x7=56 个格子代表 56 个专家,只有 1 个高亮在算,其余 55 个休息 稀疏度 56:每 56 个专家里,只有 1 个在算 算 这一格在算(被点名的专家) 这 55 格在休息(这次没被点名) 但下次可能轮到它们—— 所以每个专家都「练过」 K3:896 专家 / 16 激活 = 稀疏度 56 格子越多 → 知识面越广;每次只算 1/56 → 单次成本不涨——「大而省」的秘密全在这
图 4 · 稀疏度 56 的直觉:8 行 × 7 列 = 56 个专家,这一轮只有深蓝色那一格在算,其余 55 格休息。但下次来的 token 可能点的是别的格子——所以每个专家在训练中都被点过、都练过。格子越多,知识的「抽屉」越多,K3 懂得就越多。
打个比方
896 个专家就像 896 个抽屉的知识库。普通模型只有 16 个抽屉(Dense),K3 有 896 个抽屉——查资料时只开最对口的 16 个,但 896 个抽屉里都存着东西。抽屉越多,能装的知识越细、越全。
进阶小注 ·极端稀疏度(1/56)会放大两类失效:① 路由分支(降投影 → 专家 FFN → 升投影几乎连续 4 个矩阵乘)在 2.8T 规模下激活值爆炸;② 近 10³ 个专家的负载均衡超出旧方法(定步长偏置)的舒适区。K3 的应对:归一化 LatentMoE(RMSNorm)+ SiTU-GLU(有界激活)+ QB——三件套,Day 6 逐个拆。

5规模定律:为什么「越大越划算」?

你可能会想:既然每次只算 104B,那干脆把 2.8T 砍成 104B 的「小模型」不就行了?——答案是不行。这就引出了 AI 领域最著名的经验规律:规模定律(Scaling Law)。

它的内容一句话:模型越大 + 数据越多,模型的「聪明程度」涨得比花的钱快——也就是说,同样的成本,造一个大模型比造几个小模型更划算。

规模定律:同样算力下 K3 比 K2 损失更低(2.5× 效率) 横轴训练算力,纵轴损失;K3 曲线整体低于 K2,同样算力损失更低 规模定律:同样烧钱,K3 比 K2 学到更多 训练算力 → 损失(越低越聪明)→ K3(新架构) K2(上一代) 同一笔算力 → K3 损失更低 报告原文:这些改进合计带来相较 K2 约 2.5× 的整体「规模效率」提升——同样的钱,多学 2.5 倍
图 5 · 规模定律曲线(示意):横轴是训练花的算力,纵轴是「损失」(越低越聪明)。曲线整体向下:烧的钱越多,模型越聪明。关键在于 K3 的新曲线(蓝实线)比 K2(灰虚线)更低——同一笔算力,K3 的损失明显更低,这就是报告说的「2.5× 规模效率」:同样的钱,多学到 2.5 倍的东西。

K3 的 2.5× 从哪来?不是单靠 MoE,而是 KDA(Day 3)+ 混合注意力 + Stable LatentMoE(今天)+ 数据与训练配方 的合力。报告为此专门重做了一轮「规模定律研究」,重新调了学习率、批量大小等旋钮——因为架构改了,最优训练区间也变了。

为什么「越大越划算」?直觉版本:小模型学「苹果是水果」要用掉 100% 的脑容量;大模型学同样的知识只用 1% 的脑容量,剩下的 99% 还能学别的。知识的「公共部分」(语言规律、常识)在更大的模型里被摊薄了——所以大模型的「每分钱聪明度」反而更高。
进阶小注 ·经典 Chinchilla 式规模定律:最优模型尺寸与数据量应近似按比例同步增长(算力翻 100 倍,参数和数据各翻约 10 倍)。K3 的规模定律研究在留出 OOD 验证集上重调了 batch size、学习率、token/参数比(TPP)与模型形状,确认余弦调度在其最优超参下优于 WSD。2.5× 规模效率 = 在固定算力预算下达到更低的验证损失。

6训练时的难题:896 个专家怎么放上几百张显卡?(MoonEP)

MoE 省的是「每次计算」,但训练时有个基建难题:2.8T 参数、896 个专家,任何一张显卡都装不下,必须拆开放到几百上千张卡上。卡与卡之间怎么配合?这就叫专家并行(EP)。

MoonEP:896 个专家分布到多张 GPU 卡上 专家分散在多张卡,token 需要 all-to-all 通信找专家,MoonEP 保证每张卡负载完美均衡 训练:专家分放在很多张卡上,token 要「跨卡串门」 卡 1(专家 1~224) 卡 2(专家 225~448) 卡 3(专家 449~672) 卡 4(专家 673~896) token 要问的专家 可能在别的卡上 token 要问的专家 → 跨卡传送(all-to-all) token 要问的专家 → 跨卡传送(all-to-all) token 要问的专家 可能在别的卡上 MoonEP:把专家分布安排得「完美均衡」,每张卡接到的活一模一样多,通信也提前算好形状(零拷贝) 如果负载不均,卡 1 忙到冒烟时卡 4 在摸鱼 → 整批训练被最慢的卡拖住。QB(§3)+ MoonEP 一起保证不拖后腿
图 6 · 专家并行与 MoonEP(简化示意):896 个专家分放在许多张卡上。一个 token 被路由器点名的 16 个专家可能分布在不同的卡上,数据要「跨卡串门」(all-to-all 通信)。MoonEP 的价值:① 让每张卡接到的活完美均衡(配合 QB);② 通信形状静态可知,能用零拷贝手段;③ 共享专家每张卡都复制一份,随叫随到。这样几百张卡才能同时高效干活。
进阶小注 ·MoE 训练的两大通信挑战:dispatch(token 发给专家所在 rank)与 combine(专家结果聚合回来)。MoonEP 以静态计算形状与零拷贝通信实现完美均衡的专家执行;共享专家在各 EP rank 复制,all-to-all 与计算重叠以隐藏延迟。负载不均会拖慢整体(木桶效应),这也是 QB 存在的系统层面理由。

7映射到 K3:原文里怎么说 MoE 的?

今天的四个关键词(896 专家、16 激活、QB、2.5×)都能在报告里找到原话:

K3 原文(§2.3 Stable LatentMoE)
「这使 Kimi K3 能够将通道混合扩展到 896 个路由专家、每个 token 激活 16 个专家,对应稀疏度为 56。」

逐词翻译:「通道混合」= 一层里 896 路专家并行处理;「每个 token 激活 16 个」= 每个字只叫 16 个专家;「稀疏度 56」= 16/896 = 1/56,其余专家这轮休息。一句话:K3 的知识抽屉有 896 个,每次只开 16 个。

K3 原文(§2.3.3 Quantile Balancing)
「负载均衡通过向用于 Top-k 选择的路由器分数加入专家专属偏置 b_j 来实现……(QB)根据与目标负载匹配的路由器分数分位数来设定每个专家的偏置。」

逐词翻译:给每个专家加一个「偏置分」(冷门加分、热门减分);偏置的大小,是拿「路由器分数排到第百分之多少的位置」(分位数)算出来的——保证每个专家正好接满「目标负载」q 个 token。不吵架、不偷懒。

K3 原文(§3.2 规模定律)
「这些改进合计带来了相较 Kimi K2 约 2.5× 的整体规模效率提升。」

逐词翻译:「这些改进」= KDA + 混合注意力 + Stable LatentMoE + 数据和训练配方(不是任何单一技术);「2.5× 规模效率」= 同样的算力预算,K3 的最终聪明程度明显高于 K2——图 5 里那条更低的曲线。

896
路由专家数
(外加 2 个共享专家)
16
每个 token 激活
16 个路由专家
56
稀疏度 = 896/16
≈98% 专家在休息
2.5×
规模效率提升
(相对 Kimi K2)
一句话总结今天的 K3 印象 2.8T 是 K3 的「家底」(知识面),104B 是它每次真花的「钱」(激活成本)。靠 896 专家 + 路由器点名 16 个,K3 做到了又大又省;靠 QB 治住专家偷懒和不均衡;靠 规模定律 说明「越大越划算」——2.5× 效率,就是 K3 的「每一分钱都花得更值」。明天去看:这么大的模型,是怎么一步步「教」出来的?

8自测题(先自己答,再点开看解析)

Q1总参数 2.8T 和激活参数 104B 有什么区别?为什么要这么设计?
总参数 = 模型里存的所有数字,决定知识面(懂得多);激活参数 = 处理每个字时真的参与计算的数字,决定每次成本。如果每次都要算全部 2.8T,又慢又贵。MoE 的设计让「存得下」和「算得起」解耦:全部存着(知识全),每次只算 104B(成本低)——104B 大约是 2.8T 的 1/27。
Q2MoE 里的「路由器」是干什么的?「Top-16」是什么意思?
路由器就像分诊台:每个 token 进来,它给 896 个专家各打一个「相关分」,然后把 token 派给分数最高的 16 个(Top-16)去算。再加上 2 个「全科医生」共享专家(每次都在)。没被点名的专家原地休息,不参与计算、不花钱。
Q3专家会有哪两个「坏毛病」?QB 是怎么治的?
① 偷懒(坍缩):路由器只点少数专家,其他专家永远学不到东西;② 不均衡:热门专家忙死、冷门专家闲死,训练时有的卡冒烟、有的卡摸鱼。QB 的治法:给每个专家配一个「偏置分」——冷门的加分(更容易被点到)、热门的减分,偏置大小按「分数分位数」算,最后让每个专家的负载一模一样(例如 4,3,1,0 → 2,2,2,2)。
Q4稀疏度 56 是什么意思?为什么 98% 的专家在休息,模型反而更强?
稀疏度 56 = 896 个专家里只激活 16 个(16/896 = 1/56),约 98% 的专家在休息。模型反而更强,是因为专家总数决定知识覆盖面:896 个「知识抽屉」比 16 个抽屉装得多,每个专家还能更专(一个专家只钻研一个小领域)。休息只是「这次没轮到」,训练中每个专家都被点过名、都练过。
Q5「2.5× 规模效率提升」是什么意思?它来自哪一项技术?
意思是:花同样的训练算力,K3 学到的比 K2 多 2.5 倍(损失曲线更低)。它不是任何单一技术的功劳,而是 KDA + 混合注意力 + Stable LatentMoE + 数据与训练配方 的合力。因为架构改了,K3 团队还专门重做了一轮规模定律研究,重新调了学习率、批量大小等超参数。
返回课程首页 · 本课程基于《Kimi K3 技术报告》编写,概念图均为原创示意