一、一百二十八位师傅,活反而出不来了

青州城的百工坊,天下闻名。

说是"百工",其实是实数——一百二十八位匠人,三十六行手艺。木匠、铁匠、皮匠、陶匠、漆匠、银匠、石匠、织匠……凡是你叫得出名字的手艺,坊里都有,而且每行至少三四位师傅。

外地客商来订货,常说一句话:"只要是百工坊出来的东西,拿到哪里都卖得上价。"

但今年开春,百工坊差点砸了招牌。

江宁布商陈老板订了三百套嫁妆箱——红木底、铜角包边、皮革衬里。订金八十两,交货期谷雨。

谷雨那天陈老板来取货,坊主邢百川却拿不出东西。

"陈老板……再宽限十天。"

"十天?"陈老板把订契拍在桌上,"江宁那边迎亲的日子都定了,你让我拿什么送到人家府上?"

邢百川涨红了脸,说不出话。

不是匠人不卖力。恰恰相反——一百二十八位匠人,没有一个闲着的。问题就出在"一百二十八"这个数上。

坊里接一件活,老规矩叫"过堂":十六位首席师傅先坐下来议。议完了,木匠去开料、铁匠去打铜件、皮匠去裁衬里、漆匠去调色——一件活,少说要动二十几个人。

二十几个人还不算完。每道工序之间要会签——木匠做好了底,得铁匠看过、皮匠点头、漆匠确认,才能往下传。

当年坊里只有三十几位匠人的时候,这规矩运转得挺好。后来名气大了,匠人越招越多——六十四、九十六、一百二十八——活也越来越多,但"人人过手、道道会签"的老规矩纹丝没动。

徒弟阿简有一天晚上给邢百川端洗脚水,小声说:"师父,咱们一百多号人,怎么比从前三十号人出的活还慢?"

邢百川把脚泡在热水里,没回答。

"阿简,你把这两年的工簿搬来。"

十二本工簿,摞起来有一尺多高。邢百川翻了一夜。天亮时,他在一张桑皮纸上写了三行字:

三十人时,每人每天做自己手艺的时间占七成。
一百二十八人时,不到四成。
人多不添力,反而添乱。

他把笔一搁:"去,把八位行首叫来。"

二、每件活只派两个人

八位行首挤在邢百川那间不大的账房里,凳子都不够坐。

邢百川把桑皮纸往墙上一贴。

"诸位,百工坊做了三十年。规矩是当年三十六人定下的。现在一百二十八个人,再按老规矩走,招牌早晚要砸。"

铁作行的赵师傅是个急脾气:"那你说怎么办?总不能把匠人辞退一半吧?"

"不辞。改规矩。"

他翻过桑皮纸,背面墨迹未干:

一、从今往后,每件活只派两位匠人。一主作,一副作。

二、谁来派?我来派。

三、派错了算我的。

账房里安静了半盏茶的工夫。

木作行的陈师傅先开口:"老邢,一件嫁妆箱——木工是骨架、铁工是包角、皮工是衬里、漆工是面子。你只派两个人,另外两门手艺怎么办?"

"说得对。"皮作孙师傅接话,"而且你凭什么派?你怎知道三百套嫁妆箱该派谁?万一派错了呢?"

邢百川也不急。他从抽屉里取出一本厚册子,封皮上三个字——"工性簿"

"这本册子我记了七年。坊里每一位师傅——一百二十八位——在这上面都有三页。"

他翻开了第一页。

"铁作赵师傅。主手艺:打铁、淬火。副手艺:懂木工尺寸、能看图纸。经手记录:农具类一等,兵器类一等,精细铜件类一等。不适合:皮件缝制、漆面抛光。"

翻到另一页。

"陶作周师傅。主手艺:制陶、上釉。副手艺:懂配色调色。经手记录:日用陶一等,装饰瓷一等。不适合:金属加工、木料开榫。"

他一页一页翻。每一页都是工整小楷,每一行都清清楚楚。

"我凭什么派?"邢百川合上册子,"凭我知道你们每一个人——能做什么、不能做什么、做到什么程度。七年,一千二百多件活,每一件的成品我都记了。不是我信口开河,是你们交出来的活自己告诉我的。"

