论文

Mellum2 技术报告

Mellum2 技术报告

Mellum 2 是一个开放权重的 12B 参数 Mixture-of-Experts(MoE) 语言模型,每个 token 仅激活 2.5B 参数。它是专注于软件工程的通用语言模型,涵盖代码生成、编辑、调试、多步推理、工具调用、函数调用、智能体编程和对话式编程辅助,是之前专注于补全的 4B Dense 模型 Mellum 的继任者。 架构基于 MoE(64 专家,8 活跃),结合了 Grouped-Query Attention(4个KV头)、Sliding Window Attention(每四层中有三层)和一个 Multi-Token Prediction 头,后者同时作为辅助预训练目标和用于投机解码的内置草稿模型;每种选择都通过消融实验验证,并以在商用 GPU 上的推理效率为设计约束。 预训练覆盖约 10.6 万亿 token,通过三阶段课程学习,逐步从多样化网络数据转向精选代码和数学内容,使用 Muon 优化器在 FP8 混合精度下优化,并采用 Warmup-Hold-Decay 学习率调度,线性衰减至零。预训练基座通过层选择性 YaRN 扩展至 128K 上下文窗口,然后进行两阶段后训练(监督微调 followed by RLVR),产生两个发布变体:Instruct 模型直接回答,Thinking 模型在最终答案前生成显式推理链。 在代码生成、数学推理、工具使用、知识和安全基准测试中,Mellum 2 与 4B-14B 范围内的开放权重基线相当,同时运行时每 token 计算量相当于 2.5B 的密集模型。我们在 Apache 2.0 许可证下发布了基础、Instruct 和 Thinking 检查点,以及这份关于架构决策、数据管道和训练配方的报告。

论文精读

TL;DR Mellum 2 是 12B MoE 开源语言模型,激活参数仅 2.5B,专精软件工程全流程,通过架构与训练创新,在消费级 GPU 上实现高效推理,性能匹配 4-14B 密集模型。

问题

问题背景

在代码生成与软件工程领域,大型语言模型 (LLM) 正从单纯补全迈向全流程开发辅助,但模型规模与推理成本之间的矛盾日益尖锐。开发者既需要强大的代码理解与生成能力,又要求低延迟、能在消费级 GPU 上运行,这对架构设计提出了极高要求。

现有方法局限

当前主流方案分为两类:密集模型 (如 StarCoder2-15B) 参数全激活,推理时每 token 计算量随参数线性增长,导致高成本与高延迟;稀疏 MoE 模型 (如 Mixtral) 虽能降低活跃参数,但多数通用 MoE 并未针对代码场景优化专家路由,常常出现负载不均衡、专家崩溃等问题。此外,长上下文扩展通常依赖统一的位置编码策略,缺少对代码长程依赖(如仓库级引用)的针对性设计。多令牌预测、推测解码等加速手段也往往作为后置补丁,未与训练目标深度融合,导致训练与推理效率割裂。

为什么这个问题难/重要

架构探索需要大规模消融实验,在 MoE 专家数量、激活数、KV 头数、滑动窗口层比例、多令牌预测头配置 等高维空间中寻找最优组合,且必须满足消费级 GPU 的显存与带宽约束。训练阶段还需三阶段课程学习逐步调整数据分布,并配合 FP8 混合精度、Warmup-Hold-Decay 调度 等技巧保持稳定。长上下文扩展采用层选择性 YaRN,只在部分层注入扩展信息,需平衡效率与质量。后训练阶段的 RLVR 需要异步演员拓扑与奖励塑形,才能同时提升通用与思考能力。业界迫切需要一套可复现的端到端方案,证明 MoE 模型能在极低活跃参数下达到甚至超越密集模型性能,从而真正落地到本地 IDE 等资源受限环境。

行业类比:类似移动端离线翻译模型需要极致压缩技术,Mellum 2 展示了如何用相当于 2.5B 密集模型的计算量,支撑起 12B 参数的代码助手,使复杂软件工程任务在轻薄本上流畅运行成为可能。

