diff --git a/image_output.png b/image_output.png new file mode 100644 index 000000000..c216f4dff Binary files /dev/null and b/image_output.png differ diff --git a/tests/e2e/stage_configs/qwen2_5_omni_ci_1773652593.yaml b/tests/e2e/stage_configs/qwen2_5_omni_ci_1773652593.yaml new file mode 100644 index 000000000..b68bdb71a --- /dev/null +++ b/tests/e2e/stage_configs/qwen2_5_omni_ci_1773652593.yaml @@ -0,0 +1,48 @@ +stage_args: +- stage_id: 0 + runtime: {process: true, devices: '0', max_batch_size: 1} + engine_args: {model_stage: thinker, model_arch: Qwen2_5OmniForConditionalGeneration, + worker_type: ar, scheduler_cls: vllm_omni.core.sched.omni_ar_scheduler.OmniARScheduler, + max_model_len: 16384, max_num_batched_tokens: 16384, max_num_seqs: 1, gpu_memory_utilization: 0.9, + skip_mm_profiling: true, enforce_eager: 'true', trust_remote_code: true, engine_output_type: latent, + enable_prefix_caching: false, mm_processor_cache_gb: 0} + is_comprehension: true + final_output: true + final_output_type: text + default_sampling_params: {temperature: 0.0, top_p: 1.0, top_k: -1, max_tokens: 128, + seed: 42, detokenize: true, repetition_penalty: 1.1} +- stage_id: 1 + runtime: {process: true, devices: '1', max_batch_size: 1} + engine_args: {model_stage: talker, model_arch: Qwen2_5OmniForConditionalGeneration, + worker_type: ar, scheduler_cls: vllm_omni.core.sched.omni_ar_scheduler.OmniARScheduler, + max_model_len: 16384, max_num_batched_tokens: 16384, max_num_seqs: 1, gpu_memory_utilization: 0.4, + skip_mm_profiling: true, enforce_eager: 'true', trust_remote_code: true, enable_prefix_caching: false, + engine_output_type: latent} + engine_input_source: [0] + custom_process_input_func: vllm_omni.model_executor.stage_input_processors.qwen2_5_omni.thinker2talker + default_sampling_params: + temperature: 0.9 + top_p: 0.8 + top_k: 40 + max_tokens: 4096 + seed: 42 + detokenize: true + repetition_penalty: 1.05 + stop_token_ids: [8294] +- stage_id: 2 + runtime: {process: true, devices: '1', max_batch_size: 1} + engine_args: {model_stage: code2wav, model_arch: Qwen2_5OmniForConditionalGeneration, + worker_type: generation, scheduler_cls: vllm_omni.core.sched.omni_generation_scheduler.OmniGenerationScheduler, + gpu_memory_utilization: 0.5, enforce_eager: true, trust_remote_code: true, enable_prefix_caching: false, + engine_output_type: audio, max_num_batched_tokens: 4096, max_model_len: 4096} + engine_input_source: [1] + final_output: true + final_output_type: audio + default_sampling_params: {temperature: 0.0, top_p: 1.0, top_k: -1, max_tokens: 4096, + seed: 42, detokenize: true, repetition_penalty: 1.1} +runtime: + enabled: true + defaults: {window_size: -1, max_inflight: 1} + edges: + - {from: 0, to: 1, window_size: -1} + - {from: 1, to: 2, window_size: -1} diff --git a/tests/e2e/stage_configs/qwen2_5_omni_ci_1773653262.yaml b/tests/e2e/stage_configs/qwen2_5_omni_ci_1773653262.yaml new file mode 100644 index 000000000..b68bdb71a --- /dev/null +++ b/tests/e2e/stage_configs/qwen2_5_omni_ci_1773653262.yaml @@ -0,0 +1,48 @@ +stage_args: +- stage_id: 0 + runtime: {process: true, devices: '0', max_batch_size: 1} + engine_args: {model_stage: thinker, model_arch: Qwen2_5OmniForConditionalGeneration, + worker_type: ar, scheduler_cls: vllm_omni.core.sched.omni_ar_scheduler.OmniARScheduler, + max_model_len: 16384, max_num_batched_tokens: 16384, max_num_seqs: 1, gpu_memory_utilization: 0.9, + skip_mm_profiling: true, enforce_eager: 'true', trust_remote_code: true, engine_output_type: latent, + enable_prefix_caching: false, mm_processor_cache_gb: 0} + is_comprehension: true + final_output: true + final_output_type: text + default_sampling_params: {temperature: 0.0, top_p: 1.0, top_k: -1, max_tokens: 128, + seed: 42, detokenize: true, repetition_penalty: 1.1} +- stage_id: 1 + runtime: {process: true, devices: '1', max_batch_size: 1} + engine_args: {model_stage: talker, model_arch: Qwen2_5OmniForConditionalGeneration, + worker_type: ar, scheduler_cls: vllm_omni.core.sched.omni_ar_scheduler.OmniARScheduler, + max_model_len: 16384, max_num_batched_tokens: 16384, max_num_seqs: 1, gpu_memory_utilization: 0.4, + skip_mm_profiling: true, enforce_eager: 'true', trust_remote_code: true, enable_prefix_caching: false, + engine_output_type: latent} + engine_input_source: [0] + custom_process_input_func: vllm_omni.model_executor.stage_input_processors.qwen2_5_omni.thinker2talker + default_sampling_params: + temperature: 0.9 + top_p: 0.8 + top_k: 40 + max_tokens: 4096 + seed: 42 + detokenize: true + repetition_penalty: 1.05 + stop_token_ids: [8294] +- stage_id: 2 + runtime: {process: true, devices: '1', max_batch_size: 1} + engine_args: {model_stage: code2wav, model_arch: Qwen2_5OmniForConditionalGeneration, + worker_type: generation, scheduler_cls: vllm_omni.core.sched.omni_generation_scheduler.OmniGenerationScheduler, + gpu_memory_utilization: 0.5, enforce_eager: true, trust_remote_code: true, enable_prefix_caching: false, + engine_output_type: audio, max_num_batched_tokens: 4096, max_model_len: 4096} + engine_input_source: [1] + final_output: true + final_output_type: audio + default_sampling_params: {temperature: 0.0, top_p: 1.0, top_k: -1, max_tokens: 4096, + seed: 42, detokenize: true, repetition_penalty: 1.1} +runtime: + enabled: true + defaults: {window_size: -1, max_inflight: 1} + edges: + - {from: 0, to: 1, window_size: -1} + - {from: 1, to: 2, window_size: -1} diff --git a/tests/e2e/stage_configs/qwen3_omni_ci_1773652593.yaml b/tests/e2e/stage_configs/qwen3_omni_ci_1773652593.yaml new file mode 100644 index 000000000..c763bb2c7 --- /dev/null +++ b/tests/e2e/stage_configs/qwen3_omni_ci_1773652593.yaml @@ -0,0 +1,45 @@ +stage_args: +- stage_id: 0 + runtime: {devices: '0', max_batch_size: 5} + engine_args: {model_stage: thinker, model_arch: Qwen3OmniMoeForConditionalGeneration, + worker_type: ar, scheduler_cls: vllm_omni.core.sched.omni_ar_scheduler.OmniARScheduler, + gpu_memory_utilization: 0.9, enforce_eager: false, trust_remote_code: true, engine_output_type: latent, + distributed_executor_backend: mp, max_num_batched_tokens: 32768, max_model_len: 32768, + enable_prefix_caching: false, mm_processor_cache_gb: 0, hf_config_name: thinker_config, + tensor_parallel_size: 1, load_format: dummy, custom_process_next_stage_input_func: vllm_omni.model_executor.stage_input_processors.qwen3_omni.thinker2talker_async_chunk} + final_output: true + final_output_type: text + is_comprehension: true + default_sampling_params: {temperature: 0.4, top_p: 0.9, top_k: 1, max_tokens: 100, + seed: 42, ignore_eos: false, detokenize: true, repetition_penalty: 1.05} +- stage_id: 1 + runtime: {devices: '1', max_batch_size: 5} + engine_args: {model_stage: talker, model_arch: Qwen3OmniMoeForConditionalGeneration, + worker_type: ar, scheduler_cls: vllm_omni.core.sched.omni_ar_scheduler.OmniARScheduler, + gpu_memory_utilization: 0.5, enforce_eager: false, trust_remote_code: true, engine_output_type: latent, + enable_prefix_caching: false, max_num_batched_tokens: 32768, max_model_len: 32768, + distributed_executor_backend: mp, hf_config_name: talker_config, load_format: dummy, + custom_process_next_stage_input_func: vllm_omni.model_executor.stage_input_processors.qwen3_omni.talker2code2wav_async_chunk} + engine_input_source: [0] + custom_process_input_func: vllm_omni.model_executor.stage_input_processors.qwen3_omni.thinker2talker + default_sampling_params: + temperature: 0.9 + top_k: 50 + max_tokens: 1000 + seed: 42 + detokenize: false + repetition_penalty: 1.05 + stop_token_ids: [2150] +- stage_id: 2 + runtime: {devices: '1', max_batch_size: 1} + engine_args: {model_stage: code2wav, model_arch: Qwen3OmniMoeForConditionalGeneration, + worker_type: generation, scheduler_cls: vllm_omni.core.sched.omni_generation_scheduler.OmniGenerationScheduler, + enforce_eager: true, trust_remote_code: true, enable_prefix_caching: false, engine_output_type: audio, + gpu_memory_utilization: 0.1, distributed_executor_backend: mp, max_num_batched_tokens: 100000, + hf_config_name: thinker_config, async_scheduling: false, load_format: dummy} + engine_input_source: [1] + final_output: true + final_output_type: audio + default_sampling_params: {temperature: 0.0, top_p: 1.0, top_k: -1, max_tokens: 2000, + seed: 42, detokenize: true, repetition_penalty: 1.1} +async_chunk: true diff --git a/tests/e2e/stage_configs/qwen3_omni_ci_1773653262.yaml b/tests/e2e/stage_configs/qwen3_omni_ci_1773653262.yaml new file mode 100644 index 000000000..c763bb2c7 --- /dev/null +++ b/tests/e2e/stage_configs/qwen3_omni_ci_1773653262.yaml @@ -0,0 +1,45 @@ +stage_args: +- stage_id: 0 + runtime: {devices: '0', max_batch_size: 5} + engine_args: {model_stage: thinker, model_arch: Qwen3OmniMoeForConditionalGeneration, + worker_type: ar, scheduler_cls: vllm_omni.core.sched.omni_ar_scheduler.OmniARScheduler, + gpu_memory_utilization: 0.9, enforce_eager: false, trust_remote_code: true, engine_output_type: latent, + distributed_executor_backend: mp, max_num_batched_tokens: 32768, max_model_len: 32768, + enable_prefix_caching: false, mm_processor_cache_gb: 0, hf_config_name: thinker_config, + tensor_parallel_size: 1, load_format: dummy, custom_process_next_stage_input_func: vllm_omni.model_executor.stage_input_processors.qwen3_omni.thinker2talker_async_chunk} + final_output: true + final_output_type: text + is_comprehension: true + default_sampling_params: {temperature: 0.4, top_p: 0.9, top_k: 1, max_tokens: 100, + seed: 42, ignore_eos: false, detokenize: true, repetition_penalty: 1.05} +- stage_id: 1 + runtime: {devices: '1', max_batch_size: 5} + engine_args: {model_stage: talker, model_arch: Qwen3OmniMoeForConditionalGeneration, + worker_type: ar, scheduler_cls: vllm_omni.core.sched.omni_ar_scheduler.OmniARScheduler, + gpu_memory_utilization: 0.5, enforce_eager: false, trust_remote_code: true, engine_output_type: latent, + enable_prefix_caching: false, max_num_batched_tokens: 32768, max_model_len: 32768, + distributed_executor_backend: mp, hf_config_name: talker_config, load_format: dummy, + custom_process_next_stage_input_func: vllm_omni.model_executor.stage_input_processors.qwen3_omni.talker2code2wav_async_chunk} + engine_input_source: [0] + custom_process_input_func: vllm_omni.model_executor.stage_input_processors.qwen3_omni.thinker2talker + default_sampling_params: + temperature: 0.9 + top_k: 50 + max_tokens: 1000 + seed: 42 + detokenize: false + repetition_penalty: 1.05 + stop_token_ids: [2150] +- stage_id: 2 + runtime: {devices: '1', max_batch_size: 1} + engine_args: {model_stage: code2wav, model_arch: Qwen3OmniMoeForConditionalGeneration, + worker_type: generation, scheduler_cls: vllm_omni.core.sched.omni_generation_scheduler.OmniGenerationScheduler, + enforce_eager: true, trust_remote_code: true, enable_prefix_caching: false, engine_output_type: audio, + gpu_memory_utilization: 0.1, distributed_executor_backend: mp, max_num_batched_tokens: 100000, + hf_config_name: thinker_config, async_scheduling: false, load_format: dummy} + engine_input_source: [1] + final_output: true + final_output_type: audio + default_sampling_params: {temperature: 0.0, top_p: 1.0, top_k: -1, max_tokens: 2000, + seed: 42, detokenize: true, repetition_penalty: 1.1} +async_chunk: true