diff --git a/tests/diffusion/cache/test_cache_dit.py b/tests/diffusion/cache/test_cache_dit.py index 68545fe27..22f9b8611 100644 --- a/tests/diffusion/cache/test_cache_dit.py +++ b/tests/diffusion/cache/test_cache_dit.py @@ -13,7 +13,7 @@ import torch from cache_dit.caching.cache_blocks.pattern_0_1_2 import CachedBlocks_Pattern_0_1_2 import vllm_omni.diffusion.cache.cache_dit_backend as cd_backend -from vllm_omni.diffusion.cache.cache_dit_backend import CacheDiTAdapterConfig, CacheDiTBackend +from vllm_omni.diffusion.cache.cache_dit_backend import CacheDiTAdapterConfig, CacheDiTBackend, cache_summary from vllm_omni.diffusion.data import DiffusionCacheConfig from vllm_omni.diffusion.models.cosmos3.transformer_cosmos3 import Cosmos3VFMTransformer from vllm_omni.diffusion.models.helios.helios_transformer import HeliosTransformer3DModel @@ -193,3 +193,12 @@ def test_ltx2_cache_dit_receives_audio_as_encoder(init_fake_tp_group): # Pattern_0 maps (hidden_states, encoder_hidden_states) to (video, audio) assert torch.equal(captured["hidden_states"], video_in) assert torch.equal(captured["encoder_hidden_states"], audio_in) + + +def test_summary_with_no_transformer_is_nonfatal(): + """Regression test for https://github.com/vllm-project/vllm-omni/issues/4325.""" + + class FakePipeline: + pass + + cache_summary(pipeline=FakePipeline()) diff --git a/vllm_omni/diffusion/cache/cache_dit_backend.py b/vllm_omni/diffusion/cache/cache_dit_backend.py index c1f194ee8..e3d07bfcd 100644 --- a/vllm_omni/diffusion/cache/cache_dit_backend.py +++ b/vllm_omni/diffusion/cache/cache_dit_backend.py @@ -59,9 +59,12 @@ CUSTOM_DIT_ENABLERS: dict[str, Callable] = {} # Small helper to centralize cache-dit summaries. def cache_summary(pipeline: Any, details: bool = True) -> None: - cache_dit.summary(pipeline.transformer, details=details) + if hasattr(pipeline, "transformer"): + cache_dit.summary(pipeline.transformer, details=details) if hasattr(pipeline, "transformer_2"): cache_dit.summary(pipeline.transformer_2, details=details) + if not hasattr(pipeline, "transformer") and not hasattr(pipeline, "transformer_2"): + logger.warning("CacheDiT summary failed; this pipeline has no defined transformer attribute") def default_get_pipeline_transformer(pipeline: Any) -> Any: