OpenMoE
完全开源的 MoE 大模型:8B 参数每次激活仅需 2B FLOPs,学生团队打造
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
完全开源的 MoE 大模型:8B 参数每次激活仅需 2B FLOPs,学生团队打造
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,一个不到 5 人的学生团队,仅凭有限的 GPU 资源,在 2023 年夏天启动了开源 MoE 大模型的探索。到 2024 年 1 月,他们不仅完成了 8B 参数模型的完整训练,还发表了深度路由分析的学术论文——这在学术界和开源社区都引发了不小关注。这个项目就是 OpenMoE,一个由学生主导、完全开源的混合专家(Mixture-of-Experts)大语言模型家族。
传统大语言模型(如 LLaMA、Mistral)在每次推理时都会激活全部参数。以 8B 参数模型为例,每次生成一个 token 都需要动用全部 80 亿参数进行计算——这就像一家公司的所有员工都要参与每一份文件的处理,效率可想而知。
**MoE(混合专家)**的核心思路截然不同:模型由多个"专家"子网络组成,每个 token 只需要激活极少数专家参与计算。在 OpenMoE-8B 中,模型总计 8B 参数,但每次前向传播实际参与的 FLOPs 仅相当于一个 2B 稠密模型——理论上计算量减少约 4 倍,同时保持了更大参数规模带来的容量优势。
OpenMoE 的技术栈颇具特色:训练侧采用 Google 的 JAX 框架 + Flax 库,运行在 Google Cloud TPU 上。项目克隆了 T5X、Flaxformer、SeqIO 等 Google 官方仓库的定制分支,并依赖 jaxlib GPU wheel、protobuf 3.20.3 等一系列特定版本。这套环境配置相当复杂,官方提供了 run_pretrain.sh 脚本,但需要手动替换 GCS bucket 名称等参数,不适合新手直接上手。
推理侧则转向了更通用的 PyTorch + Transformers 生态。script/inference_on_multi_devices.py 展示了完整的推理流程:通过 accelerate 库的 init_empty_weights + load_checkpoint_and_dispatch 实现大模型的分片加载,配合自定义 LogitsProcessor(StopAfterEosTextGenerated)处理 token 级别的停止信号问题,最终调用 HuggingFace generate() 接口输出文本。
Dockerfile 方面,项目在 env/openmoe_infer_dockerfile 中提供了基于 NVIDIA PyTorch 23.12 镜像的推理容器,包含 Colab 环境的 pip 依赖和定制版 ColossalAI——但这是一个单阶段构建,非生产级优化。
图1:MT-Bench 第一轮评估结果,OpenMoE-8B 在同 FLOPs 对比中取得最高分。
OpenMoE 目前已发布多个版本的模型权重,均托管在 HuggingFace(OrionZheng 账号)上:
| 模型 | 训练 Token 数 | 激活参数量等效 | 特点 |
|---|---|---|---|
| OpenMoE-8B-1T | 1.1T | ~2B LLaMA | 基础预训练版 |
| OpenMoE-8B-Chat | 1.1T + SFT | ~2B LLaMA | 基于 WildChat GPT-4 子集微调 |
| OpenMoE-34B-200B | 200B | ~7B LLaMA | 最大规模中间检查点 |
此外还有从 200B 到 800B 的多个中间检查点,方便研究者观察模型能力随训练 tokens 增长的演化曲线。
在 MT-Bench 评测中,OpenMoE-8B/32E(32 个专家)以仅 1.8 倍训练 FLOPs 和 1.6 倍推理 FLOPs 的成本,取得了 3.98 分的平均成绩,与训练 FLOPs 相近的 OpenLLaMA-3B(3.99 分)基本持平,在第一轮对话(4.69分)上甚至超过了 OpenLLaMA。这验证了 MoE 架构"大参数、低激活"策略的有效性。
图2:MT-Bench 第二轮评估结果,OpenMoE 在复杂多轮对话场景下仍有提升空间。
对于普通开发者而言,推理部署的门槛相对可控。官方提供了:
但如果想复现训练过程,则需要:Google Cloud TPU VM、熟悉 JAX/T5X 技术栈、手动配置 GCS 数据管道等,门槛相当高。评估脚本(eval/result_retrieval_bigbenchlite.py、eval/plot_bigbench.py)基于 BIG-bench-lite 数据集,需要先安装 BIG-bench 库。
作为学生主导的开源项目,OpenMoE 的局限性也比较明显:
OpenMoE 的最大贡献不在于刷新 SOTA,而在于完全开源的理念。与 OpenLLaMA、MPT 等开源模型不同,OpenMoE 从训练数据、策略、模型架构到权重全部公开,甚至包括中间检查点。这对于研究 MoE 路由机制(如论文中对专家负载均衡、路由崩溃问题的深入分析)具有很高的学术价值。
从技术趋势看,MoE 已成为 2024 年大模型发展的主流方向之一——Mixtral-8x7B、DBRX、Grok-1 等相继问世。OpenMoE 作为早期开源 MoE 实践,虽然规模和技术栈不够主流,但其"学生团队、全栈开源"的故事本身,就是对开源 AI 生态的有力推动。
如果你对 MoE 架构感兴趣,OpenMoE 是一个值得深入研究的起点:从 HuggingFace 下载权重跑一个 Demo,或者读一读他们的路由分析论文,都会收获不小。