[Bugfix] Fix MiniMax-M3 compressed-tensors FP8 MoE SwiGLU params (#46845)
Signed-off-by: Tan Pin Siang <tanpinsiang@gmail.com>
Tan Pin Siang committed
Aug 12, 2026 at 03:52 UTC
e60f3c4c137f23bb870524b937719d24bde8715b
2 files changed
+34
tests/quantization/test_compressed_tensors.py
+32
@@ -22,6 +22,7 @@ from vllm.model_executor.kernels.linear import (
22
Fp8BlockScaledMMLinearKernel,
23
)
24
from vllm.model_executor.layers.fused_moe import UnquantizedFusedMoEMethod
25
+from vllm.model_executor.layers.fused_moe.oracle.fp8 import Fp8MoeBackend
26
from vllm.model_executor.layers.quantization.compressed_tensors.compressed_tensors import ( # noqa: E501
27
CompressedTensorsConfig,
28
CompressedTensorsLinearMethod,
@@ -35,6 +36,9 @@ from vllm.model_executor.layers.quantization.compressed_tensors.compressed_tenso
36
CompressedTensorsWNA8O8Int,
37
CompressedTensorsWNA16,
38
)
39
+from vllm.model_executor.layers.quantization.compressed_tensors.compressed_tensors_moe.compressed_tensors_moe_w8a8_fp8 import ( # noqa: E501
40
+ CompressedTensorsW8A8Fp8MoEMethod,
41
+)
42
from vllm.model_executor.layers.quantization.compressed_tensors.utils import (
43
find_matched_target,
44
)
@@ -345,6 +349,34 @@ def test_compressed_tensors_fp8(vllm_runner):
349
assert output
350
351
352
+def test_compressed_tensors_w8a8_fp8_moe_forwards_swiglu_params():
353
+ quant_method = object.__new__(CompressedTensorsW8A8Fp8MoEMethod)
354
+ quant_method.input_quant = QuantizationArgs(
355
+ num_bits=8,
356
+ type=QuantizationType.FLOAT,
357
+ strategy=QuantizationStrategy.TOKEN,
358
+ dynamic=True,
359
+ symmetric=True,
360
+ )
361
+ quant_method.weight_block_size = None
362
+ quant_method.fp8_backend = Fp8MoeBackend.TRITON
363
+
364
+ layer = Mock()
365
+ layer.w13_weight_scale = torch.ones(2, 4, 1)
366
+ layer.w2_weight_scale = torch.ones(2, 8, 1)
367
+ layer.w13_input_scale = None
368
+ layer.w2_input_scale = None
369
+ layer.swiglu_alpha = 1.702
370
+ layer.swiglu_beta = None
371
+ layer.swiglu_limit = 7.0
372
+
373
+ quant_config = quant_method.get_fused_moe_quant_config(layer)
374
+
375
+ assert quant_config.gemm1_alpha == 1.702
376
+ assert quant_config.gemm1_beta is None
377
+ assert quant_config.gemm1_clamp_limit == 7.0
378
+
379
+
380
@pytest.mark.skipif(
381
not current_platform.is_cuda(), reason="This test is skipped on non-CUDA platform."
382
)
vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors_moe/compressed_tensors_moe_w8a8_fp8.py
+2
@@ -352,6 +352,8 @@ class CompressedTensorsW8A8Fp8MoEMethod(CompressedTensorsMoEMethod):
352
per_act_token_quant=is_per_token,
353
per_out_ch_quant=is_per_token,
354
block_shape=self.weight_block_size,
355
+ gemm1_alpha=getattr(layer, "swiglu_alpha", None),
356
+ gemm1_beta=getattr(layer, "swiglu_beta", None),
357
swiglu_limit=getattr(layer, "swiglu_limit", None),
358
layer=layer,
359
)