Theme E — Performance & hardware guidance¶
Status: implemented (probe + estimates + recommendations + docs)
Last updated: 2026-10-22
Roadmap home: docs/ROADMAP.md §E
User guide: docs/runtime/hardware.md
Measurement authority: performance_envelopes_1_0.md
Observed telemetry: run_performance.md
Goal¶
Help operators plan a run on this machine: a labelled wall-time range, a hardware-aware backend/size hint, and thicker docs. Estimates never disable Run analysis.
Locked decisions¶
One probe, many consumers —
HardwareProbe/probe_hardware()incore/observability/hardware_probe.pyreturns a snapshot used by Run Analysis, Batch, LLM picker, Transcribe Audio, andrun_performancesidecar writes.Guidance, never a gate — estimates are captions only. Uncertain forecasts do not set
can_launch = False. Thinking-model JSON gating remains separate.Hybrid estimator — published coefficients (seeded from envelopes) blended with matching local
run_performance.jsonpriors when fingerprint + preset + similar duration match.STT gets backends, not ETAs — analysis wall-clock only. Transcribe Audio uses the probe to recommend whispermlx vs WhisperX CUDA vs CPU.
Honesty about where the process runs — Docker analysis often has no GPU even when the host can run CUDA STT. Probe fields describe this process.
View → Performance stays observed truth — that page remains post-run telemetry.
Memory / CPU / acceleration bands¶
Field |
Bands / values |
|---|---|
|
|
|
|
|
|
|
|
|
|
Estimator inputs / outputs¶
Inputs: hardware snapshot, analysis preset, selected module ids, LLM size class, workload (transcript_duration_s / segments / speakers), optional prior sidecars, target type (transcript / group).
Output: RunTimeEstimate(low_s, high_s, confidence, drivers, caveats) with confidence ∈ {heuristic, calibrated, low}.
Display: format_run_time_estimate → caption under Run Analysis / Batch footer.
Sidecar population¶
At freeze() (transcript + group):
runtime_fingerprintfromprobe_hardware().to_runtime_fingerprint()workloadfrom canonical segments (transcript runs)analysis.profilecarriesanalysis_presetwhen present onrun_results.json(schema has no dedicated preset field)analysis.config_hashwhen the prepared workspace snapshot is available
Acceptance checklist¶
Shared probe never raises into UI; cache clearable for tests
Pre-run estimate caption on Run Analysis and Batch; does not disable Start
LLM hardware caption in compact setup + Settings → Models
STT provider/device preselect + caption on Transcribe Audio
Sidecar writes fingerprint (+ workload on transcript runs)
User doc
runtime/hardware.md+ thickened models/llm/transcriptionUnit tests for probe, estimator, recommendations
Out of scope¶
Live remaining-time in the progress panel
STT wall-clock ETAs; VRAM /
nvidia-smifrom the analysis imageAuto-changing the operator’s Ollama tag or spaCy model
Theme N cloud LLM; Theme I loopback API