| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- from datetime import date
- from enum import Enum
- from typing import List, Optional, Union
- from pydantic import BaseModel, ConfigDict, field_validator
- from gpustack.schemas.models import (
- ModelSource,
- ModelSpecBase,
- )
- class GPUFilters(BaseModel):
- vendor: Optional[Union[str, List[str]]] = None
- """List of GPU vendors, e.g., ['nvidia', 'amd'] or 'nvidia'."""
- compute_capability: Optional[str] = None
- """Compute capability filter expressed using pip-style version specifiers. E.g., '>=7.0,<8.0'."""
- vendor_variant: Optional[Union[str, List[str]]] = None
- """List of GPU vendor variants. For example, ['910b', '310p'] or '910b' for Ascend NPUs."""
- @field_validator("vendor", "vendor_variant", mode="before")
- def normalize_str_or_list_fields(cls, v):
- if v is None:
- return []
- if isinstance(v, str):
- return [v]
- return v
- class ModelSpec(ModelSpecBase):
- name: Optional[str] = None
- quantization: Optional[str] = None
- mode: Optional[str] = "standard"
- gpu_filters: Optional[GPUFilters] = None
- class SizeUnit(str, Enum):
- MILLION = "M"
- BILLION = "B"
- TRILLION = "T"
- class ModelSetBase(BaseModel):
- name: str
- id: Optional[int] = None
- description: Optional[str] = None
- order: Optional[int] = None
- home: Optional[str] = None
- icon: Optional[str] = None
- categories: Optional[List[str]] = None
- capabilities: Optional[List[str]] = None
- size: Optional[float] = None
- activated_size: Optional[float] = None
- size_unit: Optional[SizeUnit] = None
- licenses: Optional[List[str]] = None
- release_date: Optional[date] = None
- model_config = ConfigDict(protected_namespaces=())
- class ModelSetPublic(ModelSetBase):
- pass
- class ModelSet(ModelSetBase):
- specs: List[ModelSpec]
- class DraftModel(ModelSource):
- name: str
- algorithm: str
- description: Optional[str] = None
- class Catalog(BaseModel):
- model_sets: List[ModelSet]
- draft_models: List[DraftModel]
|