执行摘要
移除压缩张量量化中的稀疏性死代码并添加弃用警告
PR body 指出,这是对 PR #42889 的后续清理,旨在移除稀疏性相关工具/死代码,并添加弃用警告以告知用户该功能已被移除。
值得合并,因为它清除了长期废弃的代码路径。但应确认 DeprecationWarning 是否真为警告(当前使用 raise 可能导致异常),建议改为 warnings.warn。
本 PR 没有引发实质性 review 讨论,仅由机器人自动审查和合并者 approved。
PR body 指出,这是对 PR #42889 的后续清理,旨在移除稀疏性相关工具/死代码,并添加弃用警告以告知用户该功能已被移除。
值得合并,因为它清除了长期废弃的代码路径。但应确认 DeprecationWarning 是否真为警告(当前使用 raise 可能导致异常),建议改为 warnings.warn。
本 PR 没有引发实质性 review 讨论,仅由机器人自动审查和合并者 approved。
| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors.py |
量化 | modified | 7.35 |
tests/quantization/test_compressed_tensors.py |
测试 | modified | 3.42 |
vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors.py
data-contract
核心量化配置文件,移除了稀疏性支持和死代码,并添加弃用警告。
# 在 from_config 中,不再解析稀疏性配置为有效参数
@classmethod
def from_config(cls, config: dict[str, Any]) -> "CompressedTensorsConfig":
# ... 其他解析
quant_format = cast(str, config.get("format"))
target_scheme_map = cls._quantization_scheme_map_from_config(config=config)
# 调用 _parse_sparsity_config 仅用于产生弃用警告
cls._parse_sparsity_config(config=config)
return cls(
target_scheme_map=target_scheme_map,
ignore=ignore,
quant_format=quant_format,
config=config,
transform_config=config.get("transform_config"),
kv_cache_scheme=config.get("kv_cache_scheme"),
)
@classmethod
def _parse_sparsity_config(cls, config: dict[str, Any]):
"""解析稀疏性配置,若存在则发出弃用警告。"""
sparsity_config: SparsityCompressionConfig = config.get(SPARSITY_CONFIG_NAME)
if sparsity_config:
sparse_scheme_map = {
target: sparsity_config
for target in sparsity_config.targets or list()
}
if sparse_scheme_map:
raise DeprecationWarning(
"Sparsity support has been removed from compressed-tensors. "
"Please use a model without sparsity configuration."
)
# 原返回值已不再使用,但为兼容性保留返回语句
return {}, []
tests/quantization/test_compressed_tensors.py
test-coverage
测试文件同步更新,移除稀疏性相关参数以匹配新接口。
# 测试辅助函数,移除 sparsity 参数
def _make_ct_config(*, target: str = "Linear") -> CompressedTensorsConfig:
"""Build a minimal CompressedTensorsConfig with INT8 channel quant."""
weight_quant = QuantizationArgs(
num_bits=8,
type=QuantizationType.INT,
strategy=QuantizationStrategy.CHANNEL,
symmetric=True,
dynamic=False,
)
return CompressedTensorsConfig(
target_scheme_map={
target: {
"weights": weight_quant,
"input_activations": None,
"format": "pack-quantized",
}
},
ignore=[],
quant_format="pack-quantized",
# sparsity_scheme_map 和 sparsity_ignore_list 已移除
)
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
潜在的兼容性风险:任何在模型中包含 sparsity_config 的用户将首次收到 DeprecationWarning,但不会立即破坏加载流程(因为 _parse_sparsity_config 仍返回空值)。但当前实现使用 raise DeprecationWarning,可能导致模型加载流程中断,与温和弃用的意图不符,存在异常风险。
影响范围:使用压缩张量量化并带有稀疏性配置的模型。影响程度:这些用户会收到弃用警告,未来可能需要迁移到无稀疏性模型。对不涉及稀疏性的用户无影响。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论