2025-09-11 14:32:51 +08:00
|
|
|
[build-system]
|
2026-02-05 21:47:41 +08:00
|
|
|
requires = [
|
|
|
|
|
"setuptools>=77.0.3,<81.0.0",
|
|
|
|
|
"wheel",
|
|
|
|
|
"setuptools-scm>=8.0",
|
|
|
|
|
]
|
2025-09-11 14:32:51 +08:00
|
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
|
|
|
|
|
|
[project]
|
|
|
|
|
name = "vllm-omni"
|
2026-02-27 14:34:27 +08:00
|
|
|
dynamic = ["version", "dependencies"]
|
2025-12-01 04:09:24 -08:00
|
|
|
description = "A framework for efficient model inference with omni-modality models"
|
2025-09-11 14:32:51 +08:00
|
|
|
readme = "README.md"
|
2025-12-16 15:19:40 +08:00
|
|
|
requires-python = ">=3.10,<3.14"
|
2026-02-05 21:47:41 +08:00
|
|
|
license = "Apache-2.0"
|
2025-09-11 14:32:51 +08:00
|
|
|
authors = [
|
2025-12-01 04:09:24 -08:00
|
|
|
{name = "vLLM-Omni Team"}
|
2025-09-11 14:32:51 +08:00
|
|
|
]
|
|
|
|
|
keywords = ["vllm", "multimodal", "diffusion", "transformer", "inference", "serving"]
|
|
|
|
|
classifiers = [
|
|
|
|
|
"Development Status :: 3 - Alpha",
|
|
|
|
|
"Intended Audience :: Developers",
|
|
|
|
|
"Intended Audience :: Science/Research",
|
|
|
|
|
"Programming Language :: Python :: 3.10",
|
|
|
|
|
"Programming Language :: Python :: 3.11",
|
2025-11-15 21:45:43 +08:00
|
|
|
"Programming Language :: Python :: 3.12",
|
2025-12-16 15:19:40 +08:00
|
|
|
"Programming Language :: Python :: 3.13",
|
2025-09-11 14:32:51 +08:00
|
|
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
|
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
|
|
|
]
|
|
|
|
|
|
2026-02-05 21:47:41 +08:00
|
|
|
# Dependencies are now managed dynamically via setup.py based on detected hardware platform.
|
|
|
|
|
# This allows automatic installation of the correct platform-specific dependencies (CUDA/ROCm/CPU/XPU/NPU)
|
|
|
|
|
# without requiring extras like [cuda]. See requirements/ directory for platform-specific dependencies.
|
2025-09-11 14:32:51 +08:00
|
|
|
|
|
|
|
|
[project.optional-dependencies]
|
2025-11-15 21:45:43 +08:00
|
|
|
|
2025-09-11 14:32:51 +08:00
|
|
|
dev = [
|
|
|
|
|
"pytest>=7.0.0",
|
|
|
|
|
"pytest-asyncio>=0.21.0",
|
|
|
|
|
"pytest-cov>=4.0.0",
|
2026-02-26 17:08:39 +08:00
|
|
|
"pytest-mock>=3.10.0",
|
2026-03-26 17:27:29 +08:00
|
|
|
"datasets>=2.14.0",
|
2025-12-16 15:19:40 +08:00
|
|
|
"mypy==1.11.1",
|
|
|
|
|
"pre-commit==4.0.1",
|
2026-01-16 21:16:43 +08:00
|
|
|
"openai-whisper>=20250625",
|
2026-01-21 13:04:46 +08:00
|
|
|
"psutil>=7.2.0",
|
|
|
|
|
"soundfile>=0.13.1",
|
|
|
|
|
"imageio[ffmpeg]>=0.6.0",
|
2026-01-31 17:08:22 +08:00
|
|
|
"opencv-python>=4.12.0.88",
|
2026-04-30 05:56:59 +08:00
|
|
|
"mooncake-transfer-engine-cuda13>=0.3.9",
|
2026-03-03 15:00:33 +08:00
|
|
|
"av", # for ComfyUI tests
|
|
|
|
|
"openpyxl>=3.0.0", # for nightly CI
|
2026-03-23 16:26:54 +08:00
|
|
|
"pyttsx3>=2.99",
|
2026-03-30 13:02:28 +08:00
|
|
|
"opencc>=1.2.0",
|
2026-03-23 16:26:54 +08:00
|
|
|
"mistune>=3.2.0", # for example tests
|
2026-04-15 11:13:11 +08:00
|
|
|
"torchmetrics>=1.4.0", # for accuracy similarity metrics
|
2026-05-13 15:31:48 +08:00
|
|
|
"ray[default]", # for RL test
|
2026-04-15 11:07:35 +08:00
|
|
|
"jiwer>=3.0.0",
|
|
|
|
|
"zhon>=2.0.0",
|
|
|
|
|
"zhconv>=1.4.2",
|
|
|
|
|
"scipy>=1.10.0",
|
|
|
|
|
"funasr>=1.0.0",
|
2026-05-08 14:12:23 +08:00
|
|
|
"lpips>=0.1.4", # for quantization fp8
|
|
|
|
|
"orjson>=3.11.7", # to make v1/embeddings API fast
|
2026-05-20 03:24:06 -04:00
|
|
|
"voxcpm>=2.0.2", # for VoxCPM2 path-locating in tests
|
2026-05-13 14:25:56 +08:00
|
|
|
"torchdiffeq>=0.2.5" # for covo_audio Test
|
2026-04-15 11:07:35 +08:00
|
|
|
]
|
|
|
|
|
|
2026-04-23 09:40:43 +08:00
|
|
|
demo = [
|
|
|
|
|
"gradio>=6.7.0",
|
|
|
|
|
]
|
|
|
|
|
|
2026-05-20 15:26:59 +08:00
|
|
|
# Local-test-only extras
|
|
|
|
|
local = [
|
|
|
|
|
"FlagEmbedding",
|
|
|
|
|
]
|
|
|
|
|
|
2025-09-11 14:32:51 +08:00
|
|
|
docs = [
|
2025-11-15 21:45:43 +08:00
|
|
|
"mkdocs>=1.5.0",
|
|
|
|
|
"mkdocs-api-autonav",
|
|
|
|
|
"mkdocs-material",
|
|
|
|
|
"mkdocstrings-python",
|
|
|
|
|
"mkdocs-gen-files",
|
2025-11-28 11:03:52 +08:00
|
|
|
"mkdocs-awesome-nav",
|
2025-11-15 21:45:43 +08:00
|
|
|
"mkdocs-glightbox",
|
|
|
|
|
"mkdocs-git-revision-date-localized-plugin",
|
|
|
|
|
"mkdocs-minify-plugin",
|
|
|
|
|
"regex",
|
2025-12-16 15:19:40 +08:00
|
|
|
"ruff",
|
2025-11-15 21:45:43 +08:00
|
|
|
"pydantic",
|
2025-09-11 14:32:51 +08:00
|
|
|
]
|
|
|
|
|
|
2025-11-15 21:45:43 +08:00
|
|
|
|
2025-09-11 14:32:51 +08:00
|
|
|
[project.urls]
|
2025-11-15 21:45:43 +08:00
|
|
|
Homepage = "https://github.com/vllm-project/vllm-omni"
|
|
|
|
|
Repository = "https://github.com/vllm-project/vllm-omni"
|
2025-09-11 14:32:51 +08:00
|
|
|
Documentation = "https://vllm-omni.readthedocs.io"
|
2025-11-15 21:45:43 +08:00
|
|
|
"Bug Tracker" = "https://github.com/vllm-project/vllm-omni/issues"
|
2025-09-11 14:32:51 +08:00
|
|
|
|
|
|
|
|
[project.scripts]
|
2025-09-25 09:10:54 +08:00
|
|
|
vllm-omni = "vllm_omni.entrypoints.cli.main:main"
|
|
|
|
|
|
2025-11-24 14:57:05 +08:00
|
|
|
|
2025-09-11 14:32:51 +08:00
|
|
|
[tool.setuptools.packages.find]
|
|
|
|
|
where = ["."]
|
|
|
|
|
include = ["vllm_omni*"]
|
|
|
|
|
|
2025-11-24 14:57:05 +08:00
|
|
|
[tool.setuptools.package-data]
|
2026-02-27 14:34:27 +08:00
|
|
|
"vllm_omni" = ["_version.py", "py.typed"]
|
2025-11-24 14:57:05 +08:00
|
|
|
"vllm_omni.model_executor.stage_configs" = ["*.yaml"]
|
|
|
|
|
|
2026-02-27 14:34:27 +08:00
|
|
|
[tool.setuptools_scm]
|
|
|
|
|
# no extra settings needed, presence enables setuptools-scm
|
|
|
|
|
|
2025-11-17 18:13:05 +08:00
|
|
|
[tool.ruff]
|
2025-11-18 20:54:26 +08:00
|
|
|
line-length = 120
|
2025-11-17 18:13:05 +08:00
|
|
|
exclude = [
|
|
|
|
|
".eggs",
|
|
|
|
|
".git",
|
|
|
|
|
".hg",
|
|
|
|
|
".mypy_cache",
|
|
|
|
|
".tox",
|
|
|
|
|
".venv",
|
|
|
|
|
"build",
|
|
|
|
|
"dist",
|
|
|
|
|
"vllm_omni.egg-info",
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
[tool.ruff.lint]
|
|
|
|
|
select = [
|
2026-04-21 12:04:15 -04:00
|
|
|
"E", # pycodestyle errors
|
|
|
|
|
"W", # pycodestyle warnings
|
|
|
|
|
"F", # pyflakes
|
|
|
|
|
"I", # isort (handled separately, but included for compatibility)
|
|
|
|
|
"N", # pep8-naming
|
|
|
|
|
"UP", # pyupgrade
|
|
|
|
|
"TID251", # flake8-tidy-imports.banned-api
|
2025-11-17 18:13:05 +08:00
|
|
|
]
|
|
|
|
|
ignore = [
|
|
|
|
|
"E203", # whitespace before ':' (conflicts with black)
|
|
|
|
|
# W503 is not needed in ruff as it's compatible with black by default
|
2025-11-18 20:54:26 +08:00
|
|
|
"N801", # class names should use CapWords convention
|
|
|
|
|
"N802", # function name should follow snake_case
|
|
|
|
|
"N806", # variable in function should follow snake_case
|
|
|
|
|
"N812", # lowercase imported as non-lowercase: functional as F
|
2025-11-17 18:13:05 +08:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
|
|
|
"examples/**" = ["E501"] # Allow long lines in examples
|
|
|
|
|
"tests/**" = ["E501"] # Allow long lines in tests
|
2025-10-24 12:16:48 +08:00
|
|
|
|
2026-04-21 12:04:15 -04:00
|
|
|
[tool.ruff.lint.flake8-tidy-imports.banned-api]
|
|
|
|
|
"librosa".msg = "The librosa module is banned, use vllm.multimodal helpers instead"
|
2026-05-07 11:23:59 -04:00
|
|
|
"torch.cuda.max_memory_allocated".msg = "Use torch.accelerator.max_memory_allocated"
|
|
|
|
|
"torch.cuda.reset_peak_memory_stats".msg = "Use torch.accelerator.reset_peak_memory_stats"
|
|
|
|
|
"torch.cuda.device_count".msg = "Use torch.accelerator.device_count"
|
|
|
|
|
"torch.cuda.current_device".msg = "Use torch.accelerator.current_device_index"
|
|
|
|
|
"torch.cuda.empty_cache".msg = "Use torch.accelerator.empty_cache"
|
|
|
|
|
"torch.cuda.synchronize".msg = "Use torch.accelerator.synchronize"
|
2026-04-21 12:04:15 -04:00
|
|
|
|
2025-09-11 14:32:51 +08:00
|
|
|
[tool.mypy]
|
2025-11-17 18:13:05 +08:00
|
|
|
python_version = "3.12, 3.13"
|
2025-09-11 14:32:51 +08:00
|
|
|
warn_return_any = true
|
|
|
|
|
warn_unused_configs = true
|
|
|
|
|
disallow_untyped_defs = true
|
|
|
|
|
disallow_incomplete_defs = true
|
|
|
|
|
check_untyped_defs = true
|
|
|
|
|
disallow_untyped_decorators = true
|
|
|
|
|
no_implicit_optional = true
|
|
|
|
|
warn_redundant_casts = true
|
|
|
|
|
warn_unused_ignores = true
|
|
|
|
|
warn_no_return = true
|
|
|
|
|
warn_unreachable = true
|
|
|
|
|
strict_equality = true
|
|
|
|
|
|
|
|
|
|
[tool.pytest.ini_options]
|
2026-02-13 18:05:07 +08:00
|
|
|
asyncio_mode = "auto"
|
2025-09-11 14:32:51 +08:00
|
|
|
testpaths = ["tests"]
|
|
|
|
|
python_files = ["test_*.py", "*_test.py"]
|
|
|
|
|
python_classes = ["Test*"]
|
|
|
|
|
python_functions = ["test_*"]
|
|
|
|
|
addopts = [
|
|
|
|
|
"--strict-markers",
|
2026-02-05 10:54:40 +08:00
|
|
|
"--strict-config"
|
2025-09-11 14:32:51 +08:00
|
|
|
]
|
|
|
|
|
markers = [
|
2026-01-14 20:35:26 +08:00
|
|
|
# ci/cd required
|
2026-02-12 09:56:35 +08:00
|
|
|
"core_model: L1&L2 tests (run in each PR)",
|
2026-04-22 15:14:20 +08:00
|
|
|
"advanced_model: L3 level tests (run on each merge)",
|
|
|
|
|
"full_model: L4 level tests (run nightly)",
|
2026-05-20 15:26:59 +08:00
|
|
|
"local_model: tests (run locally)",
|
2026-01-14 20:35:26 +08:00
|
|
|
# function module markers
|
|
|
|
|
"diffusion: Diffusion model tests",
|
|
|
|
|
"omni: Omni model tests",
|
2026-05-08 14:12:23 +08:00
|
|
|
"tts: TTS model tests",
|
2026-01-14 20:35:26 +08:00
|
|
|
"cache: Cache backend tests",
|
|
|
|
|
"parallel: Parallelism/distributed tests",
|
2026-03-23 16:26:54 +08:00
|
|
|
"example: Doc example code tests",
|
2026-01-14 20:35:26 +08:00
|
|
|
# platform markers
|
|
|
|
|
"cpu: Tests that run on CPU",
|
|
|
|
|
"gpu: Tests that run on GPU (auto-added)",
|
|
|
|
|
"cuda: Tests that run on CUDA (auto-added)",
|
|
|
|
|
"rocm: Tests that run on AMD/ROCm (auto-added)",
|
2026-03-13 20:24:05 -07:00
|
|
|
"xpu: Tests that run on XPU (auto-added)",
|
2026-01-14 20:35:26 +08:00
|
|
|
"npu: Tests that run on NPU/Ascend (auto-added)",
|
2026-04-01 17:55:00 +08:00
|
|
|
"musa: Tests that run on MUSA/Moore Threads (auto-added)",
|
2026-01-14 20:35:26 +08:00
|
|
|
# specified computation resources marks (auto-added)
|
|
|
|
|
"H100: Tests that require H100 GPU",
|
|
|
|
|
"L4: Tests that require L4 GPU",
|
|
|
|
|
"MI325: Tests that require MI325 GPU (AMD/ROCm)",
|
2026-04-14 15:05:12 +08:00
|
|
|
"B60: Tests that require Intel Arc Pro B60 XPU",
|
2026-04-01 17:55:00 +08:00
|
|
|
"S5000: Tests that require S5000 GPU (Moore Threads/MUSA)",
|
2026-01-14 20:35:26 +08:00
|
|
|
"A2: Tests that require A2 NPU",
|
|
|
|
|
"A3: Tests that require A3 NPU",
|
|
|
|
|
"distributed_cuda: Tests that require multi cards on CUDA platform",
|
|
|
|
|
"distributed_rocm: Tests that require multi cards on ROCm platform",
|
2026-03-13 20:24:05 -07:00
|
|
|
"distributed_xpu: Tests that require multi cards on XPU platform",
|
2026-01-14 20:35:26 +08:00
|
|
|
"distributed_npu: Tests that require multi cards on NPU platform",
|
2026-04-01 17:55:00 +08:00
|
|
|
"distributed_musa: Tests that require multi cards on MUSA platform",
|
2026-01-14 20:35:26 +08:00
|
|
|
"skipif_cuda: Skip if the num of CUDA cards is less than the required",
|
|
|
|
|
"skipif_rocm: Skip if the num of ROCm cards is less than the required",
|
2026-03-13 20:24:05 -07:00
|
|
|
"skipif_xpu: Skip if the num of XPU cards is less than the required",
|
2026-01-14 20:35:26 +08:00
|
|
|
"skipif_npu: Skip if the num of NPU cards is less than the required",
|
2026-04-01 17:55:00 +08:00
|
|
|
"skipif_musa: Skip if the num of MUSA cards is less than the required",
|
2026-01-14 20:35:26 +08:00
|
|
|
# more detailed markers
|
|
|
|
|
"slow: Slow tests (may skip in quick CI)",
|
2025-09-11 14:32:51 +08:00
|
|
|
"benchmark: Benchmark tests",
|
|
|
|
|
]
|
2026-02-09 16:49:45 +08:00
|
|
|
filterwarnings = [
|
|
|
|
|
"ignore:.*does not have '__test__' attribute.*:UserWarning",
|
|
|
|
|
"ignore:.*does not have '__bases__' attribute.*:UserWarning",
|
|
|
|
|
]
|
2025-11-18 20:54:26 +08:00
|
|
|
|
|
|
|
|
[tool.typos.default]
|
|
|
|
|
extend-ignore-identifiers-re = [
|
|
|
|
|
".*_thw",
|
|
|
|
|
".*thw",
|
|
|
|
|
"ein",
|
2025-11-28 14:22:11 +08:00
|
|
|
".*arange",
|
|
|
|
|
".*MoBA",
|
2025-11-29 16:07:26 -08:00
|
|
|
".*temperal_downsample",
|
2026-02-09 22:03:44 +08:00
|
|
|
".*_nd",
|
2026-05-22 15:23:03 +08:00
|
|
|
".*nd$",
|
|
|
|
|
".*EmbedND$",
|
2025-11-29 16:07:26 -08:00
|
|
|
".*nothink.*",
|
2025-12-31 13:47:35 +08:00
|
|
|
".*NOTHINK.*",
|
|
|
|
|
".*nin.*",
|
2026-02-10 03:33:39 -05:00
|
|
|
".*[Oo]no_[Aa]nna.*",
|
2026-02-05 21:47:41 +08:00
|
|
|
".*cann.*",
|
2026-05-03 15:53:28 +08:00
|
|
|
".*[Nn][Dd]3.*",
|
|
|
|
|
]
|
|
|
|
|
extend-ignore-re = [
|
|
|
|
|
"\\.\\.\\.n,d->\\.\\.\\.nd",
|
2025-11-18 20:54:26 +08:00
|
|
|
]
|
2026-03-05 00:54:59 +00:00
|
|
|
[tool.typos.default.extend-words]
|
|
|
|
|
ue = "ue"
|
2026-03-26 17:27:29 +08:00
|
|
|
semantics = "semantics"
|
|
|
|
|
fullset = "fullset"
|
2026-04-03 16:41:20 -04:00
|
|
|
Vai = "Vai"
|
2026-04-22 18:15:08 +08:00
|
|
|
tockens = "tockens"
|
2026-04-20 19:35:48 +08:00
|
|
|
CANN = "CANN"
|
2026-05-19 10:24:27 +08:00
|
|
|
ND = "ND"
|