Spaces:
Configuration error
Configuration error
from __future__ import annotations | |
import gc | |
from fastapi import ( | |
APIRouter, | |
Response, | |
) | |
import huggingface_hub | |
from huggingface_hub.hf_api import RepositoryNotFoundError | |
from faster_whisper_server import hf_utils | |
from faster_whisper_server.dependencies import ModelManagerDependency # noqa: TCH001 | |
router = APIRouter() | |
def health() -> Response: | |
return Response(status_code=200, content="OK") | |
def pull_model(model_name: str) -> Response: | |
if hf_utils.does_local_model_exist(model_name): | |
return Response(status_code=200, content="Model already exists") | |
try: | |
huggingface_hub.snapshot_download(model_name, repo_type="model") | |
except RepositoryNotFoundError as e: | |
return Response(status_code=404, content=str(e)) | |
return Response(status_code=201, content="Model downloaded") | |
def get_running_models( | |
model_manager: ModelManagerDependency, | |
) -> dict[str, list[str]]: | |
return {"models": list(model_manager.loaded_models.keys())} | |
def load_model_route(model_manager: ModelManagerDependency, model_name: str) -> Response: | |
if model_name in model_manager.loaded_models: | |
return Response(status_code=409, content="Model already loaded") | |
model_manager.load_model(model_name) | |
return Response(status_code=201) | |
def stop_running_model(model_manager: ModelManagerDependency, model_name: str) -> Response: | |
model = model_manager.loaded_models.get(model_name) | |
if model is not None: | |
del model_manager.loaded_models[model_name] | |
gc.collect() | |
return Response(status_code=204) | |
return Response(status_code=404) | |