diff --git a/training/dashboard/static/index.html b/training/dashboard/static/index.html index 89c38ed..ff93abc 100644 --- a/training/dashboard/static/index.html +++ b/training/dashboard/static/index.html @@ -587,15 +587,15 @@
- live detections - 0 hosts - 0 / sec - model: — + A100 inference · live + 0 models + 0 infer / sec + last window: — hit-rate: —
-
awaiting live_detection events from the inference loop
+
awaiting live_detection events from the A100 inference loop
@@ -1145,20 +1145,19 @@

Catching attacks live

-

Real episodes arrive from the fleet, get chunked into ten-second - windows, and a deployed model labels each window in flight. The - heavy models can offload inference to an A100 - so the receiver never blocks on a forward pass — predictions - stream back as they finish.

-

Each row on the stage is a host; each cell is one ten-second - window painted by the model's predicted phase. A clean run - cruises blue; an attack profile pushes the lane through - armedinfecting → - infected_running. When ground truth catches up, - mismatched cells get a hatched overlay so you can spot where - the model disagrees with the orchestrator. The callout below - holds the most recent prediction with model name, - confidence, and round-trip latency.

+

The A100 runs inference against incoming + ten-second windows from the fleet. Each row on the stage is + one trained model doing live prediction; each cell + is its phase verdict on a freshly-arrived window, painted + by the predicted phase.

+

Read the lanes side-by-side as a model-agreement check: + when the recurrent family (RNN / GRU / LSTM) all flip to + infecting at the same time, that's strong + evidence the host actually is. When ground truth from + labels.jsonl catches up, mismatched cells get + a hatched overlay and the running hit-rate ticks. The + callout below holds the most recent prediction with model + name, A100 round-trip latency, and confidence.