快速上手大模型推理vllm
LiteMoE 是一个小型 MoE 推理引擎,约 1600 行 Python。它负责 forward、KV 和生成循环,专家、Attention 和路由算子直接调用 vLLM。
想快速上手推理,直接读 vLLM 代码量太大。LiteMoE 能跑真实模型,一个下午能读完主线,还带教程和逐步交互演示。

结果
| 同场 12 点几何平均(对比 vLLM 0.32.0) | Granite 1B | Granite 3B | 总计 |
|---|---|---|---|
| A100 | 110.6% | 107.1% | 108.8% |
| L4 | 105.5% | 105.0% | 105.3% |
先说局限:测试条件是固定批次、贪心解码、单 GPU。vLLM 还带调度器和完整服务,LiteMoE 没有。所以这不代表生产环境里比 vLLM 快。
差距在哪里
优化前,A100 上只有 vLLM 的 84%。分析调用轨迹后发现,专家算子和 FlashAttention 的耗时和 vLLM 差不多,差距在每层那些很小的操作上:乘法、拷贝、索引和 where。
最大的提升来自删代码
decode_step 已经把停止请求的位置清零,KV 写入也有掩码,它们的 logits 也不会被发布。所以每层再做一遍掩码是多余的。去掉之后:
- A100 提速 15%~19%
- L4 提速 4%~6%
- 输出 token 与优化前一致
其他优化
| 优化 | A100 提升 |
|---|---|
| Prefill 全部 packed,换融合算子 | 约 3.5% |
| 路由 scales 保持 FP32 | 2.65%(1B) |
| 两步残差合并成一次带系数的加法 | 约 2.3% |
| 调整专家算子配置 | 1%~2%,L4 上反而慢 4%~5% |
调整 max_seqlen_k | 没有提升,已放弃 |
没做好的地方
- 提速改变了 BF16 舍入,有些输出和 HF、vLLM 不完全相同。
- GSM8K 全部 1319 题(3B,A100)上,LiteMoE 46.2%,vLLM 47.2%,差值 -0.9 个百分点(95% 置信区间 -2.9 到 +1.1),过了事先定的标准,但最多约 3 个百分点的下降不能排除。之前只跑 500 题时,7 组比较有 6 组没过。
- 平均误差和 HF BF16 相当,但 3B 的最差点更高,我事先定的严格检查也没有全部通过。
- 动态负载还没测,只支持 Granite 和单卡。1B 和 L4 没有跑全量 GSM8K。
这些都写在 benchmarks/README.md 里。
试一下
git clone https://github.com/ZhuLinsen/LiteMoE && cd LiteMoE
pip install -e '.[vllm]'
litemoe "用一句话解释混合专家模型。"
bash tools/reproduce.sh
顺便写了份教程
我把一次真实推理录了下来,可以逐步看每个 token 的候选、KV Cache 增长和专家路由:https://zhulinsen.github.io/LiteMoE/visualizer/?lang=zh
教程从 Prefill、Decode 讲到 MoE,最后讲 DeepSeek、Kimi、Qwen 等新模型改了什么:https://github.com/ZhuLinsen/LiteMoE/blob/main/docs/tutorial.zh-CN.md
后面做什么
如果大家感兴趣,后面会继续推进多卡、CPU 版本系列:
- 多卡版本: 讲清专家怎么分到多张卡、通信开销在哪里。
- CPU 版本: 没有 GPU 也能跑通、单步调试,更适合学习。
你更想先看哪个,可以在 Issue 或评论区告诉我。
如果你发现方法有问题,欢迎提 Issue:https://github.com/ZhuLinsen/LiteMoE
更多推荐



所有评论(0)