dashboard.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from typing import List, Optional
  2. from pydantic import BaseModel, ConfigDict
  3. class TimeSeriesData(BaseModel):
  4. timestamp: int
  5. value: float
  6. class CurrentSystemLoad(BaseModel):
  7. cpu: float
  8. ram: float
  9. gpu: float
  10. vram: float
  11. class HistorySystemLoad(BaseModel):
  12. cpu: List[TimeSeriesData]
  13. ram: List[TimeSeriesData]
  14. gpu: List[TimeSeriesData]
  15. vram: List[TimeSeriesData]
  16. class SystemLoadSummary(BaseModel):
  17. current: CurrentSystemLoad
  18. history: HistorySystemLoad
  19. class ModelUsageUserSummary(BaseModel):
  20. user_id: int
  21. username: str
  22. prompt_token_count: int
  23. completion_token_count: int
  24. class ModelUsageStats(BaseModel):
  25. api_request_history: List[TimeSeriesData]
  26. completion_token_history: List[TimeSeriesData]
  27. prompt_token_history: List[TimeSeriesData]
  28. class ModelUsageSummary(ModelUsageStats):
  29. top_users: Optional[List[ModelUsageUserSummary]] = None
  30. class ResourceClaim(BaseModel):
  31. ram: int # in bytes
  32. vram: int # in bytes
  33. class ModelSummary(BaseModel):
  34. id: Optional[int] = None
  35. provider_id: Optional[int] = None
  36. provider_name: Optional[str] = None
  37. name: str
  38. resource_claim: Optional[ResourceClaim] = None
  39. instance_count: int
  40. token_count: int
  41. categories: Optional[List[str]] = None
  42. class ResourceCounts(BaseModel):
  43. worker_count: int
  44. gpu_count: int
  45. model_count: int
  46. model_instance_count: int
  47. cluster_count: Optional[int] = None
  48. model_config = ConfigDict(protected_namespaces=())
  49. class SystemSummary(BaseModel):
  50. cluster_id: Optional[int] = None
  51. resource_counts: ResourceCounts
  52. system_load: SystemLoadSummary
  53. model_usage: ModelUsageSummary
  54. active_models: List[ModelSummary]
  55. model_config = ConfigDict(protected_namespaces=())