织作刘师傅小声问:"那第一个问题呢?两个人做不全怎么办?"

"问得好。做不全是事实。但只要我派的这两个人——一主一副——加起来能把最关键的工序做了,剩下的用'标准件'。"

"什么叫标准件?"

"皮衬里、漆面这些,提前做好一批放在库房里,用的时候直接取。尺寸我都写清楚了。不是每一件活都要从头量、从头裁。你孙师傅一次做三十套标准皮衬里,每一个都一样,比每件都重做一遍质量更稳。"

孙师傅想了想,不吭声了。

邢百川放下工性簿,看了看八位行首。

"老规矩为什么慢?不是你们手艺不好。是因为一百二十八个人,每件活都要摸一下。打铁的去看木匠的榫头平不平,皮匠去量铜角的尺寸对不对——人是都看了,但真有用的眼睛有几双?一个皮匠看木工活,能看出什么?不过是走过场。"

"新规矩只让该看的人看。该做的人做。"

账房里沉默了一会儿。赵师傅第一个点了头。

"试试。"

三、门房里的那支竹签

规矩定了,最难的不是规矩——是执行。

邢百川开始坐门房。每天天不亮,搬一把竹椅坐在坊门口。来一件活,他先看三样:什么料、什么用途、什么尺寸。看完在心里过一遍一百二十八位匠人的"三页纸",然后用竹签蘸朱砂,在二指宽的纸条上写两个名字。

"拿着,去东三间找老赵。副作找木工老陈。"

头一个月,一塌糊涂。

有时候人选得不对——一件精细银器,派了擅长打大件银锭的师傅,做出来粗了三分。

有时候漏了关键手艺——一件镶螺钿的漆盒,只派了漆匠和木匠,忘了螺钿得银匠来镶。做到一半临时加人,乱上加乱。

但邢百川有一个谁也比不了的习惯:记错

每派错一次,他就在工性簿上补一行。不涂改,只追加。那位银锭师傅的页面上,原先写着"精细件二等",实际做下来发现不行,他就加一行小字:"七月十四,精细银器,三等。改。"

阿简问:"师父,您都改了多少回了?"

"一千二百多回。"

"那……那不正说明您派得不准吗?"

邢百川摇头:"说明我在学。"

到了第三个月,纸条开始准了。

一件雕花樟木箱——主作木匠老陈,副作漆匠老吴。老陈雕工一等,老吴漆面一等,两人搭档,出来的箱子比从前二十几个人会签做出来的还漂亮。

一件铜胎掐丝珐琅——主作银匠老郑,副作陶匠老周。老郑的掐丝功夫坊里独一份,老周的釉色调配没人比得上。客人收货后加了二十两赏钱。

更让人服气的是快。从前一件嫁妆箱从接活到出货,过二十几个人的手,至少十四天。现在两个人,七天。

赵师傅有一天在饭堂里说了一句:"老邢这人,别看他坐在门房不动弹。他比咱们谁都清楚——谁的刀往哪儿砍最顺手。"

四、淘汰比选择快

又过了一个月,阿简忍不住问出那个问题。

"师父,您这本工性簿,上面的东西到底是怎么来的?您问过每一位师傅'你擅长什么'吗?"

邢百川正在喝茶,把杯子搁下。

"从头到尾,我只记了一种东西——你们交出来的活,成品什么样。"

他翻给阿简看。上面没有任何人的"自述",只有一行一行的记录:

四月初三,铁犁头,一等。
四月十一,铜锁扣,一等。
四月十九,铁锅,二等。
四月二十六,银簪,三等。赵自请下回不接银器。

"看到了吗?我没问过赵师傅'你擅长什么'。我只记了他每一件活的结果。做了上百件之后,他擅长什么、不擅长什么——活自己会说话。"

阿简恍然大悟:"所以三页纸是'算'出来的,不是'问'出来的。"

"对。而且越做越准。每多一件活,就多一行证据。"

阿简想了一会儿:"那派活的时候呢?您怎么眨眼之间就选出两个人?"

邢百川笑了:"你来试试。"

他递过一张新订单:黄花梨首饰盒,巴掌大,镶银丝,衬绸缎。

"你派谁?"

阿简翻了半天工性簿,急得满头汗。一百二十八个人,怎么也找不到"首饰盒"这个分类。

