Skip to content

vllm.model_executor.layers.quantization.online.requantization

Classes:

OnlineRequantizationMixin

Shared lifecycle for converting serialized weights before quantization.

Methods:

Source code in vllm/model_executor/layers/quantization/online/requantization.py
class OnlineRequantizationMixin:
    """Shared lifecycle for converting serialized weights before quantization."""

    def __init__(self, *args, **kwargs) -> None:
        super().__init__(*args, **kwargs)
        self.requantization_source: QuantizeMethodBase | None = None
        self.requantization_source_parameters: dict[str, torch.nn.Parameter] = {}

    def set_requantization_source(self, source_method: QuantizeMethodBase) -> None:
        """Configure serialized-weight conversion before online quantization."""
        self.requantization_source = source_method
        self.uses_meta_device = False

    def create_requantization_source_weights(
        self, layer: torch.nn.Module, *weight_args, **extra_weight_attrs
    ) -> bool:
        """Delegate weight creation to the source and track its parameters."""
        if self.requantization_source is None:
            return False

        existing_parameter_names = set(layer._parameters)
        self.requantization_source.create_weights(
            layer, *weight_args, **extra_weight_attrs
        )
        self.requantization_source_parameters = {
            name: parameter
            for name, parameter in layer._parameters.items()
            if name not in existing_parameter_names and parameter is not None
        }
        return True

    def release_requantization_source_weights(self, layer: torch.nn.Module) -> None:
        """Release serialized parameters after successful requantization."""
        for name, source_parameter in self.requantization_source_parameters.items():
            if layer._parameters.get(name) is source_parameter:
                delattr(layer, name)
        self.requantization_source_parameters.clear()

create_requantization_source_weights(layer, *weight_args, **extra_weight_attrs)

Delegate weight creation to the source and track its parameters.

Source code in vllm/model_executor/layers/quantization/online/requantization.py
def create_requantization_source_weights(
    self, layer: torch.nn.Module, *weight_args, **extra_weight_attrs
) -> bool:
    """Delegate weight creation to the source and track its parameters."""
    if self.requantization_source is None:
        return False

    existing_parameter_names = set(layer._parameters)
    self.requantization_source.create_weights(
        layer, *weight_args, **extra_weight_attrs
    )
    self.requantization_source_parameters = {
        name: parameter
        for name, parameter in layer._parameters.items()
        if name not in existing_parameter_names and parameter is not None
    }
    return True

release_requantization_source_weights(layer)

Release serialized parameters after successful requantization.

Source code in vllm/model_executor/layers/quantization/online/requantization.py
def release_requantization_source_weights(self, layer: torch.nn.Module) -> None:
    """Release serialized parameters after successful requantization."""
    for name, source_parameter in self.requantization_source_parameters.items():
        if layer._parameters.get(name) is source_parameter:
            delattr(layer, name)
    self.requantization_source_parameters.clear()

set_requantization_source(source_method)

Configure serialized-weight conversion before online quantization.

Source code in vllm/model_executor/layers/quantization/online/requantization.py
def set_requantization_source(self, source_method: QuantizeMethodBase) -> None:
    """Configure serialized-weight conversion before online quantization."""
    self.requantization_source = source_method
    self.uses_meta_device = False