174 lines · 4.4 KB · TypeScript
RawDownload
import type { SystemConfig } from "./system"; export interface GPU {  id?: string;  uuid?: string;  pci_bus_id?: string;  index: number;  name: string;  memory_total_mb: number;  memory_used_mb: number;  memory_free_mb: number;  utilization_pct: number;  temp_c: number;  power_draw?: number;  power_limit?: number;  memory_shared?: boolean;  memory_usage_available?: boolean;  utilization_available?: boolean;  temperature_available?: boolean;  power_available?: boolean;} export interface Metrics {  model_id?: string | null;  model_path?: string | null;  served_model_name?: string | null;  requests_total?: number;  tokens_total?: number;  latency_avg?: number;  throughput?: number;  gpu_utilization?: number;  memory_used?: number;  avg_ttft_ms?: number;  kv_cache_usage?: number;  generation_throughput?: number;  prompt_throughput?: number;  request_success?: number;  generation_tokens_total?: number;  prompt_tokens_total?: number;  running_requests?: number;  pending_requests?: number;  // VRAM (aggregated across GPUs)  vram_used_gb?: number;  vram_capacity_gb?: number;  power_limit_watts?: number;  // Session averages (since first token this session)  session_avg_prefill?: number;  session_avg_generation?: number;  // Session peaks (best this session) — reset on model switch  session_peak_prefill?: number;  session_peak_generation?: number;  session_peak_prompt_throughput?: number;  session_peak_generation_throughput?: number;  session_peak_ttft_ms?: number;  session_peak_kv_cache_usage?: number;  session_peak_running_requests?: number;  session_peak_power_watts?: number;  session_peak_vram_used_gb?: number;  session_peak_id?: string | null;  session_peak_prefill_tps?: number;  session_peak_generation_tps?: number;  session_peak_best_ttft_ms?: number;  best_session_peak_id?: string | null;  best_session_prefill_tps?: number;  best_session_generation_tps?: number;  best_session_ttft_ms?: number;  // All-time peak metrics (stored best values)  peak_prefill_tps?: number;  peak_generation_tps?: number;  peak_ttft_ms?: number;  total_tokens?: number;  total_requests?: number;  // Lifetime metrics (cumulative across all sessions)  lifetime_tokens?: number;  lifetime_prompt_tokens?: number;  lifetime_completion_tokens?: number;  lifetime_requests?: number;  lifetime_energy_wh?: number;  lifetime_energy_kwh?: number;  lifetime_uptime_hours?: number;  kwh_per_million_tokens?: number;  kwh_per_million_input?: number;  kwh_per_million_output?: number;  current_power_watts?: number;} // VRAM calculationexport interface VRAMCalculation {  model_size_gb: number;  context_memory_gb: number;  overhead_gb: number;  total_gb: number;  fits_in_vram: boolean;  fits: boolean;  utilization_percent: number;  breakdown: {    model_weights_gb: number;    kv_cache_gb: number;    activations_gb: number;    per_gpu_gb: number;    total_gb: number;  };} export interface PeakMetrics {  model_id: string;  prefill_tps: number | null;  generation_tps: number | null;  ttft_ms: number | null;  best_session_id?: string | null;  best_session_prefill_tps?: number | null;  best_session_generation_tps?: number | null;  best_session_ttft_ms?: number | null;  total_tokens: number;  total_requests: number;} export interface ProcessInfo {  pid: number;  backend: string;  model_path: string | null;  port: number;  served_model_name?: string | null;} export interface LogSession {  id: string;  recipe_id?: string;  recipe_name?: string;  model_path?: string;  model?: string;  backend?: string;  started_at?: string;  created_at: string;  ended_at?: string;  status: "running" | "stopped" | "crashed";} export interface StudioSettings {  config_path: string;  persisted: {    models_dir?: string;    ui_preferences?: Record<string, string>;  };  effective: {    models_dir: string;  };} export interface StudioDiagnostics {  app_version: string;  timestamp: string;  platform: string;  arch: string;  release: string;  cpu_model: string | null;  cpu_cores: number;  memory_total: number;  memory_free: number;  gpus: GPU[];  runtime: {    vllm_installed: boolean;    vllm_version: string | null;    python_path: string | null;    vllm_bin: string | null;  };  disks: Array<{    path: string;    total_bytes: number | null;    free_bytes: number | null;    available_bytes: number | null;  }>;  config: SystemConfig;}