"师父,我找不到……"

"你当然找不到。首饰盒不在我的分类里。但它在三个分类的交界——木工、银工、织工。你看:主体是木,主作必须是木匠。卖点是'镶银丝',得找银匠里做精细件的。衬绸缎不是关键,找织工做标准件就行。"

他拿过竹签,两秒写完了:"木作老陈(主),银作老郑(副)。"

"你不是在工性簿里找'首饰盒'三个字。你是在心里拆这只盒子——什么料?什么手艺最要紧?什么手艺可有可无?拆开了,你就知道该找谁。"

阿简若有所思:"所以您不是在一百二十八个人里选……"

"对。我是在一百二十八个人里,先淘汰一百二十五个不对路的——剩下三个,再从三个里选两个。"邢百川把竹签搁回砚台边。

"淘汰比选择快。把不对的人排除,剩下的就是对的。"

五、屏风

那年入秋,百工坊不只恢复了名声——比从前更响了。

客商们发现,百工坊的活不但没降品质,反而更精细了。以前二十几个人做一件,各人有各人的手劲,出来的东西总有一种"拼凑"感。现在两个人从头到尾一个路子,浑然一体。

更让客商高兴的是快。从前一批货等一两个月,现在七八天就取。

腊月算总账:全年出货量翻了将近三倍。匠人工钱涨了四成。退货率反而降到三十年来最低——不到半成。

年底那顿酒,木作陈师傅举杯问邢百川:"老邢,你跟我们交个底。这套规矩到底好在哪里?"

邢百川放下筷子。

"以前是人人过手。什么叫人人过手?就是让皮匠去看木匠的榫头平不平,让陶匠去量银器的成色。名头上都过了手,真有用吗?一个皮匠看木工活,能看出什么?不过是图个心安。"

"现在不一样。木匠的活,让一个懂木工的铁匠去看——他懂尺寸、会看图,他的每一眼都有用。剩下那一百二十几个不该看的人,去干自己该干的活。"

他端起杯子:

"不是人多力量大。是对的人在对的地方,力量才大。"


转过年来,出了一件事,让阿简彻底服了。

一个外乡客商拿了张刁钻的订单坐在坊门口不走——"百子贺寿"银丝屏风,十二扇,每扇三尺高。每扇的镂空花纹都不一样,但拼在一起得是一幅完整的画。

整个青州城没有第二家敢接。

邢百川看了一眼,写了张纸条:"银作老郑(主),铁作老赵(副)。"

阿简探头看了看,小声说:"师父,赵师傅是打铁的,屏风是银丝活……这不对路子吧?"

"你只看到不对路。你想想——十二扇拼成一幅画,最难的功夫在哪儿?不是掐银丝,是算比例。每扇花纹不一样,拼在一起必须严丝合缝。全坊上下,谁的尺寸感最准?赵师傅。他打了三十年铁,眼力比尺子还准。"

"这件活,银丝手艺第一要紧,尺寸精准第二要紧。老郑解决第一个,老赵解决第二个。"

屏风做了四十天。交货那天,十二扇一字排开——十二幅银丝牡丹,连成一条完整的缠枝牡丹图。接缝处天衣无缝。

客商当场加了一百两赏钱。

阿简在后面看着,想起师父说过的那句话——"淘汰比选择快"。他忽然明白了另一件事:师父那张纸条上永远只写两个名字。但这两个名字背后,是一百二十八个人的全部本事——被一根竹签精准地钓了出来。

那天晚上,阿简端洗脚水的时候问了最后一个问题。

"师父,这些年您天天在门房坐着。您是在看活,还是在看人?"

邢百川把脚泡进热水里,眯着眼想了很久。

"活是死的,人是活的。分派官的功夫不在纸上——在你心里那杆秤,得把一百二十八个人的斤两,量得分毫不差。"

技术解读

混合专家模型(Mixture of Experts, MoE)是当代大语言模型最核心的架构创新之一。从 2017 年 Shazeer 等人在《Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer》中首次将稀疏门控 MoE 应用于大规模语言模型,到 2024 年 Mixtral 8×7B 以 47B 总参数(仅激活 13B)达到接近 Llama 2 70B 的性能,再到 GPT-4 被广泛报道采用 MoE 架构——稀疏专家混合已经从学术好奇心变成了前沿模型的标配。