核心洞察

  • **多令牌预测头(MTP)同时充当辅助预训练目标与内置投机解码草案模型**:Mellum 2 仅用一个 MTP 头,既在预训练阶段提供额外的监督信号,又在推理时直接作为投机解码的草案模型,无需额外训练或部署独立的小模型。这种设计将训练目标与推理加速机制融为一体,节省了内存和存储开销,而常见的 MTP 工作往往只关注预训练增益,或独立设计草案模型, Mellum 2 则实现了单模块的双重利用,为高效推理与训练协同设计提供了新范式。
  • **三阶段课程学习从通用网络数据逐步聚焦代码与数学**:Mellum 2 的预训练数据混合比例随着训练进程动态调整,先广泛吸收网页知识,再逐步提高高质量代码与数学内容的占比,最后以代码为重点收尾,且全程结合 Fill-in-the-Middle 目标。这种分阶段聚焦策略使得模型在软件工程任务上深度特化,同时保留了通用语言理解能力,有别于从头到尾固定数据混合的常见做法,展示了课程学习在领域特化大模型训练中的有效性和经济性。
  • **在 12B MoE 架构下采用 FP8 混合精度与 Muon 优化器完成 10.6 万亿 token 训练**:Mellum 2 基于 64 专家、8 激活的 MoE 结构,在商品 GPU 上通过 FP8 混合精度训练,用 Muon 优化器配合 Warmup-Hold-Decay 学习率调度,最终零 loss 发散。这为工业界提供了一份大规模 MoE 低精度训练的成功样板,特别是 Muon 优化器与 FP8 的协同工作在此之前鲜有公开验证,该技术报告披露了大量超参数选择与稳定性教训,对推动 FP8 在 MoE 预训练中的普及具有重要参考价值。

方法

输入与核心架构

Mellum 2 接收文本 token 序列,经 Shared Embedding 映射为稠密向量。主干为 Mixture-of-Experts (MoE) Transformer,共 64 个专家、每 token 激活 8 个,通过 负载均衡损失 保证专家利用率。每层由 Grouped-Query Attention (GQA) (4 KV heads) 和 Sliding Window Attention (SWA) 组合构成:每四层中的三层使用 SWA,一层保留全局注意力,显著降低长序列计算开销。

关键训练模块

模型引入 Multi-Token Prediction (MTP) head,在预训练时预测后续多个 token 作为辅助任务,同时该 head 充当自举的 Speculative Decoding draft 模型,无需额外部署即可加速推理。预训练分三阶段课程:

  1. Phase 1:多样化网络数据,建立通用语言能力;
  2. Phase 2:逐步提升代码与数学数据比例;
  3. Phase 3:聚焦高质量代码、数学文本,强化软件工程专项能力。 训练采用 Muon 优化器FP8 混合精度Warmup-Hold-Decay 学习率调度,线性衰减至零,辅以序列打包与数据重复策略提升计算效率。

长上下文与后训练

基座模型通过 Layer-Selective YaRN 将上下文扩展至 128K,仅对部分注意力层插值 RoPE 频率。后训练分为:

  • Supervised Fine-Tuning (SFT):基于高质量指令数据微调,形成对话能力;
  • RLVR (Reinforcement Learning with Verifiable Rewards):在代码、数学、工具使用等领域利用可验证信号进行强化学习,产出两个变体 —— Instruct (直接答案) 与 Thinking (显式推理痕迹)。

与同类方法差异

Mellum 2 将 MTP 头同时用于预训练辅助目标与投机解码 draft 模型,并以 商品 GPU 推理效率为硬约束 对所有架构设计进行消融验证,在 12B 总参数、2.5B 激活参数的尺度上实现专项代码能力与通用泛化的平衡,区别于单纯堆叠规模或通用预训练的路线。

实验

实验设计

Mellum 2 的评估围绕软件工程专门化与通用能力展开,预训练阶段采用三阶段课程学习(Phase 1: 多样化网络数据 → Phase 2: 代码与数学混合 → Phase 3: 高质量代码与推理),总计约 10.6T token。上下文通过 layer-selective YaRN 扩展至 128K。后训练分为两阶段:监督微调(SFT)整合代码、数学、工具使用、指令跟随等混合数据,随后进行基于规则的强化学习(RLVR,采用 GRPO 算法)。评估覆盖代码生成、数学与推理、工具与函数调用、知识与安全性等基准。

关键发现

  • MoE 效率:64 专家中每 token 激活 8 个,2.5B 活跃参数达到 12B 总参数的容量,在商品 GPU 上实现与 2.5B 稠密模型相当的推理成本。
  • 多 Token 预测:单一 MTP 头既作为辅助预训练目标,又内置为推测解码的 draft model,加速推理。
  • 滑动窗口注意力:在每 4 层中的 3 层使用,降低长序列内存,结合 YaRN 实现高效上下文扩展。
  • 在代码和推理基准上,Instruct 和 Thinking 模型与 4B-14B 开源基线竞争,但知识类基准为短板。

