From c0331048d0e28cb66a18a278ef93e68d4ab1c878 Mon Sep 17 00:00:00 2001 From: Aochang Liu <102237385+HelloWorldU@users.noreply.github.com> Date: Mon, 28 Sep 2026 13:49:40 +0800 Subject: [PATCH] [Misc] Sort OMNI_PIPELINES registry alphabetically (#8208) Signed-off-by: HelloWorldU --- tests/config/test_pipeline_registry.py | 5 + vllm_omni/config/pipeline_registry.py | 127 +++++++++++++------------ 2 files changed, 69 insertions(+), 63 deletions(-) diff --git a/tests/config/test_pipeline_registry.py b/tests/config/test_pipeline_registry.py index 88109e052..a43445507 100644 --- a/tests/config/test_pipeline_registry.py +++ b/tests/config/test_pipeline_registry.py @@ -79,3 +79,8 @@ def test_minimax_h3_disaggregation_is_explicit_opt_in(): pipeline = OMNI_PIPELINES["minimax_h3_disaggregated"] assert isinstance(pipeline, PipelineConfig) assert pipeline.model_type == "minimax_h3_disaggregated" + + +def test_omni_pipelines_sorted_alphabetically(): + """OMNI_PIPELINES keys must stay sorted (case-insensitive) by model_type.""" + assert list(OMNI_PIPELINES) == sorted(OMNI_PIPELINES, key=str.lower) diff --git a/vllm_omni/config/pipeline_registry.py b/vllm_omni/config/pipeline_registry.py index 5d7a7f4bd..686ef1bf0 100644 --- a/vllm_omni/config/pipeline_registry.py +++ b/vllm_omni/config/pipeline_registry.py @@ -13,7 +13,8 @@ To add a new pipeline: stages are optional, implement a resolver that consumes the HF config and returns a ``PipelineConfig``. 3. Update the registry to map the key to the new config object (in the case - of new keys) or to the resolver func. + of new keys) or to the resolver func. Keep ``OMNI_PIPELINES`` sorted + alphabetically by key. Out of tree pipeline configs or resolvers can also be registered with register_pipeline. @@ -131,82 +132,82 @@ PipelineResolverFunc: TypeAlias = Callable[[PretrainedConfig | None], PipelineCo # --- Multi-stage omni pipelines (LLM-centric; audio / video I/O) --- OMNI_PIPELINES: dict[str, PipelineConfig | PipelineResolverFunc] = { + "arktts": AUDIO8_TTS_PIPELINE, + "audex_s2s": AUDEX_S2S_PIPELINE, + "audex_thinker_only": AUDEX_THINKER_ONLY_PIPELINE, + "audex_tta": AUDEX_TTA_PIPELINE, + "audex_tts": AUDEX_TTS_PIPELINE, + "auk": AUK_PIPELINE, "aura_omni": AURA_OMNI_PIPELINE, + "bagel": BAGEL_PIPELINE, + "bagel_single_stage": BAGEL_SINGLE_STAGE_PIPELINE, + "bagel_think": BAGEL_THINK_PIPELINE, "breeze": BREEZE_TTS_2_PIPELINE, + # Cosmos3 policy / omni-deploy topologies share HF metadata with video + # Cosmos3 checkpoints (which stay on the single-stage diffusion fallback), + # so these entries are only reachable through a deploy yaml's ``pipeline:`` + # key (see deploy/cosmos3_policy_droid.yaml and deploy/cosmos3_omni.yaml). + "cosmos3_omni_deploy": COSMOS3_OMNI_DEPLOY_PIPELINE, + "cosmos3_policy": COSMOS3_POLICY_PIPELINE, + "cosyvoice3": COSYVOICE3_PIPELINE, + "covo_audio": COVO_AUDIO_PIPELINE, + "dreamzero": DREAMZERO_PIPELINE, + "fish_qwen3_omni": FISH_SPEECH_PIPELINE, + "gepard": GEPARD_PIPELINE, + "glm_image": GLM_IMAGE_PIPELINE, + "glm_tts": GLM_TTS_PIPELINE, + "Gr00tN1d7": GR00T_N1D7_PIPELINE, + "higgs_audio_v2": HIGGS_AUDIO_V2_PIPELINE, + "higgs_multimodal_qwen3": HIGGS_AUDIO_V3_PIPELINE, + "hunyuan_image3_ar": HUNYUAN_IMAGE3_AR_PIPELINE, + "hunyuan_image3_dit": HUNYUAN_IMAGE3_DIT_PIPELINE, + "hunyuan_image_3_moe": HUNYUAN_IMAGE3_PIPELINE, + "hunyuan_video_15": HUNYUAN_VIDEO_15_PIPELINE, + "indextts2": INDEXTTS2_PIPELINE, + "indextts2_5": INDEXTTS25_PIPELINE, "joyai_vl_interaction": JOYAI_VL_INTERACTION_PIPELINE, - "qwen2_5_omni": QWEN2_5_OMNI_PIPELINE, - "qwen2_5_omni_thinker_only": QWEN2_5_OMNI_THINKER_ONLY_PIPELINE, - "personaplex": PERSONAPLEX_PIPELINE, - "nemotron_voicechat": NEMOTRON_VOICECHAT_PIPELINE, + "lance": LANCE_PIPELINE, + "lingbot_world": LINGBOT_WORLD_PIPELINE, + "mammoth_moda2": MAMMOTH_MODA2_PIPELINE, + "mammoth_moda2_ar": MAMMOTH_MODA2_AR_PIPELINE, + "mimo_audio": MIMO_AUDIO_PIPELINE, + "ming_flash_omni": MING_FLASH_OMNI_PIPELINE, + "ming_flash_omni_image": MING_FLASH_OMNI_IMAGE_PIPELINE, + "ming_flash_omni_thinker_only": MING_FLASH_OMNI_THINKER_ONLY_PIPELINE, + "ming_flash_omni_tts": MING_FLASH_OMNI_TTS_PIPELINE, + "ming_image": MING_IMAGE_PIPELINE, + "ming_tts": MING_TTS_PIPELINE, + "ming_tts_moe": MING_TTS_MOE_PIPELINE, + "minicpmo_4_5": MINICPMO_4_5_PIPELINE, + "minimax_h3_disaggregated": MINIMAX_H3_PIPELINE, + "minimax_music3": MINIMAX_MUSIC3_PIPELINE, + "moss_tts_delay": MOSS_TTS_PIPELINE, + "moss_tts_local": MOSS_TTS_LOCAL_PIPELINE, + "moss_tts_nano": MOSS_TTS_NANO_PIPELINE, + "moss_tts_realtime": MOSS_TTS_REALTIME_PIPELINE, + # Alias: the Nemotron-Labs-Audex-2B repo-root config.json reports + # ``model_type: nemotron_labs_audex``; bare ``vllm-omni serve `` + # auto-detects through it and must land on the default (TTS) pipeline. + "nemotron_labs_audex": AUDEX_TTS_PIPELINE, # Alias: lets bare `vllm-omni serve ` # auto-detect through the path-basename fallback (the checkpoint config.json # has no model_type key). "nemotron_labs_voicechat": NEMOTRON_VOICECHAT_PIPELINE, + "nemotron_voicechat": NEMOTRON_VOICECHAT_PIPELINE, + "omnivoice": OMNIVOICE_PIPELINE, + "personaplex": PERSONAPLEX_PIPELINE, + "pi0": PI0_PIPELINE, + "pi05": PI05_PIPELINE, + "qwen2_5_omni": QWEN2_5_OMNI_PIPELINE, + "qwen2_5_omni_thinker_only": QWEN2_5_OMNI_THINKER_ONLY_PIPELINE, "qwen3_omni_moe": resolve_qwen3_omni_pipeline, "qwen3_omni_moe_thinker_only": QWEN3_OMNI_THINKER_ONLY_PIPELINE, "qwen3_tts": QWEN3_TTS_PIPELINE, "step_audio_2": STEP_AUDIO2_PIPELINE, "step_audio_2_asr": STEP_AUDIO2_ASR_PIPELINE, - "covo_audio": COVO_AUDIO_PIPELINE, - "bagel": BAGEL_PIPELINE, - "bagel_think": BAGEL_THINK_PIPELINE, - "bagel_single_stage": BAGEL_SINGLE_STAGE_PIPELINE, - "lance": LANCE_PIPELINE, - "dreamzero": DREAMZERO_PIPELINE, - "lingbot_world": LINGBOT_WORLD_PIPELINE, - "Gr00tN1d7": GR00T_N1D7_PIPELINE, - "pi0": PI0_PIPELINE, - "pi05": PI05_PIPELINE, - # Cosmos3 policy / omni-deploy topologies share HF metadata with video - # Cosmos3 checkpoints (which stay on the single-stage diffusion fallback), - # so these entries are only reachable through a deploy yaml's ``pipeline:`` - # key (see deploy/cosmos3_policy_droid.yaml and deploy/cosmos3_omni.yaml). - "cosmos3_policy": COSMOS3_POLICY_PIPELINE, - "cosmos3_omni_deploy": COSMOS3_OMNI_DEPLOY_PIPELINE, - "gepard": GEPARD_PIPELINE, - "glm_image": GLM_IMAGE_PIPELINE, - "hunyuan_image_3_moe": HUNYUAN_IMAGE3_PIPELINE, - "hunyuan_image3_ar": HUNYUAN_IMAGE3_AR_PIPELINE, - "hunyuan_image3_dit": HUNYUAN_IMAGE3_DIT_PIPELINE, - "hunyuan_video_15": HUNYUAN_VIDEO_15_PIPELINE, - "wan2_2_ti2v": WAN2_2_TI2V_PIPELINE, "voxcpm2": VOXCPM2_PIPELINE, - "auk": AUK_PIPELINE, - "cosyvoice3": COSYVOICE3_PIPELINE, - "audex_tts": AUDEX_TTS_PIPELINE, - "audex_tta": AUDEX_TTA_PIPELINE, - "audex_thinker_only": AUDEX_THINKER_ONLY_PIPELINE, - "audex_s2s": AUDEX_S2S_PIPELINE, - # Alias: the Nemotron-Labs-Audex-2B repo-root config.json reports - # ``model_type: nemotron_labs_audex``; bare ``vllm-omni serve `` - # auto-detects through it and must land on the default (TTS) pipeline. - "nemotron_labs_audex": AUDEX_TTS_PIPELINE, - "mimo_audio": MIMO_AUDIO_PIPELINE, - "ming_tts": MING_TTS_PIPELINE, - "ming_tts_moe": MING_TTS_MOE_PIPELINE, "voxtral_tts": VOXTRAL_TTS_PIPELINE, - "glm_tts": GLM_TTS_PIPELINE, - "fish_qwen3_omni": FISH_SPEECH_PIPELINE, - "arktts": AUDIO8_TTS_PIPELINE, - "ming_flash_omni": MING_FLASH_OMNI_PIPELINE, - "ming_flash_omni_tts": MING_FLASH_OMNI_TTS_PIPELINE, - "ming_flash_omni_thinker_only": MING_FLASH_OMNI_THINKER_ONLY_PIPELINE, - "ming_flash_omni_image": MING_FLASH_OMNI_IMAGE_PIPELINE, - "ming_image": MING_IMAGE_PIPELINE, - "moss_tts_nano": MOSS_TTS_NANO_PIPELINE, - "minimax_h3_disaggregated": MINIMAX_H3_PIPELINE, - "omnivoice": OMNIVOICE_PIPELINE, - "mammoth_moda2": MAMMOTH_MODA2_PIPELINE, - "mammoth_moda2_ar": MAMMOTH_MODA2_AR_PIPELINE, - "moss_tts_delay": MOSS_TTS_PIPELINE, - "moss_tts_realtime": MOSS_TTS_REALTIME_PIPELINE, - "moss_tts_local": MOSS_TTS_LOCAL_PIPELINE, - "minicpmo_4_5": MINICPMO_4_5_PIPELINE, - "minimax_music3": MINIMAX_MUSIC3_PIPELINE, - "higgs_audio_v2": HIGGS_AUDIO_V2_PIPELINE, - "higgs_multimodal_qwen3": HIGGS_AUDIO_V3_PIPELINE, - "indextts2": INDEXTTS2_PIPELINE, - "indextts2_5": INDEXTTS25_PIPELINE, + "wan2_2_ti2v": WAN2_2_TI2V_PIPELINE, }