From 589f62c95cf02849dbf1e9631b9b836213136130 Mon Sep 17 00:00:00 2001 From: lazypool Date: Sat, 18 Jul 2026 22:18:54 +0800 Subject: [PATCH] [Bugfix] Propagate VLLM_MARLIN_INPUT_DTYPE into INC/AutoRound quant path (#48904) AutoRound (INC) checkpoints route through inc_wna16_linear.py and inc_wna16_scheme.py, which construct Marlin linear/MoE methods but never assign input_dtype. The attribute defaults to None, so the Marlin kernel never enters the int8-activation branch regardless of the VLLM_MARLIN_INPUT_DTYPE env var. Fix by setting method.input_dtype = get_marlin_input_dtype() after construction, matching the pattern already used in auto_gptq.py:269 and auto_gptq.py:261 for the GPTQ/AWQ path. Co-authored-by: noonghunna <10742901+noonghunna@users.noreply.github.com> Co-authored-by: kevinb361 <91768207+kevinb361@users.noreply.github.com> Signed-off-by: lazypool --- .../layers/quantization/inc/schemes/inc_wna16_linear.py | 5 ++++- .../layers/quantization/inc/schemes/inc_wna16_scheme.py | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/vllm/model_executor/layers/quantization/inc/schemes/inc_wna16_linear.py b/vllm/model_executor/layers/quantization/inc/schemes/inc_wna16_linear.py index dd6c2fa2eaae..ebcf6dcaf862 100644 --- a/vllm/model_executor/layers/quantization/inc/schemes/inc_wna16_linear.py +++ b/vllm/model_executor/layers/quantization/inc/schemes/inc_wna16_linear.py @@ -10,6 +10,7 @@ from vllm.model_executor.layers.quantization.auto_gptq import AutoGPTQConfig from vllm.model_executor.layers.quantization.utils.marlin_utils import ( check_marlin_supported, + get_marlin_input_dtype, ) from vllm.model_executor.parameter import ( GroupQuantScaleParameter, @@ -62,7 +63,7 @@ def _build_gptq_method(self): AutoGPTQLinearMethod, ) - return AutoGPTQLinearMethod( + method = AutoGPTQLinearMethod( AutoGPTQConfig( weight_bits=self.layer_config.bits, group_size=self.layer_config.group_size, @@ -73,6 +74,8 @@ def _build_gptq_method(self): full_config={}, ) ) + method.input_dtype = get_marlin_input_dtype() + return method raise NotImplementedError( f"INC quantization with bits={self.layer_config.bits}, " diff --git a/vllm/model_executor/layers/quantization/inc/schemes/inc_wna16_scheme.py b/vllm/model_executor/layers/quantization/inc/schemes/inc_wna16_scheme.py index 46ad24ea5b47..0354e096de55 100644 --- a/vllm/model_executor/layers/quantization/inc/schemes/inc_wna16_scheme.py +++ b/vllm/model_executor/layers/quantization/inc/schemes/inc_wna16_scheme.py @@ -6,6 +6,9 @@ from vllm.logger import init_logger from vllm.model_executor.layers.quantization.auto_awq import AutoAWQConfig from vllm.model_executor.layers.quantization.auto_gptq import AutoGPTQConfig +from vllm.model_executor.layers.quantization.utils.marlin_utils import ( + get_marlin_input_dtype, +) from vllm.platforms import current_platform from vllm.scalar_type import scalar_types @@ -137,7 +140,7 @@ def _resolve_gptq_moe(layer: "torch.nn.Module", layer_config: "INCLayerConfig"): ) and check_moe_marlin_supports_layer(layer, layer_config.group_size) if use_marlin: - return AutoGPTQMoEMethod( + moe_method = AutoGPTQMoEMethod( AutoGPTQConfig( weight_bits=layer_config.bits, group_size=layer_config.group_size, @@ -149,6 +152,8 @@ def _resolve_gptq_moe(layer: "torch.nn.Module", layer_config: "INCLayerConfig"): ), layer.moe_config, ) + moe_method.input_dtype = get_marlin_input_dtype() + return moe_method moe_config = MoeWNA16Config.from_config( {