58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
"""Optional real-backend checks for Diffusers quantization config conversion."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
pytestmark = [pytest.mark.core_model, pytest.mark.diffusion, pytest.mark.cpu]
|
|
|
|
|
|
def _load_quantization_utils():
|
|
module_path = (
|
|
Path(__file__).resolve().parents[3] / "vllm_omni/diffusion/models/diffusers_adapter/quantization_utils.py"
|
|
)
|
|
spec = importlib.util.spec_from_file_location("diffusers_quantization_utils_real_test", module_path)
|
|
assert spec is not None
|
|
assert spec.loader is not None
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
def test_convert_diffusers_quantization_config_from_real_torchao_dict():
|
|
diffusers = pytest.importorskip("diffusers")
|
|
torchao_quantization = pytest.importorskip("torchao.quantization")
|
|
quant_type_cls = getattr(torchao_quantization, "Int8DynamicActivationInt8WeightConfig", None)
|
|
if quant_type_cls is None:
|
|
pytest.skip("torchao does not expose Int8DynamicActivationInt8WeightConfig")
|
|
|
|
quantization_utils = _load_quantization_utils()
|
|
|
|
real_torchao_config = diffusers.TorchAoConfig(quant_type=quant_type_cls())
|
|
serialized_torchao_config = real_torchao_config.to_dict()
|
|
assert serialized_torchao_config["quant_type"].keys() == {"default"}
|
|
|
|
load_kwargs = {
|
|
"quantization_config": {
|
|
"quant_mapping": {
|
|
"transformer": serialized_torchao_config,
|
|
},
|
|
},
|
|
}
|
|
|
|
quantization_utils.convert_diffusers_quantization_config(load_kwargs)
|
|
|
|
quant_config = load_kwargs["quantization_config"]
|
|
component_config = quant_config.quant_mapping["transformer"]
|
|
assert isinstance(quant_config, diffusers.PipelineQuantizationConfig)
|
|
assert isinstance(component_config, diffusers.TorchAoConfig)
|
|
assert isinstance(
|
|
component_config.quant_type,
|
|
quant_type_cls,
|
|
)
|