Prhub

#36505 [ROCm][Refactor] Enable AWQMarlinConfig on ROCm to use choose_mp_linear_kernel

原始 PR 作者 mgehre-amd 合并时间 2026-03-23 15:36 文件变更 3 提交数 2 评论 7 代码增减 +143 / -102

执行摘要

重构 ROCm 上 AWQMarlinConfig 以使用 choose_mp_linear_kernel,显著提升 AWQ 模型性能。

根据PR body,'On ROCm, AWQ models were forced through AWQConfig → AWQLinearMethod → ops.awq_gemm, bypassing the choose_mp_linear_kernel framework entirely.' 以及 'This PR corrects it with the approach suggested by @mgoin in the quantization SIG meeting.' 目标是纠正ROCm上AWQ模型的非优化路径,提升性能。

该PR值得精读,尤其是AWQ到标准格式的转换逻辑和平台抽象设计,对于理解vLLM中量化内核框架的集成有参考价值。

讨论亮点

review中主要讨论点:

  1. 平台检查条件:gshtras建议使用not is_rocm()而非is_cuda()来排除ROCm,以避免混淆其他平台,mgehre-amd采纳此建议并修改代码。
  2. 性能优化:gemini-code-assist[bot]建议向量化AWQ格式转换中的循环以提高模型加载性能,但讨论中未明确是否采纳该优化。

实现拆解

实现方案包括四个关键改动:

  1. 在is_awq_marlin_compatible中使用is_cuda_alike()替代is_cuda(),以兼容ROCm。
  2. 重写AWQMarlinLinearMethod,在process_weights_after_loading中添加AWQ到标准格式的转换,修复非标准位序和打包维度。
  3. 在query_marlin_supported_quant_types中跳过NVIDIA的device_capability检查,因为ROCm设备能力不映射到NVIDIA计算能力语义。
  4. 修复ConchLinearKernel以处理对称量化,通过register_parameter(name, None)清除零点属性。
文件 模块 状态 重要度
vllm/model_executor/layers/quantization/awq_marlin.py quantization modified 9.0
vllm/model_executor/layers/quantization/utils/marlin_utils.py quantization utils modified 7.0
vllm/model_executor/kernels/linear/mixed_precision/conch.py kernels/linear modified 5.0

关键符号

_convert_awq_to_standard_format AWQMarlinLinearMethod.process_weights_after_loading query_marlin_supported_quant_types

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

评论区精华

ROCm 平台检查条件设计 设计

gshtras 建议使用 not is_rocm() 而非 is_cuda() 来排除 ROCm,以避免影响其他非 CUDA 平台。mgehre-amd 讨论后采纳并修改代码。

结论:改为使用 not is_rocm() 条件,以更清晰地排除 ROCm 而不影响其他平台。 · 已解决

AWQ 格式转换性能优化建议 性能

gemini-code-assist[bot] 建议向量化 qweight 和 qzeros 的 repacking 循环,以提高模型加载性能。

结论:建议给出,但 review 讨论中未明确是否采纳该优化。 · pending

风险与影响

技术风险包括:

  1. AWQ格式转换逻辑复杂,可能引入数值错误,影响模型准确性,具体在awq_marlin.py的_convert_awq_to_standard_format函数中。
  2. 平台检查修改从is_cuda()到not is_rocm(),可能意外影响非CUDA、非ROCm平台(如CPU或其他GPU),但讨论中已考虑此点。
  3. 性能风险:新代码路径未经充分测试,可能存在性能回归,尤其是模型加载阶段。

影响范围:

  1. 用户:ROCm用户现在可以使用AWQMarlinConfig,获得显著的性能提升(prefill +57%, decode +73%),改善推理体验。
  2. 系统:代码更统一,减少了特殊路径,便于维护和未来扩展。
  3. 团队:需要维护新格式转换代码,并确保在ROCm环境下的稳定性。
格式转换复杂性 平台检查修改 性能回归风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论