60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM-Omni project
|
|
"""OpenAI models serving helpers.
|
|
|
|
This module mirrors upstream's OpenAI models area for helpers that back
|
|
``/v1/models`` behavior."""
|
|
|
|
from vllm.entrypoints.openai.models.protocol import BaseModelPath
|
|
from vllm.entrypoints.serve.engine.protocol import ModelCard, ModelList, ModelPermission
|
|
|
|
|
|
class _DiffusionServingModels:
|
|
"""Minimal OpenAIServingModels implementation for diffusion-only servers.
|
|
|
|
vLLM's /v1/models route expects `app.state.openai_serving_models` to expose
|
|
`show_available_models()`. In pure diffusion mode we don't initialize the
|
|
full OpenAIServingModels (it depends on LLM-specific processors), so we
|
|
provide a lightweight fallback.
|
|
"""
|
|
|
|
class _NullModelConfig:
|
|
def __getattr__(self, name):
|
|
return None
|
|
|
|
class _Unsupported:
|
|
def __init__(self, name: str):
|
|
self.name = name
|
|
|
|
def __call__(self, *args, **kwargs):
|
|
raise NotImplementedError(f"{self.name} is not supported in diffusion mode")
|
|
|
|
def __getattr__(self, attr):
|
|
raise NotImplementedError(f"{self.name}.{attr} is not supported in diffusion mode")
|
|
|
|
def __init__(self, base_model_paths: list[BaseModelPath]) -> None:
|
|
self._base_model_paths = base_model_paths
|
|
self.model_config = self._NullModelConfig()
|
|
|
|
@property
|
|
def base_model_paths(self) -> list[BaseModelPath]:
|
|
return self._base_model_paths
|
|
|
|
def is_base_model(self, model_name: str) -> bool:
|
|
return any(p.name == model_name for p in self._base_model_paths)
|
|
|
|
def __getattr__(self, name):
|
|
return self._Unsupported(name)
|
|
|
|
async def show_available_models(self) -> ModelList:
|
|
return ModelList(
|
|
data=[
|
|
ModelCard(
|
|
id=base_model.name,
|
|
root=base_model.model_path,
|
|
permission=[ModelPermission()],
|
|
)
|
|
for base_model in self._base_model_paths
|
|
]
|
|
)
|