[Edge][WP6] Slim the AR/TTS import path and add an edge dependency set

* diffusers is no longer imported by vllm_omni.diffusion.data (annotation only);
  vllm_omni.diffusion.io_support (diffusion registry + distributed state) is
  imported lazily by config_factory and async_omni_engine, so constructing a
  Qwen3-TTS pipeline config / AsyncOmni no longer loads diffusers,
  x_transformers or whisper (guarded by tests/config/test_import_guard.py).
* requirements/common.txt = core.txt (AR/speech runtime) + media.txt
  (diffusion/video/extra audio); VLLM_OMNI_EDGE_BUILD=1 makes setup.py use
  requirements/<device>-edge.txt (core only); `edge` extra adds websockets and
  sounddevice for on-device clients.

Measured on this host (CUDA venv): `import vllm` 7.0-7.9 s, `import vllm_omni`
adds ~20 s of which ~17 s is transformers' own import (transformers.utils.import_utils)
pulled in by vllm_omni.patch / vllm_omni.version; that floor is not
vLLM-Omni's and is unchanged. Guard test: no diffusion module loaded on the TTS path.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
tzhouamandClaude Fable 5.1 committed 2026-09-09 11:14:50 +08:00
1 parent 49a839ecf9
commit 8e912db6c8
11 files changed
+98 -45

No files matched your search

+6
View File
@@ -227,6 +227,12 @@ def get_install_requires() -> list[str]:
device = detect_target_device()
requirements_dir = Path(__file__).parent / "requirements"
requirements_file = requirements_dir / f"{device}.txt"
# VLLM_OMNI_EDGE_BUILD=1 selects the AR-only dependency set (no diffusion /
# video stack) when requirements/<device>-edge.txt exists.
if os.environ.get("VLLM_OMNI_EDGE_BUILD", "0") == "1":
edge_file = requirements_dir / f"{device}-edge.txt"
if edge_file.exists():
requirements_file = edge_file
print(f"Loading requirements from: {requirements_file}")
requirements = load_requirements(requirements_file)