MoE 的核心思想简单而激进:与其让整个模型处理每一个输入 token,不如训练多个"专家"子网络,每个 token 只激活其中少数几个(通常 top-2)。这意味着模型的总参数量可以极大(数百亿甚至万亿级),但每个 token 的实际计算量保持在一个较小的常数——在一个追求"更大模型"的时代,MoE 用稀疏性换来了计算效率。

核心概念回顾

概念 通俗解释
密集模型(Dense Model) 传统的 Transformer 模型,每一层的前馈网络(FFN)对所有输入 token 执行相同的完整计算。所有参数都被每个 token 激活
专家(Expert) MoE 层中的一个独立前馈网络(FFN)。不同专家在训练中自然分化为处理不同类型输入模式的"专长"
门控网络(Router / Gate) 一个小型神经网络,接收每个 token 的表示,输出"该 token 应该由哪些专家处理"的概率分布
稀疏激活(Sparse Activation) 每个 token 只激活 top-k 个专家(通常 k=1 或 2),而非全部。这是 MoE 计算效率的来源——参数总量巨大,但单次计算量很小
Top-k 门控 从所有专家中选择门控分数最高的 k 个参与计算。落选的专家对该 token 完全不做计算,输出为零
负载均衡(Load Balancing) 防止门控网络总是选择同几个"热门专家"而忽略其他专家的机制。通过辅助损失函数(auxiliary loss)惩罚不均衡的路由分布
专家容量(Expert Capacity) 每个专家能同时处理的 token 数量上限。超出容量时 token 会被"溢出"到其他专家或直接跳过,防止某专家因 token 过多而成为瓶颈
软合并(Soft MoE) 不进行硬性离散选择,而是对多个专家的输出做加权求和,权重由门控网络给出——梯度更平滑但计算量更大
条件计算(Conditional Computation) MoE 所属的更大的研究范式:根据输入动态决定激活网络的哪些部分,而非固定执行全部计算
专家专业化(Expert Specialization) 训练过程中自然出现的现象:不同专家逐渐偏好处理不同类型的 token(语法型、语义型、特定领域型等),无需手动指定

故事中的隐喻对照

故事元素 映射的技术概念 解释
百工坊(一百二十八位匠人) MoE 层(128 个专家) 匠人数量对应专家数量。经典 MoE 配置中每层可有数十到数百个专家
每位匠人的独特手艺 专家专业化 不同专家在训练中分化出不同的"专长"——有的擅长处理语法模式,有的擅长事实知识,有的擅长推理
邢百川(坊主/分派官) 门控网络(Router/Gate) 门控网络是一个轻量级路由模块,接收 token 表示后输出 top-k 专家选择。邢百川坐门房看订单选匠人,正是这个角色
订单(料、用途、尺寸) 输入 token 的隐藏表示 每个 token 经过嵌入和注意力层后,得到一个向量表示——这个向量就是门控网络"看"的订单
工性簿(七年记录) 门控权重矩阵 / 专家嵌入 门控网络的可学习参数 W_g,通过与 token 表示做内积来为每个专家打分。这些参数在训练中通过反向传播和梯度下降不断更新
"活自己会说话" 端到端训练 专家分配不是人工指定的,而是在大量训练数据上通过优化最终损失函数自动学会的——路由决策由梯度驱动
每件活只派两个人 Top-2 稀疏门控 经典配置:每个 token 只激活门控分数最高的 2 个专家。其余专家对该 token 完全不参与计算
"淘汰比选择快" 稀疏激活的计算效率 门控网络不需要精确选出"最好的专家",只需要快速排除不相关的 90%+ 专家,在剩余的小集合中做精确选择
标准件(预制的通用部件) 共享专家 / 残差连接 某些基础功能对所有 token 通用,不需要走专家路由——对应 MoE 中的共享专家或绕过 MoE 层的残差路径
"派错了算我的" 辅助损失(Load Balancing Loss) 当路由分布不均(某些专家被过度使用)时,辅助损失施加惩罚,推动门控网络更均匀地分配 token
一千二百次改错记录 训练迭代中的梯度更新 每一次"派错"(路由不当导致输出质量差)产生梯度信号,微调门控权重,使后续路由更准确
从十四天到七天 稀疏 MoE 的计算效率提升 相比密集模型,MoE 在相同计算预算下可以支撑更大的总参数量,或在相同总参数下大幅降低单 token 推理成本
全年出货量翻三倍 吞吐量提升 MoE 的总参数巨大但每 token 激活参数小,在推理时比同等总参数的密集模型快得多
屏风订单(十二扇拼一图) 复杂 token 的多专家协同 困难的输入可能需要不同类型的专业知识联合处理——对应某些 token 需要多个专家的加权输出合并
"眼力比尺子还准"(赵师傅的尺寸感) 专家的潜在能力 / 可迁移专长 某些专家的"手艺"可以迁移到表面上不直接相关的任务——类似模型中发现的多语言专家、跨领域推理专家等现象

