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 万册,你查「苹果为什么甜」时,根本不用翻农业、化学、历史全部书架——只翻「植物学 + 食品科学」那几架就够了。
图 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 个共享专家。
图 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,分位数平衡)。思路很朴素:给每个专家发一个「偏置分」(加分/减分),冷门的加分让路由器更愿意点它,热门的减分让路由器少点它——最后让每个专家接到的活一样多。
图 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 门课的模型广。专家越多,每个专家可以越「专」——一个专家只管德语动词变位,练得越精。
图 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)。
它的内容一句话:模型越大 + 数据越多,模型的「聪明程度」涨得比花的钱快——也就是说,同样的成本,造一个大模型比造几个小模型更划算。
图 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)。
图 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 里那条更低的曲线。
一句话总结今天的 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 团队还专门重做了一轮规模定律研究,重新调了学习率、批量大小等超参数。
明日预告 · Day 5
训练一台 K3:从几百万本书到会聊天
预训练=海量阅读 · 教它做事(SFT)· 奖励机制(RL)· 9 个专家怎么合并成 1 个(MOPD)
开始 Day 5 →