A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 12, 13:30 UTC
[refactor] CTConfig methods to static/class methods (#28870)
Signed-off-by: HDCharles <charlesdavidhernandez@gmail.com> Co-authored-by: Isotr0py <mozf@mail2.sysu.edu.cn>
HDCharles committed
Nov 26, 2025 at 12:21 UTC
e603129505fdf39b0784fe9600feb9101ed5170d
1 file changed
+32
-23
vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors.py
+32
-23
@@ -266,8 +266,9 @@ class CompressedTensorsConfig(QuantizationConfig):
266
def get_config_filenames(cls) -> list[str]:
267
return []
268
269
+ @staticmethod
270
def _check_scheme_supported(
270
- self, min_capability: int, error: bool = True, match_exact: bool = False
271
+ min_capability: int, error: bool = True, match_exact: bool = False
272
) -> bool:
273
capability_tuple = current_platform.get_device_capability()
274
@@ -293,9 +294,8 @@ class CompressedTensorsConfig(QuantizationConfig):
294
else:
295
return False
296
296
- def _is_fp4a4_nvfp4(
297
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
298
- ):
297
+ @staticmethod
298
+ def _is_fp4a4_nvfp4(weight_quant: QuantizationArgs, input_quant: QuantizationArgs):
299
if weight_quant is None or input_quant is None:
300
return False
301
@@ -322,9 +322,8 @@ class CompressedTensorsConfig(QuantizationConfig):
322
and is_symmetric
323
)
324
325
- def _is_fp4a16_nvfp4(
326
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
327
- ):
325
+ @staticmethod
326
+ def _is_fp4a16_nvfp4(weight_quant: QuantizationArgs, input_quant: QuantizationArgs):
327
is_weight_only = weight_quant is not None and input_quant is None
328
is_tensor_group_quant = (
329
weight_quant.strategy == QuantizationStrategy.TENSOR_GROUP.value
@@ -344,8 +343,9 @@ class CompressedTensorsConfig(QuantizationConfig):
343
and is_symmetric
344
)
345
346
+ @staticmethod
347
def _is_static_tensor_w8a8(
348
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
348
+ weight_quant: QuantizationArgs, input_quant: QuantizationArgs
349
) -> bool:
350
is_8_bits = weight_quant.num_bits == input_quant.num_bits == 8
351
weight_strategy = (
@@ -362,8 +362,9 @@ class CompressedTensorsConfig(QuantizationConfig):
362
# Only symmetric weight quantization supported.
363
return is_8_bits and is_tensor and weight_quant.symmetric and is_static
364
365
+ @staticmethod
366
def _is_dynamic_token_w8a8(
366
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
367
+ weight_quant: QuantizationArgs, input_quant: QuantizationArgs
368
) -> bool:
369
is_8_bits = weight_quant.num_bits == input_quant.num_bits == 8
370
weight_strategy = (
@@ -379,8 +380,9 @@ class CompressedTensorsConfig(QuantizationConfig):
380
# Only symmetric weight quantization supported.
381
return is_8_bits and is_token and weight_quant.symmetric and is_dynamic
382
383
+ @staticmethod
384
def _is_dynamic_token_w4a8_int(
383
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
385
+ weight_quant: QuantizationArgs, input_quant: QuantizationArgs
386
) -> bool:
387
is_weight_4_bits = weight_quant.num_bits == 4
388
is_activation_8_bits = input_quant.num_bits == 8
@@ -403,8 +405,9 @@ class CompressedTensorsConfig(QuantizationConfig):
405
and is_dynamic
406
)
407
408
+ @staticmethod
409
def _is_fp8_w8a8(
407
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
410
+ weight_quant: QuantizationArgs, input_quant: QuantizationArgs
411
) -> bool:
412
# Confirm weights and activations quantized.
413
if weight_quant is None or input_quant is None:
@@ -439,8 +442,9 @@ class CompressedTensorsConfig(QuantizationConfig):
442
is_per_tensor_activation = input_quant.strategy == QuantizationStrategy.TENSOR
443
return is_symmetric_activation and is_per_tensor_activation
444
445
+ @staticmethod
446
def _is_fp8_w4a8(
443
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
447
+ weight_quant: QuantizationArgs, input_quant: QuantizationArgs
448
) -> bool:
449
if not weight_quant or not input_quant:
450
return False
@@ -462,29 +466,33 @@ class CompressedTensorsConfig(QuantizationConfig):
466
and is_dynamic
467
)
468
469
+ @classmethod
470
def _is_fp8_w4a8_sm90(
466
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
471
+ cls, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
472
) -> bool:
468
- return self._check_scheme_supported(
473
+ return cls._check_scheme_supported(
474
90, error=False, match_exact=True
470
- ) and self._is_fp8_w4a8(weight_quant, input_quant)
475
+ ) and cls._is_fp8_w4a8(weight_quant, input_quant)
476
477
+ @classmethod
478
def _is_fp8_w8a8_sm90(
473
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
479
+ cls, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
480
) -> bool:
475
- return self._check_scheme_supported(
481
+ return cls._check_scheme_supported(
482
90, error=False, match_exact=True
477
- ) and self._is_fp8_w8a8(weight_quant, input_quant)
483
+ ) and cls._is_fp8_w8a8(weight_quant, input_quant)
484
485
+ @classmethod
486
def _is_fp8_w8a8_sm100(
480
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
487
+ cls, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
488
) -> bool:
482
- return self._check_scheme_supported(
489
+ return cls._check_scheme_supported(
490
100, error=False, match_exact=True
484
- ) and self._is_fp8_w8a8(weight_quant, input_quant)
491
+ ) and cls._is_fp8_w8a8(weight_quant, input_quant)
492
493
+ @staticmethod
494
def _is_fp8_w8a16(
487
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
495
+ weight_quant: QuantizationArgs, input_quant: QuantizationArgs
496
) -> bool:
497
# Confirm weights quantized.
498
if weight_quant is None:
@@ -508,8 +516,9 @@ class CompressedTensorsConfig(QuantizationConfig):
516
and is_tensor_or_channel_or_block_weight
517
)
518
519
+ @staticmethod
520
def _is_wNa16_group_channel(
512
- self, weight_quant: QuantizationArgs, input_quant: QuantizationArgs
521
+ weight_quant: QuantizationArgs, input_quant: QuantizationArgs
522
) -> bool:
523
input_quant_none = input_quant is None
524
is_channel_group = (