Files
vllm-omni/tests/platforms/test_rocm_groupnorm_patch.py
T
a0d915254b [CI][ROCm] Add and stabilize HunyuanImage3 nightly coverage (#7934)
Signed-off-by: haic0 <149741444+haic0@users.noreply.github.com>
Signed-off-by: akshatvishu <akshatnayak197@gmail.com>
Signed-off-by: andyluo7 <andy.luo@amd.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: akshatvishu <akshatnayak197@gmail.com>
Co-authored-by: andyluo7 <andy.luo@amd.com>
2026-10-06 09:54:27 -07:00

56 lines
2.1 KiB
Python

# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM-Omni project
import importlib.util
import sys
import types
from pathlib import Path
import pytest
import torch.nn as nn
pytestmark = [pytest.mark.core_model, pytest.mark.cpu]
_PATCH_PATH = Path(__file__).parents[2] / "vllm_omni" / "platforms" / "rocm" / "patch" / "worker" / "patch_groupnorm.py"
_SPEC = importlib.util.spec_from_file_location("test_patch_groupnorm", _PATCH_PATH)
assert _SPEC is not None and _SPEC.loader is not None
patch_groupnorm = importlib.util.module_from_spec(_SPEC)
sys.modules[_SPEC.name] = patch_groupnorm
_SPEC.loader.exec_module(patch_groupnorm)
patch_groupnorm._registry_mod.initialize_model = patch_groupnorm._original_initialize_model
def test_hunyuan_image3_keeps_pytorch_groupnorm(monkeypatch):
model = types.SimpleNamespace(vae=nn.Sequential(nn.GroupNorm(4, 8)))
monkeypatch.setattr(patch_groupnorm, "_original_initialize_model", lambda _: model)
monkeypatch.setattr(
patch_groupnorm,
"_replace_groupnorm_with_aiter",
lambda _: pytest.fail("Hunyuan Image 3.0 must keep PyTorch GroupNorm"),
)
od_config = types.SimpleNamespace(model_class_name="HunyuanImage3ForCausalMM")
assert patch_groupnorm._patched_initialize_model(od_config) is model
assert type(model.vae[0]) is nn.GroupNorm
def test_other_models_keep_aiter_groupnorm_patch(monkeypatch):
model = types.SimpleNamespace(vae=nn.Sequential(nn.GroupNorm(4, 8)))
monkeypatch.setattr(patch_groupnorm, "_original_initialize_model", lambda _: model)
replaced = False
def replace_groupnorm(_vae):
nonlocal replaced
replaced = True
return True
monkeypatch.setattr(patch_groupnorm, "_replace_groupnorm_with_aiter", replace_groupnorm)
aiter_ops = types.ModuleType("vllm._aiter_ops")
setattr(aiter_ops, "is_aiter_found_and_supported", lambda: True)
monkeypatch.setitem(sys.modules, "vllm._aiter_ops", aiter_ops)
od_config = types.SimpleNamespace(model_class_name="OtherDiffusionModel")
assert patch_groupnorm._patched_initialize_model(od_config) is model
assert replaced