据 Hugging Face 博客 10 月 1 日发布的消息,该机构推出 Olmo-core 3,对其用于开发大型语言模型的框架进行重大升级,重新设计了开放的混合专家(MoE)训练系统。新系统面向万亿参数级 MoE 训练设计,目标是在扩展参数规模的同时保持计算效率,并成为下一代 Olmo 的核心系统之一。
Hugging Face 表示,训练大型 AI 模型需要大量算力,推高成本与能耗,使许多学术研究人员和较小实验室难以开发先进模型。MoE 模型提供了一种更高效路径:它们可以包含更多学习组件或参数,而无需每个输入都使用全部参数。但完整模型仍须存储在 GPU 内存中并在训练期间更新,跨集群将输入导向正确的专家也会带来通信与协调成本。随着 MoE 规模增长,这些成本可能侵蚀仅使用部分模型所带来的计算优势。
Olmo-core 3 旨在缩小这一差距。据该博客介绍,在一项基准测试中,团队将专家池从 8 个扩大到 128 个,同时每个 token 仍只选择 4 个专家,使每个 token 的活跃参数量大致保持在约 3.2B。总参数容量从 4.6B 增长到 47B,训练吞吐下降不到 5%。同一套基础设施还在超过一万亿总参数规模上进行了基准测试。
Olmo-core 的 MoE 工作可追溯到 OlmoE,其使用了包含 64 个路由专家的 MoE 架构。Olmo 3 则采用稠密架构,几乎每个 token 都会激活模型全部组件,其训练栈也围绕这一设计构建。Olmo-core 3 扩展了该框架,加入为更大规模 MoE 模型设计的训练系统。
据博客介绍,较早的 Olmo-core MoE 实现使用完全分片数据并行(FSDP),针对每一小批训练数据收集并重新分片模型权重。Olmo-core 3 转向基于分布式数据并行(DDP)的系统,将专家常驻在 GPU 上,把相关数据路由给它们,从而避免重复收集权重。
与 NVIDIA Megatron-Core 相比,后者是训练大型 MoE 的成熟选项。Hugging Face 称,Olmo-core 3 为 Olmo 背后的框架带来集成的 MoE 训练栈,其重新设计提升了相对早期基于 FSDP 实现的吞吐。在 8 块 NVIDIA B300 GPU 上的初步测试中,一个 470 亿参数 MoE 使用新栈时每块 GPU 每秒处理 52,000 个 token,而早期实现为 19,400 个,约为 2.7 倍吞吐。
Olmo-core 3 结合了多种在 GPU 集群中分布大型 MoE 的技术,并通过优化提高路由与计算效率。其中,专家并行将专家分散到各 GPU,使每块 GPU 只存储完整专家池的一部分;流水线并行将模型各层拆分到不同 GPU 组,减少每块 GPU 需保留在内存中的模型部分;分布式优化器将优化器状态分散到各 GPU,而不是在每块 GPU 上保存完整副本。博客称,这些技术共同使 MoE 扩展时无需每块 GPU 都保留整个模型及其训练状态。
在路由和计算方面,Olmo-core 3 采用行级专家并行,将路由后的数据直接放入专家输入缓冲区,减少重新排列数据的额外工作;GPU 驻留路由将路由元数据保留在 GPU 上,使 CPU 无需等待这些信息被复制回来即可排队工作;分组 GEMM 将许多小型专家计算合并,以便 GPU 更高效地执行。
Olmo-core 3 还支持 MXFP8,这是一种以更少比特表示部分值的低精度数字格式。只要节省的计算与 GPU 间数据传输量超过数字格式转换成本,它就能减少计算量和数据移动。据博客介绍,在 4 块 NVIDIA B300 GPU 上进行的受控基准测试中,工作负载均匀分布在专家之间。在系统中最受益的部分启用 MXFP8 后,训练吞吐比作为基线的 BF16 高约 21%,峰值活跃内存从 103 GiB 降至 95 GiB。大部分增益来自前馈计算和专家间数据移动,而非仅来自注意力部分。