From 9464694e8f6fa5554d160d41b7f14e3f47e5c438 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 4 Nov 2025 05:35:15 +0000 Subject: [PATCH] Fix critical quantization parameter bugs in AWQ and NVFP4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root Cause #1: Invalid parameter name 'dataset_split' - LLM-Compressor's oneshot() expects 'splits' not 'dataset_split' - The parameter must be a dict: {"calibration": split_name} - This was causing: ValueError: Some keys are not used by the HfArgumentParser: ['dataset_split'] Root Cause #2: Inverted symmetric/zero_point logic - AWQ config had: "symmetric": config.zero_point - Correct: "symmetric": not config.zero_point - When zero_point=True → asymmetric quantization → symmetric=False - When zero_point=False → symmetric quantization → symmetric=True - This bug caused incorrect quantization configuration Changes: - AWQ: Fixed splits parameter format (line 151) - AWQ: Fixed symmetric parameter logic (line 111) - NVFP4: Fixed splits parameter format (line 225) Both quantizers now use the correct LLM-Compressor API format. Tested with: llmcompressor 0.8.1, wikitext dataset --- src/msquant/core/quantizer/engine.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/msquant/core/quantizer/engine.py b/src/msquant/core/quantizer/engine.py index 3037349..a21d486 100644 --- a/src/msquant/core/quantizer/engine.py +++ b/src/msquant/core/quantizer/engine.py @@ -108,7 +108,7 @@ def build_recipe(config: QuantizationConfig): "weights": { "num_bits": config.w_bit, "type": "int", - "symmetric": config.zero_point, + "symmetric": not config.zero_point, "strategy": "group", "group_size": config.group_size, }, @@ -146,10 +146,10 @@ def run(config: QuantizationConfig, logger: QuantizationLogger): if config.calib_config: oneshot_kwargs["dataset_config_name"] = config.calib_config - + if config.calib_split: - oneshot_kwargs["dataset_split"] = config.calib_split - + oneshot_kwargs["splits"] = {"calibration": config.calib_split} + logger.info("Starting LLM-Compressor oneshot() with AWQ", { "model": oneshot_kwargs["model"], "dataset": oneshot_kwargs["dataset"], @@ -220,10 +220,10 @@ def run(config: QuantizationConfig, logger: QuantizationLogger): if config.calib_config: oneshot_kwargs["dataset_config_name"] = config.calib_config - + if config.calib_split: - oneshot_kwargs["dataset_split"] = config.calib_split - + oneshot_kwargs["splits"] = {"calibration": config.calib_split} + logger.info("Starting LLM-Compressor oneshot() with FP4 quantization", { "model": oneshot_kwargs["model"], "dataset": oneshot_kwargs["dataset"],