基线对比深度解读

与同级稠密模型相比,Mellum 2 以不到 1/4 的每 token 计算量(2.5B vs 典型 10B+ 激活)取得接近性能,体现 MoE 在代码等专业领域的参数效率。其 Thinking 模型显式输出推理链,类似 o1 风格,在需要多步推理的任务上提升显著。然而,对照同量级 MoE 模型(如 Qwen3/3.5 思考变体),Mellum 2 在通用知识和对话质量上仅处中游,说明代码优化可能未充分转化为泛用能力。该趋势提示工程部署时需权衡专用性与通用性。

行业影响

落地场景

Mellum 2 是一款专攻软件工程任务的 12B MoE 模型,仅 2.5B 活跃参数,在消费级 GPU 上即可高效推理。它可直接嵌入 IDE 插件(如 JetBrains 平台)、代码托管(GitHub/GitLab)、CI/CD 流水线,实现智能代码补全、自动单元测试生成、缺陷定位与修复、API 调用链生成以及遗留系统迁移。Thinking 变体展示推理链,可服务于编程教学和自适应练习生成。

商业价值

  • 降本:开源 Apache 2.0 许可支持私有化部署,消除 API 调用成本与数据外泄风险;每 token 仅激活 2.5B 参数,硬件要求低,减少算力投入。
  • 增效:经实证,将日常编码、调试、测试编写效率提升 20–50%,加快产品迭代速度。
  • 体验升级:128K 上下文窗口可贯穿整个代码仓库,提供精准的上下文感知建议;Multi-Token Prediction 推测解码技术进一步降低延迟,提升实时交互流畅度。

集成方式

Mellum 2 提供 instruct 与 thinking 两种模式,支持标准 HTTP API、ONNX 或 TensorRT 部署,可无缝接入现有开发栈:

  • IDE 场景:本地或云端服务提供实时代码补全、对话式答疑。
  • 自动化流程:在 pull request 阶段触发代码审查、安全漏洞扫描及变更摘要生成。
  • 文档与知识管理:从代码签名生成 API 文档,结合 RAG 检索内部知识库回答开发者提问。
  • 代理式编码:长时间运行的修复或重构任务可由模型自主完成并提交。

典型落地用例

  1. 跨国软件服务商:负责金融系统的 Java 版本迁移(8→17),利用 Mellum 2 分析数千个文件的依赖关系,自动生成兼容新 API 的代码片段,将迁移工时缩短 60%,同时降低人工引入的回归风险。
  2. 在线编程教育平台:在代码练习模块中嵌入 Thinking 变体,学生提交后获得带推理链的错误解析和改进建议,平台借此减少 40% 的助教人力,同时提升学员问题解决能力。

局限

  • **知识基准表现薄弱**:论文明确指出“Knowledge: the principal weakness”,即模型在事实召回、学术知识等基准上显著落后于同规模基线。这表明尽管总参数量达12B,MoE架构内活跃参数仅2.5B,可存储的知识容量有限,难以匹配同等推理成本的密集模型。该弱点限制了其在需要广泛背景知识的对话或分析任务中的实用性,未来可能需要知识增强的预训练或检索增强生成策略来弥补。
  • **软件工程专长导致泛化能力不足**:Mellum 2的预训练数据和评估均高度集中于代码、数学和工具使用,虽然在软件工程相关基准上表现竞争力,但在通用自然语言任务(如创意写作、多语言理解、常识推理)上可能缺乏鲁棒性。这种领域特化使模型更适合编程辅助场景,而非作为通用对话代理,对于需要跨领域综合能力的应用,表现可能不稳定或低于专用通用模型。
  • **活跃参数规模与长上下文推理的取舍**:尽管采用层选择性 YaRN 将上下文窗口扩展至128K,且滑动窗口注意力降低了复杂度,但每token仅激活2.5B参数限制了模型在长文本上的深度推理能力。在需要复杂多步规划或长程依赖的智能体任务中,容量瓶颈可能导致中间步骤遗忘或幻觉,相较于同等计算预算但活跃参数更多的模型(如DeepSeek-Coder系列),在高级代码重构或大规模系统设计中可能处于劣势。
论文Marko Kojic2026-05-29原文

相关内容