# MMLU 训练过半还在乱猜,loss 只用来报警:Zamba2 训练一线实录 > Cognitive Revolution No. 186 中文精读 - 原标题:Training Zamba: A Hybrid Model Master Class with Zyphra's Quentin Anthony - 发布日期:2024-10-30 - 主持:Nathan Labenz - 网页版:https://cogrev.1mmt.com/ep/186-training-zamba-a-hybrid-model-master-class-with-zyphra-s-que-xFU7mf.html - 精读字数:约 5887 字(阅读约 13 分钟) > 本文为 cogrev.1mmt.com 基于原始访谈的 AI 改写中文精读,非官方翻译;引用请注明出处并链接网页版。 训练大模型有个少有人提的怪现象:MMLU 成绩在训练大半程都接近乱猜,直到最后阶段才突然爬升。纯状态空间模型更夸张,FalconMamba 要吃到 3 到 4 万亿 token 才出现这个信号。 这是 Zyphra 模型训练负责人 Quentin Anthony 在播客 Cognitive Revolution 里给出的第一手观察。2024 年 10 月底这期节目,主持人 Nathan Labenz 是创业者兼 AI 投资人,这次请回老搭档 Jason Meaux,后者追 Mamba 论文追到专门建了 statespace.info 网站。三人聊的是 Zyphra 刚发布的 Zamba2 系列,1.2B、2.7B、7B 三个尺寸,全部用 Mamba 加注意力的混合架构。整期节目一半是端侧 AI 的产品判断,一半是训练模型的一线踩坑实录,后者的含金量尤其高。 ## 个性化要烤进权重,云端只当备胎 Zyphra 官网写着一句口号:AGI 的未来是云端加端侧部署,而且会越来越偏向本地推理。Quentin 给出的理由有三层。 最核心的一层是个性化。 > 改系统提示词根本不够,每个人得有自己的一套权重。我们要把「你喜欢被怎么对话」「你最喜欢的餐厅是哪家」这些东西烤进权重里。 他的判断很直接:靠一套统一大模型服务全球用户的公司,做不到对每个人深度定制。Zyphra 的方案是持续学习,白天用激活转向做即时调整,用户说一句「你说话太干了」,模型立刻切换到更活泼的模式,先应付着;晚上手机充电时再跑一轮权重更新,把当天的偏好真正学进去。Anthropic 的金门大桥 Claude 就是激活转向的成名案例,把一个概念灌进激活值,模型满嘴金门大桥。**个性化的终点,是每个人手机里的一套专属权重。** 第二层是隐私。笔记本和手机里有大量数据用户不想传云端,企业更不想把私有代码喂给第三方 API。第三层是钱,头部实验室推理模型的资本开支靠风投撑着,撑不了永远。如果每台设备都能高效跑自己的模型,这笔账就转给了用户,还白赚离线可用和更低延迟。 主持人 Nathan 正好有个切身的例子。他想让模型模仿自己的写作,用 GPT-4o 微调,风格能学个七八成,事实记不住;换成 5 万 token 的系统提示词塞满个人资料,幻觉照旧。Quentin 的回应是,风格学得动、事实学不动很正常,他压的宝是持续预训练:模型小到在消费级硬件上更新权重很便宜,用 LoRA 还能再降一档成本。 分工也讲清楚了。1.2B 给极度受限的设备,4 比特量化后能跑在树莓派和 Jetson Nano 上;2.7B 管质量,做邮件摘要、会议纪要,团队内部微调过的版本效果好到 Quentin 自己都意外;7B 是分水岭,装得进性能好点的笔记本,能想清楚更难的问题,而且**模型自己知道什么时候该去问云端更强的 Oracle**,用户全程无感。产品愿景叫 Maya,一个跨设备的个人云,照片、对话、笔记,共享多少由用户自己定。 ## 一块注意力,全网共用 为什么非得搞混合架构?Jason 把问题掰开了问。 纯 Transformer 在手机上撞两堵墙:内存和算力。KV cache 随序列长度膨胀,一篇长文章喂进去,大多数手机直接爆内存。纯 Mamba 呢,效率拉满,但 Quentin 的原话很直白:他没玩过任何一个纯 SSM 模型能在 in-context learning 上真正像样,基准分能看,实际对话一塌糊涂。 Zamba 的解法来自一个实验发现:**注意力块在深度方向上高度相关**。第 10 层和第 20 层的注意力干的活基本一样,都是告诉 MLP「这些是重要的 token」,真正分工的是 MLP。既然如此,何必存几十份学完都差不多的权重。 于是 Zamba1 只保留一个全局共享注意力块,每 6 个 Mamba 块调用一次,注意力块看到的输入是 Mamba 残差流和原始嵌入的拼接,试过投影回原维度,效果都不如直接拼。Zamba2 稍微放开,2.7B 和 7B 用 A、B 两个共享块交替,再配各层独立的 LoRA,把那一点点跨层差异化补回来。1.2B 参数太紧,维持单块,LoRA 同时挂在注意力和 MLP 上;2.7B 和 7B 只给 MLP 挂 LoRA,实验发现 MLP 的 LoRA 承担了更多分工。 代价是参数反复使用,总计算量上去了。但 Mamba2 的 SSD 算法(Albert Gu 和 Tri Dao 2024 年 5 月发表,给状态转移矩阵加上结构约束,让计算走矩阵乘法,吃满 GPU 张量核心)吞吐量太高,完全盖过这笔开销。结果:**首 token 时间和每 token 生成时间,比同尺寸稠密 Transformer 快 20% 到 30%**,KV cache 调用次数从 30 多次压到 10 到 13 次。 MLP 上挂 LoRA 的理由,Quentin 借用了 CNN 的老规律:网络浅层学通用特征,深层学具体特征,语言模型里承担这个分工的是 MLP。他的类比是,注意力负责记笔记,记下所有 token 之间的关系;MLP 负责消化笔记,挖出深层含义。注意力可以共享,因为笔记大家都要看;MLP 得各层不同,因为每层挖的东西不一样。6 比 1 的比例是纯试出来的,7 和 5 都略差。Mamba 块的状态大小定为 64,更大的状态主要利好长上下文,既然有注意力兜着,这笔开销就省了。 还有个细节,Zamba1 干脆不用位置编码,Mamba 按顺序处理,位置信息已经编码进状态里。Zamba2 加回了 RoPE,长程依赖略有提升,代价是上下文扩展变僵硬,Quentin 自己也不确定这步棋对不对。长上下文是另一条待攻的山头:注意力那边有 ring attention,Zyphra 自己还发了 tree attention,多机场景下更有优势;Mamba 块这边还缺序列并行,训练时激活加输入序列塞不进一张 H100,梯度还得用更高精度存。Jason 试着给 Mamba1 提序列并行的补丁,对着 DeepSpeed 的 Ulysses 库折腾半天,自嘲连 1% 的工作量都没啃下来。Quentin 顺带亮了个态度:他不想让模型像人脑,人脑会忘记自己进房间干嘛,注意力那种跨序列依赖比人脑强,是好事,得留着。 ## Black Mamba 翻车记与 loss 的真面目 Zyphra 最早押的方向另有其人。2024 年 2 月,他们发布 Black Mamba,MoE 加 Mamba,全网最早一批 Mamba 论文之一,当时 Nathan 和 Jason 还数得过来论文数量,如今早已超过 300 篇。 当时的赌注来自 Mamba 原论文里一张图:Mamba 加 MLP 的混合模型,每 flop 的 loss 看着不错。他们赌注意力那些昂贵的跨序列依赖可能根本不需要,MoE 的稀疏激活又能把推理成本压到地板上。结果训练完发现,**Mamba 自己记的笔记不够富,撑不起 in-context learning**,MMLU 一直起不来。这个模型最后作为实验品公开,没有继续往下走。 这期节目里普适价值最高的观点,是 loss 和模型质量的脱节。Quentin 说得干脆: > loss 根本算不上有用的质量指标。我拿它检测尖峰,判断模型是不是训死了,再看它有没有在平台期卡住。其他一切都靠评测。 loss 的绝对值取决于数据噪声,降到 3 还是 2 没有可比性;学习率不够激进时它会直接躺平,那才是真正的警报。评测则各司其职。HellaSwag 像平滑版的 loss,线性爬升,测基础语言能力。MMLU 是涌现指示器加数据污染探测器,它要求模型用一个字母作答,模型得先理解「一个字母要概括全部背景知识」这件事,所以大半程都是随机的,然后突然起飞;要是 MMLU 提前暴涨,多半是训练数据混进了考题。ARC 测事实召回。最后还得靠 vibes 问题集:让模型扮演海盗,看它能不能坚持住。**Phi 那类模型演两句海盗就穿帮,这种毛病基准分看不出来,实际使用一秒露馅。** 他还警告了合成教科书数据的陷阱:全拿它训练,评测分数暴涨,但模型说话又干又硬,微调都微调不动,因为模型默认了数据分布就该那么干净。 ## 优化器玄学:Adam 的护城河是没短板 关于涌现,Quentin 的猜测很实在:模型需要海量 token 去 grok「原来存在这类要按指令作答的数据」,同时学习率要沉降到损失盆地里,才能做细颗粒度的调整。MiniCPM 的做法佐证了后半句,长时间恒定学习率,最后快速退火到 0,质量收益几乎全在退火阶段兑现。 优化器方面,Zyphra 试过 Sophia,最终留在 Adam。Adam 未必最优,但胜在没有致命短板。Adafactor 这类优化器可能在某些设置下更好,也可能直接不收敛,一个奇怪的超参数组合能让你耗上三周。Quentin 宁可第一天就把训练跑起来,多喂 token,终点照样更低。 他讲了在 EleutherAI 训 Pythia 时的往事:大 batch 反而训崩。按理说 batch 越大梯度越准,怎么想都不对劲。事后复盘才看懂,batch 变大的同时学习率也调大了,batch 里混着几个离群样本,把梯度踹错方向,大学习率再迈一大步,连续几个坏 batch 就彻底发散。小 batch 加梯度裁剪才是当时的解。**每个训练 run 都有自己独特的死法,这是他原话的意译。** MoE 更难伺候。注意力块看全量 batch,专家块只看分到的子 batch,两者的梯度噪声尺度根本不一样,batch size 调大顾此失彼。Black Mamba 难训,一大半是这个原因。混合架构也有类似问题,共享注意力块见的数据比 Mamba 块多,超参数这碗汤,端得平就活,端不平就死。 ## 大厂捂着的牌,和小公司的活法 Nathan 问了个尖锐问题:Anthropic 泄露的融资材料说 2025、2026 年头部公司可能领先到没人追得上,OpenAI 又被曝用 o1 给下一代模型造数据,飞轮越转越快,小公司怎么活? Quentin 先摊开大厂的牌。退火曾经是机密,两阶段训练:第一阶段在嘈杂的网页数据上标准余弦退火;第二阶段换成 500 亿到 1000 亿 token 的精筛数据,学习率先快速回温再猛降到 0,数据干净所以扛得住大学习率,把高质量分布狠狠烤进去,中间还要掺第一阶段数据做回放,防止灾难性遗忘。退火这个词借自金属加工,加热后缓慢冷却,材料定型,Nathan 在节目里专门问了词源,Quentin 指了他们开源的 cookbook。这套流程 Zyphra 在 Zamba1 时期就独立摸了出来;在大厂那边它一度是机密,靠 Llama2、Mistral 的人才流动才散开。Zamba2 把退火集翻倍、第一阶段数据翻了三倍,总共 3 万亿 token;Zamba1 当年 1 万亿 token 的成绩,能追平别人 5 万亿到 15 万亿训练量的模型。 蒸馏是现在的新机密。合成数据只是穷人版蒸馏,只取大模型输出的最大值。真蒸馏要用完整 logits 分布,那些接近 0 的值告诉小模型大模型没在关注什么。问题是每一步训练都要跑一遍 Llama 405B 的前向,成本贵到不如直接训大模型。Quentin 的判断很清醒:**大厂要么找到了便宜的做法,要么单纯烧得起。两条路的答案指向同一个动作,小实验室必须把便宜的做法搞出来。**他猜微软做 Phi 时直接调自家的 GPT-4,钱多到不用算这笔账。 还有一串捂着的牌。数据清洗要人要时间,开源社区永远慢一拍,好在 NVIDIA 的 NeMo Curator 这类工具把门槛拉低了,DCLM、FineWeb、Dolma、Zyda 这些开放数据集也都在进步。muTransfer 那套超参数迁移,30 到 40 页数学劝退所有人,原理倒不复杂,在小宽度模型上调好学习率和 batch size,除以宽度缩放因子直接迁移到大模型,Cerebras 团队正和 Zyphra 一起啃混合架构上的移植。二阶优化器怎么切分到多卡,Gemma 只说「我们用了二阶优化器」,细节免谈。Llama3 的四维并行拓扑、checkpoint 备份节点的基础设施,全是拿真金白银的训练喂出来的经验。Llama1 当年全公开,社区用 RedPajama 完整复现了数据管线;Llama2 开始不公开数据,原因就是退火。 最反直觉的一条关于模型尺寸。GPT-3 论文里的隐藏维度全是 2 的幂,词表取 64 的倍数,大家抄了几年配置,没几个人知道这是为了 GPU 上的 kernel 路径效率。再往深走还有 wave quantization:H100 上 100 个流式多处理器,100 份工作一个时间步干完,101 份就要两个时间步,吞吐直接腰斩。**把模型尺寸对齐到硬件的波节上,整个生命周期都在白捡速度。**Zamba 的尺寸就是这么定的,多核 CPU、Apple 芯片、各家 GPU 通吃。 大厂为什么不碰混合架构?Quentin 说得很透:他们的任务是产出质量最高的模型,Claude Sonnet 3.5 只要比对手好一点点就能拿走市场份额,没人愿意为一个大模型才能验证、还可能拖累质量的架构赌成本。小模型是被大厂战略性忽略的地带,这就是 Zyphra 的生存空间,前提是不停找小模型的下一个 free lunch,二阶优化器、便宜蒸馏,一个都不能停。Quentin 说 7B 能做到同级别最好,靠的就是这个生态位。 中间还有段插曲。Nathan 兴冲冲问起最近很火的 Entropix,Quentin 一开始把它当成训练侧的优化器,说 Tim Dettmers 在更大参数规模上试过类似思路,没比 Adam 好,还怀疑它只在 NanoGPT 那种玩具设置里有效;Nathan 描述的却是推理侧的自适应采样,模型自信时直接取最大概率,困惑时主动插一个澄清问题,甚至回滚重推。两人鸡同鸭讲了几轮才对上。Nathan 顺势提议把采样函数学进架构里,Quentin 认同值得一试,还补了一句:大模型靠规模自己学会挑数据,小模型需要显式流程来加速模仿这个行为。 至于整个领域走到哪了,Quentin 的答案是还早得很:scaling 的极限没找到,架构的极限没找到,各家训练论文里大量东西在被重复发明,还有一堆被隐式发现却没人公开的规律躺在那里。 ## 明天就能做的事 这期节目没有惊天结论,胜在每一条都带着实验痕迹。能直接拿走的东西: - **想试端侧个性化**:Hugging Face 搜 Zamba2,1.2B 到 7B 权重都在,下载后用自己的邮件和文档做持续预训练,Quentin 确认这条路今天就能走,只是还没做到一键。 - **在训模型的人**:把 loss 只当故障灯,另建一套 vibes 问题集,海盗角色扮演和数数题比基准分更早暴露问题;MMLU 大半程是随机属正常,提前暴涨反而要查数据污染。 - **定模型尺寸时**:隐藏维度取 2 的幂,词表取 64 的倍数,一行代码的事,全生命周期受益。 - **做产品设计的人**:记住 7B 这个分水岭,端侧小模型的核心能力是知道自己什么时候不行,该去问云端;个性化别再堆系统提示词,考虑夜间持续学习加激活转向的组合。 Quentin 留了一个展望:混合架构的终局可能是一个统一块,自己决定记多少笔记、做多少投影,动态注意力说了算。在那之前,每 6 层调用一次的注意力块,和每个 run 独有的死法,就是当下的现实。