蚂蚁集团和 vLLM 社区联合开源了量化推理内核库 Humming,代码放在 vLLM 项目组织下,可以直接 pip install humming-kernels 安装。从 vLLM 0.29.0 开始,CUDA 版安装包已经自带这一依赖,用户加上 --linear-backend humming 或 --moe-backend humming 即可切换。
博客列出的蚂蚁贡献者有 Jinzhen Lin、Zekai Gu、Zhilin Huang,社区一侧有 Red Hat 的 Michael Goin 等人。
一个库,覆盖一长串格式
量化推理的老麻烦是格式太多:权重 4 位、激活 16 位是一套内核,换成 8 位激活又是一套,FP4、MXFP4、NVFP4 各有各的写法。Humming 的思路是把“量化怎么描述”和“内核怎么执行”拆开,再用共享组件拼出具体内核,原文的说法是 “separating quantization descriptions from execution choices”。
目前支持的组合包括 WnA16、W8A8、W4A8、W4A4,数据类型从 INT1 到 INT8、FP4 到 FP8,以及 MXFP4、MXINT4、NVFP4。硬件上覆盖英伟达 Turing 之后的全部架构,从 Hopper 的 H20、H200,到 Blackwell 的 B300 和消费级 SM120。
几组单层矩阵乘的对比(均为项目方自测,条件见原文图表):
| 场景 | 对比对象 | 加速 |
|---|---|---|
| 稠密 W4A16,小批量 | cuBLAS | 多数设备约 3-4 倍 |
| W4A8-MXFP4,H200 | DeepGEMM W8A8 | 约 4.5 倍 |
| MoE W4A16,B300 大批量 | Marlin | 约 5 倍 |
端到端测试用的是 DeepSeek-V4.1-Flash,8 张 H20,张量并行 8,MoE 部分从 Marlin W4A16 换成 Humming W4A8 后,输出吞吐提升约 14% 到 43%,首 token 延迟下降约 25% 到 32%,并发越高收益越大。
对国内部署方意味着什么
这份博客的测试平台,几乎是照着国内推理集群的现实配置挑的。H20 是英伟达面向中国市场的特供卡,算力被砍、显存带宽保留,跑大模型推理时,低比特量化几乎是必选项。端到端测试用的又是 DeepSeek 自家的 MoE 模型,国内不少团队手上正是这套组合。
另一个细节是兼容 CUDA 的国产设备:博客把阿里平头哥的真武 810E列进了支持清单,路线图里还写着要适配更多平头哥 PPU 设备,比如真武 M890。蚂蚁和平头哥同属阿里体系,这条线后续能推进到什么程度,要看上游合并的节奏。
对已经在用 vLLM 的团队,迁移成本主要在验证:Humming 能直接读的格式,用不着重新量化模型;vLLM 原生不支持的格式,比如 GPTQ INT3,可以走 --quantization humming 这条兼容路径。
写明的短板
博客把限制列得很清楚。B300 的新指令不再支持 INT8 计算,INT8 矩阵乘只能走老指令,性能明显偏低;下一代 Rubin 不支持 Blackwell 上那两种隐藏的 Tensor Core 格式。内核配置目前靠启发式规则选,作者承认选不出全局最优,自动调优还没做完。
编译速度是另一个卖点。H200 上关闭缓存,单个 W4A16 内核用 Humming 加 NVRTC 编译只要 1.88 秒;模型预热时,覆盖单层全部尺寸的内核大约 2 到 4 秒就能编完。对频繁换模型、换格式做实验的团队,这比吞吐数字更能省时间。
参考来源:vLLM 官方博客、Humming GitHub 仓库、CocoLoop;吞吐、延迟与编译耗时均以项目方公布的测试口径为准。