From e5030c75241227b60bfce4329b533932216b130e Mon Sep 17 00:00:00 2001 From: BruceLoveDecimal <39156883+BruceLoveDecimal@users.noreply.github.com> Date: Thu, 4 Jun 2026 17:49:07 +0800 Subject: [PATCH] [BugFix] Cast bf16 video frames to float32 before .numpy() in /v1/videos (#4114) Signed-off-by: BruceLoveDecimal <39156883+BruceLoveDecimal@users.noreply.github.com> --- vllm_omni/entrypoints/openai/video_api_utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vllm_omni/entrypoints/openai/video_api_utils.py b/vllm_omni/entrypoints/openai/video_api_utils.py index 3fb991225..303b3b4a1 100644 --- a/vllm_omni/entrypoints/openai/video_api_utils.py +++ b/vllm_omni/entrypoints/openai/video_api_utils.py @@ -94,7 +94,9 @@ def _normalize_video_tensor(video_tensor: torch.Tensor) -> np.ndarray: video_tensor = video_tensor.permute(1, 2, 3, 0) if video_tensor.is_floating_point(): - video_tensor = video_tensor.clamp(-1, 1) * 0.5 + 0.5 + # Cast to float32 first: bf16 (e.g. SANA-WM's refiner output) has no + # numpy dtype, so ``.numpy()`` below raises on it. + video_tensor = video_tensor.float().clamp(-1, 1) * 0.5 + 0.5 else: video_tensor = video_tensor.to(torch.float32) / 255.0 video_array = video_tensor.numpy()