Prhub

#49483 [compressed-tensors] update `find_matched_target` order to prioritize fused name matches over class match

原始 PR 作者 brian-dellabetta 合并时间 2026-07-29 01:03 文件变更 1 提交数 7 评论 0 代码增减 +1 / -1

执行摘要

修复混合精度量化时 fused 层名匹配优先级

用户配置混合精度量化时,目标列表先指定 unfused 层名,最后用 Linear 兜底。由于 fused 层名匹配优先级低于类名匹配,导致 fused 层错误匹配为普通 Linear 层而非其实际 fused 变体,进而引发权重加载失败。该 PR 对齐 compressed-tensors 的匹配顺序。

该 PR 值得合入,但建议作者或维护者补充针对混合精度 fused 层匹配的单元测试,避免未来重构时回归。

讨论亮点

无 review 讨论。

实现拆解

  1. 调整匹配优先级:在 vllm/model_executor/layers/quantization/compressed_tensors/utils.pyfind_matched_target 函数中,将 _match_fused_layer 调用移到 _find_first_match(module.__class__.__name__, targets, True) 之前。
  2. 保持其他逻辑不变:匹配顺序变为先精确匹配 layer name,再尝试 fused 层名匹配,最后按类名匹配。
  3. 无测试文件修改:该 PR 仅修改一行有效代码位置,未更新测试文件。
文件 模块 状态 重要度
vllm/model_executor/layers/quantization/compressed_tensors/utils.py 压缩张量 modified 5.33

关键源码片段

vllm/model_executor/layers/quantization/compressed_tensors/utils.py data-contract

核心修改文件,调整 find_matched_target 中 fused 层名与类名的匹配顺序,修复混合精度量化加载失败。

# vllm/model_executor/layers/quantization/compressed_tensors/utils.py
# 修改后的 find_matched_target 函数关键片段def find_matched_target(
    layer_name: str,
    module: torch.nn.Module,
    targets: Iterable[str],
    fused_mapping: Mapping[str, list[str]] = MappingProxyType({}),
) -> str | None:
    """
    查找层对应的 target:
    1. 精确匹配 layer name(或正则)
    2. 匹配 fused 层名(新优先级,使 fused 层优先于通用类名)
    3. 回退到模块类名匹配(如 Linear)
    """
    if layer_name is None:
        layer_name = ""
​
    matched_target = (
        _find_first_match(layer_name, targets) # 步骤 1:精确匹配
        or _match_fused_layer(layer_name, targets, fused_mapping) # 步骤 2:fused 匹配
        or _find_first_match(module.__class__.__name__, targets, True) # 步骤 3:类名匹配
    )
​
    return matched_target

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  1. 改变了目标匹配的优先级顺序,可能影响依赖旧顺序的配置(如显式使用 fused 层名且类名作为 fallback 的场景)。
  2. 缺少配套测试,回归风险需自行验证。
  3. 影响范围限于 compressed-tensors 量化模块,不涉及其他系统。

用户影响:修复了混合精度量化(如 MXFP4+MXFP8)模型加载失败的问题,使这类模型能正常使用。系统影响:无性能影响。团队影响:需同步更新 compressed-tensors 库的依赖版本。

缺少测试覆盖

关联 Issue

#2730 [Bug]: Mix-precision vLLM loading failure (MXFP4+MXFP8)

完整报告

参与讨论