[Bugfix] Fix Cosmos3-Edge processor after transformers 5.15 release (#51989)

Signed-off-by: Bartosz Stefaniak <bstefaniak@nvidia.com>

bastefaniak committed Aug 14, 2026 at 11:46 UTC 20405bfb15546bb988f425a3c95fef9ac59104c7
2 files changed +20 -5
tests/models/registry.py
+8 -1
@@ -825,7 +825,14 @@ _MULTIMODAL_EXAMPLE_MODELS = {
825 "Cosmos3EdgeForConditionalGeneration": _HfExamplesInfo(
826 "nvidia/Cosmos3-Edge",
827 max_model_len=4096,
828 - is_available_online=False,
828 + min_transformers_version="5.15",
829 + use_original_num_layers=True,
830 + hf_overrides={
831 + "text_config": {
832 + "num_hidden_layers": 2,
833 + "hybrid_override_pattern": "*-",
834 + }
835 + },
836 ),
837 "DeepseekVLV2ForCausalLM": _HfExamplesInfo(
838 "deepseek-ai/deepseek-vl2-tiny",
vllm/transformers_utils/processors/cosmos3_edge.py
+12 -4
@@ -8,12 +8,16 @@ import torch
8 from torchvision.transforms import InterpolationMode
9 from transformers import AutoTokenizer
10 from transformers.feature_extraction_utils import BatchFeature
11 -from transformers.image_utils import ChannelDimension, PILImageResampling, SizeDict
11 +from transformers.image_utils import (
12 + ChannelDimension,
13 + PILImageResampling,
14 + SizeDict,
15 + get_image_size,
16 +)
17 from transformers.models.qwen3_vl.processing_qwen3_vl import Qwen3VLProcessor
18 from transformers.models.qwen3_vl.video_processing_qwen3_vl import (
19 Qwen3VLVideoProcessor,
20 Qwen3VLVideoProcessorInitKwargs,
16 - get_image_size,
21 smart_resize,
22 )
23 from transformers.models.siglip2.image_processing_siglip2 import (
@@ -22,6 +26,7 @@ from transformers.models.siglip2.image_processing_siglip2 import (
26 )
27 from transformers.processing_utils import Unpack
28 from transformers.utils import TensorType
29 +from transformers.video_processing_utils import BaseVideoProcessor
30 from transformers.video_utils import group_videos_by_shape, reorder_videos
31
32
@@ -225,8 +230,11 @@ class Cosmos3EdgeVideoProcessor(Qwen3VLVideoProcessor):
230 max_pixels=size.longest_edge,
231 )
232 stacked_videos = stacked_videos.view(B * T, C, H, W)
228 - stacked_videos = self.resize(
229 - stacked_videos,
233 + # The target size is already computed, so bypass Qwen3-VL's
234 + # dynamic resize, which expects an unflattened video tensor.
235 + stacked_videos = BaseVideoProcessor.resize(
236 + self,
237 + image=stacked_videos,
238 size=SizeDict(height=resized_height, width=resized_width),
239 resample=resample,
240 )