Prhub

#38501 [ROCm][Quantization] Add asymmetric INT8 quantization support to TritonInt8ScaledMMLinearKernel

原始 PR 作者 AndreasKaratzas 合并时间 2026-04-06 09:42 文件变更 7 提交数 8 评论 13 代码增减 +133 / -14

执行摘要

为 ROCm 平台 Triton 内核添加非对称 INT8 量化支持,解锁非对称 INT8 模型运行。

根据PR body描述,添加非对称INT8量化支持到TritonInt8ScaledMMLinearKernel,以解锁在ROCm平台上的非对称INT8模型(如W8-Channel-A8-Dynamic-Asym-Per-Token)运行。当AITER(可能指特定加速器)未启用时,Triton kernel是唯一的INT8回退方案,此前仅支持对称输入量化,限制了模型兼容性。

建议精读vllm/model_executor/kernels/linear/scaled_mm/triton.py文件,关注非对称量化处理逻辑和与Cutlass内核的对齐设计;对于ROCm平台开发者,此PR提供了关键量化支持,值得参考实现细节。

讨论亮点

gemini-code-assist[bot]指出代码中潜在除以零风险(当输入张量为常数时),建议添加epsilon;作者AndreasKaratzas回应此代码直接从CutlassInt8ScaledMMLinearKernel复制,在CUDA生产环境中运行正常,未添加防护。tjtanaa讨论了测试文件命名和GPU架构检查方式,建议保持文件名不变并在测试逻辑中处理硬件要求,作者随后更新了命名和测试逻辑。

实现拆解

核心改动位于vllm/model_executor/kernels/linear/scaled_mm/triton.py:在process_weights_after_loading方法中,针对非对称量化计算单scale和azp,并预计算azp_adj(权重列和);在apply_weights方法中,添加零点校正逻辑(scale_a * scale_b * azp * azp_adj)。其他文件变更包括:在.buildkite/lm-eval-harness/configs/下添加模型配置和GPU架构要求;在.buildkite/lm-eval-harness/test_lm_eval_correctness.py中新增_check_rocm_gpu_arch_requirement函数以跳过不兼容硬件的测试;在.buildkite/test-amd.yaml中添加新的测试步骤以验证非对称INT8模型。

文件 模块 状态 重要度
vllm/model_executor/kernels/linear/scaled_mm/triton.py 量化 kernel modified 8.0
.buildkite/lm-eval-harness/test_lm_eval_correctness.py 测试基础设施 modified 4.0
.buildkite/test-amd.yaml CI 配置 modified 4.0

关键符号

process_weights_after_loading apply_weights _check_rocm_gpu_arch_requirement

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

除以零风险处理 正确性

gemini-code-assist[bot] 指出在计算 azp 时,如果 scale 为 0(输入张量恒定),会导致除以零错误,建议添加 epsilon 防护。

结论:作者 AndreasKaratzas 回应代码直接从 CutlassInt8ScaledMMLinearKernel 复制,在 CUDA 生产环境中运行正常,认为量化模型在常数激活时已损坏,未采纳添加 epsilon 的建议。 · 未解决

测试文件命名与 GPU 架构检查 测试

tjtanaa 建议保持测试文件名不变,并通过测试逻辑处理 GPU 架构要求,而非依赖文件命名。

结论:作者更新了文件命名,并在 test_lm_eval_correctness.py 中添加 _check_rocm_gpu_arch_requirement 函数来实现硬件检查。 · 已解决

风险与影响

技术风险包括:

1) 除以零风险:在计算azp时,如果scale为0(输入张量恒定),可能导致崩溃,但作者基于现有Cutlass实现认为模型级别已损坏。
2) 兼容性风险:新逻辑需确保与现有对称量化模型兼容,避免回归。
3) 测试覆盖风险:新增的测试组需在特定ROCm硬件上验证,可能因硬件限制导致覆盖不全。
4) 平台依赖风险:功能特定于ROCm,可能增加维护复杂性。

对用户:ROCm用户现在可运行非对称INT8量化模型,扩展了模型支持范围。对系统:量化kernel支持增强,可能轻微影响性能(需处理额外校正项),但无重大架构变更。对团队:增加了代码复杂性和测试负担,需确保跨平台一致性;CI管道扩展以包含新测试组。

潜在除以零风险 测试覆盖需验证 平台特定依赖

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论