
Tutel
让 MoE 大模型训练更快更省显存,支持 FP8/FP4 低精度。
Tutel 是微软开源的高性能混合专家(MoE)训练与推理优化库,核心目标是解决大规模 MoE 模型在分布式环境下通信开销大、显存占用高、计算效率低的问题。它通过深度定制的并行策略(专家并行、数据并行、流水并行组合)、通信压缩与计算-通信重叠技术,显著提升 MoE 层的前向与反向吞吐。项目支持 FP8、NVFP4、MXFP4 等低精度格式,并针对 GptOss、DeepSeek、Kimi-K2、Qwen3 等主流 MoE 架构做了适配优化。Tutel 以 C 语言实现核心算子,提供 PyTorch 接口,方便研究者直接替换现有 MoE 层。对于需要训练千亿级 MoE 大模型的团队,Tutel 能降低对高速互联网络的依赖,在同等硬件下获得更高训练效率,是 MoE 系统优化领域较有代表性的开源方案。
项目数据
使用教程
环境要求
- Python 3 环境(README 命令均使用 python3)
- pip 包管理工具
- git(源码编译方式需要克隆仓库)
- 本地 C 编译工具链(源码编译需编译 C 扩展)
- 可用的 GPU 环境(README 提到 A100/A800/H100/MI300 等)
安装与启动步骤
-
1卸载旧版 Tutel
两条安装路径前 README 都要求先卸载已装的 tutel,避免新旧版本冲突。
python3 -m pip uninstall tutel -y -
2在线安装 Tutel
从 GitHub main 分支直接 pip 安装,关闭构建隔离以便走本地编译流程。
python3 -m pip install -v -U --no-build-isolation git+https://github.com/microsoft/tutel@main -
3克隆源码仓库
选择源码编译方式时,先把 main 分支代码克隆到本地。
git clone https://github.com/microsoft/tutel --branch main -
4源码编译安装
克隆后按 README 给出的路径执行 setup.py,安装到当前用户目录(--user)。
python3 ./tutel/setup.py install --user -
5配置 MOELayer
按 README 的 MOELayer 参数说明传入 gate_type、model_dim、experts 等构建 MoE 层。
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
gate_type | 是 | 门控配置字典或字典列表,含 type、k、capacity_factor 等。 | {'type': 'top', 'k': 2, 'capacity_factor': -1.5} |
model_dim | 是 | MoE 输入张量的通道数。 | 1024 |
experts | 是 | 内置专家网络的字典配置,type 取值如 ffn。 | {'type': 'ffn', 'num_experts_per_device': 1, 'hidden_size_pe |
parallel_type | 否 | MoE 计算的并行方式,可取 auto/data/model。 | auto |
a2a_ffn_overlap_degree | 否 | 控制 all_to_all 与计算重叠深度,默认 1 表示不重叠。 | 2 |
pad_samples | 否 | 是否将新输入数据自动填充到历史最大数据量。 | True |
如何确认成功
pip 安装过程无报错,Python 环境中可正常导入 tutel 并按上述参数实例化 MOELayer 即为成功。
常见问题
Q:在线安装和源码编译该选哪种?
A:只想直接用选 Option-1 在线安装;需要改源码或本地调试选 Option-2 源码编译。
Q:为什么安装前要先卸载 tutel?
A:README 的两条安装路径前都写了 pip uninstall tutel -y,用于清理旧版本、避免版本冲突。
Q:gate_type 里的 k 可以是负数吗?
A:可以。k 为负如 -2 时,表示一块 GPU 只持有 1/(-k) 份专家参数。
Q:capacity_factor 的取值怎么理解?
A:正数表示固定倍率 X,0 表示 max(needed_volumes),负数表示 min(-X, max(needed_volumes))。
Q:怎么关闭专家的 bias 参数?
A:在 experts 配置中把 has_fc1_bias 或 has_fc2_bias 设为 False,默认值为 True。
注意事项
- README 未给出 CUDA/驱动版本与显存要求,需自行确认硬件环境匹配。
- 源码编译安装使用 --user,只会安装到当前用户目录。
- 低精度推理支持 NVFP4/MXFP4/BlockwiseFP8,需 A100/A800/H100/MI300 等硬件。
- k 为负、capacity_factor 为负等参数行为来自 README 参数说明,使用前请确认符合你的并行策略。
核心亮点
- 针对 DeepSeek、Kimi-K2、Qwen3 等主流 MoE 架构做了专门适配,可直接替换现有 MoE 层,迁移成本低
- 支持 FP8、NVFP4、MXFP4 多种低精度格式,在保持精度的同时显著降低显存占用和通信量
- 通过专家并行与计算-通信重叠优化,减少对高速互联网络的依赖,在普通集群上也能获得较高吞吐
不足之处
- 以 C 语言实现核心算子,二次开发和调试门槛较高,对不熟悉底层优化的团队不够友好
- 社区规模和文档完善度相对有限,遇到问题可参考的案例和讨论较少
适用场景
- 训练千亿参数级 MoE 大模型,需要降低显存和通信开销
- 在非顶级网络环境下部署 MoE 推理服务,追求低精度加速
- 研究 MoE 并行策略与低精度量化,需要可复现的优化基线
替代项目
DeepSpeed-MoE、Megatron-LM、Fairseq
项目介绍
同类项目推荐
Long-RL
开源
让强化学习轻松驾驭超长序列,训练更稳更快
Long-RL: Scaling RL to Long Sequences (NeurIPS 2025)
TPA
开源
把注意力复杂度从平方降到线性,长序列不再卡顿
[NeurIPS 2025 Spotlight] TPA: Tensor ProducT ATTenTion Transformer (https://arxiv.or···
minimind
开源
两小时造出你的小模型,练手入门不求人
Train a 64M-parameter LLM from scratch in just 2h!
pruna
开源
一键优化 AI 模型,推理提速又省资源。
Pruna is a model optimization framework built for developers, enabling you to delive···