@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / e603129505
Fork 0

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 = (