Your current environment
The output of python collect_env.py
uv is set
/root/vllm-omni/vllm_omni/version.py:55: RuntimeWarning: vLLM and vLLM-Omni appear to have mismatched major/minor versions:
--> vLLM-Omni version 0.20.1.dev179+gb52a5ca40
--> vLLM version 0.21.0
This will likely cause compatibility issues.
warn_if_misaligned_vllm_version()
==============================
System Info
==============================
OS : Ubuntu 24.04.1 LTS (x86_64)
GCC version : (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Clang version : Could not collect
CMake version : version 3.31.4
Libc version : glibc-2.39
==============================
PyTorch Info
==============================
PyTorch version : 2.11.0+cu130
Is debug build : False
CUDA used to build PyTorch : 13.0
ROCM used to build PyTorch : N/A
==============================
Python Environment
==============================
Python version : 3.12.3 (main, Nov 6 2024, 18:32:19) [GCC 13.2.0] (64-bit runtime)
Python platform : Linux-5.4.0-216-generic-x86_64-with-glibc2.39
==============================
CUDA / GPU Info
==============================
Is CUDA available : True
CUDA runtime version : 12.8.61
CUDA_MODULE_LOADING set to : LAZY
GPU models and configuration :
GPU 0: NVIDIA A100-SXM4-80GB
GPU 1: NVIDIA A100-SXM4-80GB
GPU 2: NVIDIA A100-SXM4-80GB
GPU 3: NVIDIA A100-SXM4-80GB
GPU 4: NVIDIA A100-SXM4-80GB
GPU 5: NVIDIA A100-SXM4-80GB
GPU 6: NVIDIA A100-SXM4-80GB
GPU 7: NVIDIA A100-SXM4-80GB
Nvidia driver version : 580.159.03
cuDNN version : Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.9.7.0
/usr/lib/x86_64-linux-gnu/libcudnn_adv.so.9.7.0
/usr/lib/x86_64-linux-gnu/libcudnn_cnn.so.9.7.0
/usr/lib/x86_64-linux-gnu/libcudnn_engines_precompiled.so.9.7.0
/usr/lib/x86_64-linux-gnu/libcudnn_engines_runtime_compiled.so.9.7.0
/usr/lib/x86_64-linux-gnu/libcudnn_graph.so.9.7.0
/usr/lib/x86_64-linux-gnu/libcudnn_heuristic.so.9.7.0
/usr/lib/x86_64-linux-gnu/libcudnn_ops.so.9.7.0
HIP runtime version : N/A
MIOpen runtime version : N/A
Is XNNPACK available : True
==============================
CPU Info
==============================
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 43 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 192
On-line CPU(s) list: 0-191
Vendor ID: AuthenticAMD
BIOS Vendor ID: Advanced Micro Devices, Inc.
Model name: AMD EPYC 7642 48-Core Processor
BIOS Model name: AMD EPYC 7642 48-Core Processor Unknown CPU @ 2.3GHz
BIOS CPU family: 107
CPU family: 23
Model: 49
Thread(s) per core: 2
Core(s) per socket: 48
Socket(s): 2
Stepping: 0
Frequency boost: enabled
CPU(s) scaling MHz: 66%
CPU max MHz: 2300.0000
CPU min MHz: 1500.0000
BogoMIPS: 4600.01
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca sme sev sev_es
Virtualization: AMD-V
L1d cache: 3 MiB (96 instances)
L1i cache: 3 MiB (96 instances)
L2 cache: 48 MiB (96 instances)
L3 cache: 512 MiB (32 instances)
NUMA node(s): 2
NUMA node0 CPU(s): 0-47,96-143
NUMA node1 CPU(s): 48-95,144-191
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Retbleed: Vulnerable
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP conditional; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected
==============================
Versions of relevant libraries
==============================
[pip3] flashinfer-python==0.6.8.post1
[pip3] numpy==2.3.5
[pip3] nvidia-cublas==13.1.0.3
[pip3] nvidia-cuda-cupti==13.0.85
[pip3] nvidia-cuda-nvrtc==13.0.88
[pip3] nvidia-cuda-runtime==13.0.96
[pip3] nvidia-cudnn-cu13==9.19.0.56
[pip3] nvidia-cudnn-frontend==1.18.0
[pip3] nvidia-cufft==12.0.0.61
[pip3] nvidia-cufile==1.15.1.6
[pip3] nvidia-curand==10.4.0.35
[pip3] nvidia-cusolver==12.0.4.66
[pip3] nvidia-cusparse==12.6.3.3
[pip3] nvidia-cusparselt-cu13==0.8.0
[pip3] nvidia-cutlass-dsl==4.4.2
[pip3] nvidia-cutlass-dsl-libs-base==4.4.2
[pip3] nvidia-ml-py==13.595.45
[pip3] nvidia-nccl-cu13==2.28.9
[pip3] nvidia-nvjitlink==13.0.88
[pip3] nvidia-nvshmem-cu13==3.4.5
[pip3] nvidia-nvtx==13.0.85
[pip3] onnxruntime==1.26.0
[pip3] pyzmq==27.1.0
[pip3] tokenspeed-triton==3.7.10.post20260505
[pip3] torch==2.11.0
[pip3] torch-c-dlpack-ext==0.1.5
[pip3] torch-einops-utils==0.0.34
[pip3] torchaudio==2.11.0
[pip3] torchsde==0.2.6
[pip3] torchvision==0.26.0
[pip3] transformers==5.9.0
[pip3] triton==3.6.0
[pip3] x-transformers==2.19.3
[conda] Could not collect
==============================
vLLM Info
==============================
ROCM Version : Could not collect
vLLM Version : 0.21.0
vLLM-Omni Version : 0.20.1.dev179+gb52a5ca40 (git sha: b52a5ca40)
vLLM Build Flags:
CUDA Archs: 7.5 8.0 8.6 9.0 10.0 12.0+PTX; ROCm: Disabled
GPU Topology:
GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 NIC0 NIC1 NIC2 NIC3 NIC4 NIC5 NIC6 NIC7 NIC8 NIC9 NIC10 NIC11 NIC12 NIC13 NIC14 NIC15 NIC16 NIC17 CPU Affinity NUMA Affinity GPU NUMA ID
GPU0 X NV12 NV12 NV12 NV12 NV12 NV12 NV12 NODE NODE NODE NODE PXB PXB PXB PXB SYS SYS SYS SYS SYS SYS SYS SYSSYS SYS 0-47,96-143 0 N/A
GPU1 NV12 X NV12 NV12 NV12 NV12 NV12 NV12 NODE NODE NODE NODE PXB PXB PXB PXB SYS SYS SYS SYS SYS SYS SYS SYSSYS SYS 0-47,96-143 0 N/A
GPU2 NV12 NV12 X NV12 NV12 NV12 NV12 NV12 PXB PXB PXB PXBNODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYSSYS 0-47,96-143 0 N/A
GPU3 NV12 NV12 NV12 X NV12 NV12 NV12 NV12 PXB PXB PXB PXBNODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYSSYS 0-47,96-143 0 N/A
GPU4 NV12 NV12 NV12 NV12 X NV12 NV12 NV12 SYS SYS SYS SYSSYS SYS SYS SYS NODE NODE NODE NODE PXB PXB PXB PXB NODE NODE 48-95,144-191 1 N/A
GPU5 NV12 NV12 NV12 NV12 NV12 X NV12 NV12 SYS SYS SYS SYSSYS SYS SYS SYS NODE NODE NODE NODE PXB PXB PXB PXB NODE NODE 48-95,144-191 1 N/A
GPU6 NV12 NV12 NV12 NV12 NV12 NV12 X NV12 SYS SYS SYS SYSSYS SYS SYS SYS PXB PXB PXB PXB NODE NODE NODE NODE NODE NODE 48-95,144-191 1 N/A
GPU7 NV12 NV12 NV12 NV12 NV12 NV12 NV12 X SYS SYS SYS SYSSYS SYS SYS SYS PXB PXB PXB PXB NODE NODE NODE NODE NODE NODE 48-95,144-191 1 N/A
NIC0 NODE NODE PXB PXB SYS SYS SYS SYS X PIX PIX PIXNODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYSSYS
NIC1 NODE NODE PXB PXB SYS SYS SYS SYS PIX X PIX PIXNODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYSSYS
NIC2 NODE NODE PXB PXB SYS SYS SYS SYS PIX PIX X PIXNODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYSSYS
NIC3 NODE NODE PXB PXB SYS SYS SYS SYS PIX PIX PIX X NODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYSSYS
NIC4 PXB PXB NODE NODE SYS SYS SYS SYS NODE NODE NODE NODE X PIX PXB PXB SYS SYS SYS SYS SYS SYS SYS SYSSYS SYS
NIC5 PXB PXB NODE NODE SYS SYS SYS SYS NODE NODE NODE NODE PIX X PXB PXB SYS SYS SYS SYS SYS SYS SYS SYSSYS SYS
NIC6 PXB PXB NODE NODE SYS SYS SYS SYS NODE NODE NODE NODE PXB PXB X PIX SYS SYS SYS SYS SYS SYS SYS SYSSYS SYS
NIC7 PXB PXB NODE NODE SYS SYS SYS SYS NODE NODE NODE NODE PXB PXB PIX X SYS SYS SYS SYS SYS SYS SYS SYSSYS SYS
NIC8 SYS SYS SYS SYS NODE NODE PXB PXB SYS SYS SYS SYSSYS SYS SYS SYS X PIX PXB PXB NODE NODE NODE NODE NODE NODE
NIC9 SYS SYS SYS SYS NODE NODE PXB PXB SYS SYS SYS SYSSYS SYS SYS SYS PIX X PXB PXB NODE NODE NODE NODE NODE NODE
NIC10 SYS SYS SYS SYS NODE NODE PXB PXB SYS SYS SYS SYSSYS SYS SYS SYS PXB PXB X PIX NODE NODE NODE NODE NODE NODE
NIC11 SYS SYS SYS SYS NODE NODE PXB PXB SYS SYS SYS SYSSYS SYS SYS SYS PXB PXB PIX X NODE NODE NODE NODE NODE NODE
NIC12 SYS SYS SYS SYS PXB PXB NODE NODE SYS SYS SYS SYSSYS SYS SYS SYS NODE NODE NODE NODE X PIX PXB PXB NODE NODE
NIC13 SYS SYS SYS SYS PXB PXB NODE NODE SYS SYS SYS SYSSYS SYS SYS SYS NODE NODE NODE NODE PIX X PXB PXB NODE NODE
NIC14 SYS SYS SYS SYS PXB PXB NODE NODE SYS SYS SYS SYSSYS SYS SYS SYS NODE NODE NODE NODE PXB PXB X PIX NODE NODE
NIC15 SYS SYS SYS SYS PXB PXB NODE NODE SYS SYS SYS SYSSYS SYS SYS SYS NODE NODE NODE NODE PXB PXB PIX X NODE NODE
NIC16 SYS SYS SYS SYS NODE NODE NODE NODE SYS SYS SYS SYSSYS SYS SYS SYS NODE NODE NODE NODE NODE NODE NODE NODE X PIX
NIC17 SYS SYS SYS SYS NODE NODE NODE NODE SYS SYS SYS SYSSYS SYS SYS SYS NODE NODE NODE NODE NODE NODE NODE NODE PIX X
Legend:
X = Self
SYS = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
PHB = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
PXB = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
PIX = Connection traversing at most a single PCIe bridge
NV# = Connection traversing a bonded set of # NVLinks
NIC Legend:
NIC0: mlx5_0
NIC1: mlx5_1
NIC2: mlx5_2
NIC3: mlx5_3
NIC4: mlx5_4
NIC5: mlx5_5
NIC6: mlx5_6
NIC7: mlx5_7
NIC8: mlx5_8
NIC9: mlx5_9
NIC10: mlx5_10
NIC11: mlx5_11
NIC12: mlx5_12
NIC13: mlx5_13
NIC14: mlx5_14
NIC15: mlx5_15
NIC16: mlx5_16
NIC17: mlx5_17
==============================
Environment Variables
==============================
NVIDIA_VISIBLE_DEVICES=all
CUBLAS_VERSION=12.8.3.14
NVIDIA_REQUIRE_CUDA=cuda>=9.0
CUDA_CACHE_DISABLE=1
TORCH_CUDA_ARCH_LIST=7.5 8.0 8.6 9.0 10.0 12.0+PTX
NCCL_VERSION=2.25.1
NCCL_NVLS_ENABLE=0
NVIDIA_DRIVER_CAPABILITIES=compute,utility,video
TORCH_NCCL_USE_COMM_NONBLOCKING=0
NVIDIA_PRODUCT_NAME=PyTorch
CUDA_VERSION=12.8.0.038
PYTORCH_VERSION=2.6.0a0+ecf3bae
PYTORCH_BUILD_NUMBER=0
CUDNN_FRONTEND_VERSION=1.9.0
CUDNN_VERSION=9.7.0.66
PYTORCH_HOME=/opt/pytorch/pytorch
LD_LIBRARY_PATH=/root/.venv/lib/python3.12/site-packages/cv2/../../lib64:/usr/local/lib/python3.12/dist-packages/torch/lib:/usr/local/lib/python3.12/dist-packages/torch_tensorrt/lib:/usr/local/cuda/compat/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64
NVIDIA_BUILD_ID=134983853
CUDA_DRIVER_VERSION=570.86.10
PYTORCH_BUILD_VERSION=2.6.0a0+ecf3bae
CUDA_HOME=/usr/local/cuda
CUDA_HOME=/usr/local/cuda
CUDA_MODULE_LOADING=LAZY
NVIDIA_REQUIRE_JETPACK_HOST_MOUNTS=
NVIDIA_PYTORCH_VERSION=25.01
TORCH_ALLOW_TF32_CUBLAS_OVERRIDE=1
PYTORCH_NVML_BASED_CUDA_CHECK=1
TORCHINDUCTOR_COMPILE_THREADS=1
TORCHINDUCTOR_CACHE_DIR=/tmp/torchinductor_root
Your code version
The commit id or version of vllm
The commit id or version of vllm-omni
🐛 Describe the bug
Startup repro command:
vllm serve LTX-2.3-diffusers \
--omni --model-class-name LTX23Pipeline \
--ulysses-degree 2 --ulysses-mode advanced_uaa --enforce-eager
Offline repro command:
python examples/offline_inference/text_to_video/text_to_video.py \
--model LTX-2.3-diffusers \
--model-class-name LTX23Pipeline \
--prompt "A majestic bald eagle soaring over a misty mountain valley at dawn, golden sunlight breaking through clouds" \
--negative-prompt "blurry, low quality, distorted, watermark" \
--width 768 \
--height 512 \
--num-frames 128 \
--fps 24 \
--frame-rate 24 \
--num-inference-steps 10 \
--guidance-scale 4.0 \
--seed 42 \
--ulysses-degree 2 --ulysses-mode advanced_uaa --enforce-eager \
--output results/ltx23_baseline/usp2_uaa_eager_128f.mp4
Describe the Bug
LTX-2.3 fails during the startup dummy run when Ulysses sequence parallelism is enabled.
The failure happens before serving starts:
RuntimeError: Orchestrator initialization failed: Dummy run failed: Tensor size along dim 1 (1) must be >= world_size (2). Tensor shape: torch.Size([2, 1, 128])
The stack shows the failure happens when the SP hook tries to shard transformer input audio_hidden_states:
pipeline_ltx2_3.py", line 869, in forward
noise_pred_video, noise_pred_audio = self.transformer(
sequence_parallel.py", line 203, in pre_forward
input_val = self._prepare_sp_input(input_val, spm, args_list, kwargs)
sequence_parallel.py", line 358, in _prepare_sp_input
return sp_shard(x, sp_input.split_dim, validate=False)
sp_sharding.py", line 67, in sp_shard
raise ValueError(
ValueError: Tensor size along dim 1 (1) must be >= world_size (2). Tensor shape: torch.Size([2, 1, 128])
Root Cause
The LTX-2.3 dummy run uses the default diffusion sampling params. num_frames defaults to 1, and LTX-2.3 derives audio latent length from video duration:
duration_s = num_frames / frame_rate
audio_num_frames = round(duration_s * audio_latents_per_second)
With the current defaults this produces audio_num_frames == 1.
The shared LTX transformer SP plan shards audio_hidden_states on sequence dimension:
"audio_hidden_states": SequenceParallelInput(split_dim=1, expected_dims=3, split_output=False)
So the dummy-run audio tensor reaches the SP hook as:
and cannot be sharded across ulysses_degree=2.
LTX-2 Comparison
LTX2Pipeline.prepare_audio_latents() already pads audio latent length to sequence_parallel_size before the transformer, and unpads it before audio decode.
Relevant LTX-2 behavior:
- compute
padded_latent_length
- if
sequence_parallel_size > 1, round audio latent length up to a divisible length
- validate provided
audio_latents length against either original or padded length
- append zero padding when provided latents are unpadded
- use padded length for generated random audio latents
- unpad back to the original audio length before unpack/decode
LTX23Pipeline.prepare_audio_latents() currently keeps:
padded_latent_length = original_latent_length
and does not apply the same SP padding. That is the code difference that makes LTX-2 startup pass while LTX-2.3 fails on the dummy run.
Validation With Patch
After applying the same audio latent SP padding behavior to LTX23Pipeline.prepare_audio_latents():
python -m pytest tests/diffusion/models/ltx2/test_ltx2_3_pipeline.py::TestAudioLatentSPPadding -q
Result:
The offline LTX-2.3 generation command above also completed successfully with:
Parallel configuration: ulysses_degree=2, ring_degree=1
Frames: 128
Inference steps: 10
Saved generated video to results/ltx23_baseline/usp2_uaa_eager_128f.mp4
The dummy-run failure no longer occurs after padding audio_latents to the SP world size.
Expected Behavior
LTX-2.3 should use the same audio latent SP padding behavior as LTX-2:
- dummy run with
audio_num_frames == 1 and ulysses_degree=2 should pad audio latents to length 2
- transformer input
audio_hidden_states should be shardable
- output audio latents should be unpadded back to the original length before unpack/decode
Before submitting a new issue...
Your current environment
The output of
python collect_env.pyYour code version
The commit id or version of vllm
The commit id or version of vllm-omni
🐛 Describe the bug
Startup repro command:
vllm serve LTX-2.3-diffusers \ --omni --model-class-name LTX23Pipeline \ --ulysses-degree 2 --ulysses-mode advanced_uaa --enforce-eagerOffline repro command:
Describe the Bug
LTX-2.3 fails during the startup dummy run when Ulysses sequence parallelism is enabled.
The failure happens before serving starts:
The stack shows the failure happens when the SP hook tries to shard transformer input
audio_hidden_states:Root Cause
The LTX-2.3 dummy run uses the default diffusion sampling params.
num_framesdefaults to1, and LTX-2.3 derives audio latent length from video duration:With the current defaults this produces
audio_num_frames == 1.The shared LTX transformer SP plan shards
audio_hidden_stateson sequence dimension:So the dummy-run audio tensor reaches the SP hook as:
and cannot be sharded across
ulysses_degree=2.LTX-2 Comparison
LTX2Pipeline.prepare_audio_latents()already pads audio latent length tosequence_parallel_sizebefore the transformer, and unpads it before audio decode.Relevant LTX-2 behavior:
padded_latent_lengthsequence_parallel_size > 1, round audio latent length up to a divisible lengthaudio_latentslength against either original or padded lengthLTX23Pipeline.prepare_audio_latents()currently keeps:and does not apply the same SP padding. That is the code difference that makes LTX-2 startup pass while LTX-2.3 fails on the dummy run.
Validation With Patch
After applying the same audio latent SP padding behavior to
LTX23Pipeline.prepare_audio_latents():Result:
The offline LTX-2.3 generation command above also completed successfully with:
The dummy-run failure no longer occurs after padding
audio_latentsto the SP world size.Expected Behavior
LTX-2.3 should use the same audio latent SP padding behavior as LTX-2:
audio_num_frames == 1andulysses_degree=2should pad audio latents to length2audio_hidden_statesshould be shardableBefore submitting a new issue...