Spaces:
Running on Zero
Running on Zero
File size: 1,182 Bytes
472bb49 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | """Per-request pipeline stat stashes — lease / CPU-subprocess / worker-dispatch.
One RequestStats object per request: pipeline entries call
``reset_request_stats()`` once, the GPU/CPU dispatch layers each fill their
slot, and the log-row builder reads the whole object at build time
(``log_blocks.build_timing``). Slot dict shapes are telemetry wire shapes —
field names inside them are load-bearing.
"""
from contextvars import ContextVar
from dataclasses import dataclass
@dataclass
class RequestStats:
lease: dict | None = None # gpu_runtime duration estimators
cpu: dict | None = None # zero_gpu local-subprocess dispatch
dispatch: dict | None = None # worker_pool remote-worker dispatch
_STATS: ContextVar[RequestStats | None] = ContextVar("request_stats", default=None)
def get_request_stats() -> RequestStats:
"""This request's stats object, created on first access."""
stats = _STATS.get()
if stats is None:
stats = RequestStats()
_STATS.set(stats)
return stats
def reset_request_stats() -> None:
"""Drop all per-request stats. Called once at every pipeline entry."""
_STATS.set(RequestStats())
|