为什么这个故事对应混合专家模型(MoE)?

  1. "每件活只派两个人"是 MoE 稀疏激活的核心设计。 Shazeer 等人(2017)的关键洞察:与其让一个巨型 FFN 处理所有 token,不如用几十上百个小 FFN(专家),每个 token 只用其中 2 个。参数总量大幅增加,但计算量保持可控——就像百工坊匠人虽多,每件活只需两人。

  2. 邢百川的"工性簿"映射了门控网络的学习机制。 门控网络本质上是一个可学习的路由器——W_g 矩阵的每一行对应一个专家的"能力画像"(嵌入向量),通过与 token 表示的内积计算匹配度。这些画像不是手动填写的,而是在训练过程中通过梯度下降自动形成的——正如工性簿上的记录不是匠人自述,而是由实际成品"算"出来的。

  3. "淘汰比选择快"精确描述了稀疏门控的计算优势。 门控网络不需要精确排序 128 个专家的优劣——它只需要快速排除 120+ 个明显不相关的,在剩余的小集合中做精细选择。在工程实现中,top-k 选择通常通过高效的近似算法完成,计算开销远小于密集模型中的完整前向传播。

  4. 负载均衡辅助损失是防止"几个匠人被累死"的关键。 如果不加约束,门控网络可能收敛到总是选择少数几个"热门专家",导致训练不充分和计算资源浪费。Fedus 等人(2022)在 Switch Transformer 中引入辅助损失函数,惩罚路由分布的不均衡——正如邢百川需要在工性簿中记录并调整每位匠人的接活密度。

  5. 标准件的设计对应了 MoE 架构中的共享组件。 并非所有计算都需要走专家路由。现代 MoE 架构通常保留一个共享的 FFN 或注意力层,让基础模式的处理绕过门控——与百工坊将皮衬里、漆面做成标准件的思路一致:通用的用共享路径,专业的走专家。

  6. 屏风的例子展示了多专家协同解决复杂问题的能力。 当一个输入需要多维度专业知识的组合时,top-k 门控可以同时激活互补的专家——银匠负责银丝工艺,铁匠负责尺寸精准。在模型中,这表现为一个 token 的最终输出是所选 2 个专家输出的加权和,两个专家的知识被"合并"到最终的表示中。

  7. MoE 为"大模型"提供了一种可持续的扩展路径。 密集模型的参数量增长意味着每个 token 的计算成本同比例增长——百工坊三十人变一百二十八人,人人过手的开销让效率暴跌。MoE 通过稀疏激活打破了这种线性束缚:参数量可以轻松达到万亿级,而每 token 的推理成本基本不变。GPT-4、Mixtral、DeepSeek-V2 等前沿模型均采用 MoE 架构,这并非巧合——它是当前"做大模型"最务实的技术路线。

后记:MoE 的智慧在于——它承认一个朴素的真相:没有人是全能的,也没有必要让所有人处理所有事。一百二十八位匠人各有各的绝活,门房里的分派官用七年的时间学会了一件事:把对的人放到对的位置上,让其他的人去做他们该做的事。这或许也是大模型时代最被低估的洞见——真正的规模化,不是把一切做大,而是知道什么时候不该让所有人一起上。坊门口那张竹椅还摆着,每一张新来的订单,都在等那根蘸了朱砂的竹签落下。