Repository navigation
README demo: re-record with a model serving live traffic - #11
Merged
Merged
Conversation
The key script now spends its time on Overview, Serving: Perf and Infra: Devices (sorted busiest first) and drops views that do not change while a model serves. docs/DEMO.md gains the serve/load/restore steps and explains which columns need vLLM/Furiosa-LLM or EPP metrics. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Recorded while a 1 prefill + 1 decode RNGD deployment served Llama-3.1-8B behind the llm-d gateway and rm-bench replayed the Azure conversation trace at about 1 req/s. Overview, Serving: Perf and Infra: Devices now show the serving deployment, device utilisation, power and the ai-rm placement panel instead of an idle cluster. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gspark-etri
added a commit
that referenced
this pull request
Oct 20, 2026
## Background The README demo from #9 was recorded on an idle cluster: `SERVING 0/25`, empty Traffic/Serving views and idle devices (#10). This PR re-records it while a model actually serves traffic. ## Changes - `assets/demo.gif`, `assets/demo.cast`: new 44 s recording (120×34, 438 frames). During the recording a temporary prefill/decode deployment (1 prefill + 1 decode RNGD card, Llama-3.1-8B, shm KV transfer) served behind the llm-d gateway route while rm-bench replayed the Azure conversation trace through it at about 1 req/s (`--api completions`). - `scripts/record-demo.py`: new key script. The tour now dwells on views that move under load: Overview (7 s) → Traffic: Flow (5 s) → Serving (4 s) → Serving: Perf (8 s, device utilisation over time) → Infra: Nodes (4 s) → Infra: Devices sorted busiest first with `O` (9 s, includes the ai-rm AcceleratorProfile / metrics / placement panels) → Overview (7 s). Deploy, Setup, Topology and the EPP sub-tab are dropped (nothing changes there under load). Still views and sort order only; nothing opens an action menu. - `docs/DEMO.md`: steps are now serve + load → record → restore, with an rm-bench example; notes that startup readiness-probe failures count as warning events on the Overview status line until they expire, and which columns need vLLM/Furiosa-LLM or EPP metrics. - `scripts/record-demo.sh`: header comment points at the load step. ## Verification - Recording: `LMD_DEMO_ALIASES=<untracked alias file> bash scripts/record-demo.sh` on the admin host, lmd-top built from `b3cafc8`. Sanitizer: `frames: 438, duration: 44.0s, replacements: 3331, distinct IPv4 mapped: 1`, leak check passed (exit 0). - Grep of `assets/demo.cast` for internal node names, home paths and private IPv4 (10/8, 172.16/12, 192.168/16): 0 hits. `.cast` parses as JSON lines (440 lines). - `python tools/check_sensitive.py .` (ai-rm copy): clean. Tree-wide grep for internal names: clean. - GIF 694 KB (< 5 MB). Frames checked as PNG at 3 s / 10 s / 20 s / 33 s / 41 s: - Overview: `SERVING 2/25`, status line `2 model(s) serving, 1 accelerator(s) hot (>80%)` (no warning from the demo workload; its startup probe events had expired before recording), RNGD on npu-node-1 at 24 % with trend. - Traffic: Flow: `/rngd/llama8…` route → `llama8b-pd-pool` (1/1 endpoints) → gateway pod Running. - Serving: Perf: RNGD npu0 utilisation sparkline rising to 73 %. - Infra: Devices: RNGD npu0 73 %, 59 °C, 114 W; ai-rm placement panel for `llama8b-pd-pool`. - Load (rm-bench, same workload, 25 min run just before the recording): 1744 requests, 0 failed, ~1.16 req/s, TTFT p90 1066 ms, TPOT p90 288 ms. The recording run used `--speedup 0.75` (~1 req/s). - Cluster restored afterwards: load stopped, the three demo deployments back to 0 replicas, no pods left, Helm release unchanged (revision 4), `airm-placement` ConfigMap unchanged (same resourceVersion and content hash before and after), 0 RNGD/ATOM allocated on the node. ## Compatibility and limits - The workers in this deployment export only `airm_*` series, not vLLM/Furiosa-LLM metrics, and this pool's endpoint picker is not scraped by Prometheus. So the header `req/s`, `TTFT`, `E2E` and the Serving: Perf throughput row still show `–`, and EPP endpoint decisions are empty. Utilisation, power, temperature, serving status and the ai-rm panels move. Showing request rate/TTFT needs a vLLM or Furiosa-LLM server with a ServiceMonitor (or the PD worker exporting vLLM-compatible names); left for a later re-record. `docs/DEMO.md` explains this. - The header shows `⚠8 alert (A)`: pre-existing cluster alerts (image pulls on other nodes), not from the demo workload. Another team's job had an A100 at 100 % at recording time; it shows as is. - No lmd-top code changes. ## Related Issue Closes #10 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
gspark-etri
added a commit
that referenced
this pull request
Oct 20, 2026
## Background The README demo from #9 was recorded on an idle cluster: `SERVING 0/25`, empty Traffic/Serving views and idle devices (#10). This PR re-records it while a model actually serves traffic. ## Changes - `assets/demo.gif`, `assets/demo.cast`: new 44 s recording (120×34, 438 frames). During the recording a temporary prefill/decode deployment (1 prefill + 1 decode RNGD card, Llama-3.1-8B, shm KV transfer) served behind the llm-d gateway route while rm-bench replayed the Azure conversation trace through it at about 1 req/s (`--api completions`). - `scripts/record-demo.py`: new key script. The tour now dwells on views that move under load: Overview (7 s) → Traffic: Flow (5 s) → Serving (4 s) → Serving: Perf (8 s, device utilisation over time) → Infra: Nodes (4 s) → Infra: Devices sorted busiest first with `O` (9 s, includes the ai-rm AcceleratorProfile / metrics / placement panels) → Overview (7 s). Deploy, Setup, Topology and the EPP sub-tab are dropped (nothing changes there under load). Still views and sort order only; nothing opens an action menu. - `docs/DEMO.md`: steps are now serve + load → record → restore, with an rm-bench example; notes that startup readiness-probe failures count as warning events on the Overview status line until they expire, and which columns need vLLM/Furiosa-LLM or EPP metrics. - `scripts/record-demo.sh`: header comment points at the load step. ## Verification - Recording: `LMD_DEMO_ALIASES=<untracked alias file> bash scripts/record-demo.sh` on the admin host, lmd-top built from `4128de8`. Sanitizer: `frames: 438, duration: 44.0s, replacements: 3331, distinct IPv4 mapped: 1`, leak check passed (exit 0). - Grep of `assets/demo.cast` for internal node names, home paths and private IPv4 (10/8, 172.16/12, 192.168/16): 0 hits. `.cast` parses as JSON lines (440 lines). - `python tools/check_sensitive.py .` (ai-rm copy): clean. Tree-wide grep for internal names: clean. - GIF 694 KB (< 5 MB). Frames checked as PNG at 3 s / 10 s / 20 s / 33 s / 41 s: - Overview: `SERVING 2/25`, status line `2 model(s) serving, 1 accelerator(s) hot (>80%)` (no warning from the demo workload; its startup probe events had expired before recording), RNGD on npu-node-1 at 24 % with trend. - Traffic: Flow: `/rngd/llama8…` route → `llama8b-pd-pool` (1/1 endpoints) → gateway pod Running. - Serving: Perf: RNGD npu0 utilisation sparkline rising to 73 %. - Infra: Devices: RNGD npu0 73 %, 59 °C, 114 W; ai-rm placement panel for `llama8b-pd-pool`. - Load (rm-bench, same workload, 25 min run just before the recording): 1744 requests, 0 failed, ~1.16 req/s, TTFT p90 1066 ms, TPOT p90 288 ms. The recording run used `--speedup 0.75` (~1 req/s). - Cluster restored afterwards: load stopped, the three demo deployments back to 0 replicas, no pods left, Helm release unchanged (revision 4), `airm-placement` ConfigMap unchanged (same resourceVersion and content hash before and after), 0 RNGD/ATOM allocated on the node. ## Compatibility and limits - The workers in this deployment export only `airm_*` series, not vLLM/Furiosa-LLM metrics, and this pool's endpoint picker is not scraped by Prometheus. So the header `req/s`, `TTFT`, `E2E` and the Serving: Perf throughput row still show `–`, and EPP endpoint decisions are empty. Utilisation, power, temperature, serving status and the ai-rm panels move. Showing request rate/TTFT needs a vLLM or Furiosa-LLM server with a ServiceMonitor (or the PD worker exporting vLLM-compatible names); left for a later re-record. `docs/DEMO.md` explains this. - The header shows `⚠8 alert (A)`: pre-existing cluster alerts (image pulls on other nodes), not from the demo workload. Another team's job had an A100 at 100 % at recording time; it shows as is. - No lmd-top code changes. ## Related Issue Closes #10 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Background
The README demo from #9 was recorded on an idle cluster:
SERVING 0/25, empty Traffic/Servingviews and idle devices (#10). This PR re-records it while a model actually serves traffic.
Changes
assets/demo.gif,assets/demo.cast: new 44 s recording (120×34, 438 frames). During therecording a temporary prefill/decode deployment (1 prefill + 1 decode RNGD card, Llama-3.1-8B,
shm KV transfer) served behind the llm-d gateway route while rm-bench replayed the Azure
conversation trace through it at about 1 req/s (
--api completions).scripts/record-demo.py: new key script. The tour now dwells on views that move under load:Overview (7 s) → Traffic: Flow (5 s) → Serving (4 s) → Serving: Perf (8 s, device
utilisation over time) → Infra: Nodes (4 s) → Infra: Devices sorted busiest first with
O(9 s, includes the ai-rm AcceleratorProfile / metrics / placement panels) → Overview (7 s).
Deploy, Setup, Topology and the EPP sub-tab are dropped (nothing changes there under load).
Still views and sort order only; nothing opens an action menu.
docs/DEMO.md: steps are now serve + load → record → restore, with an rm-bench example; notesthat startup readiness-probe failures count as warning events on the Overview status line until
they expire, and which columns need vLLM/Furiosa-LLM or EPP metrics.
scripts/record-demo.sh: header comment points at the load step.Verification
LMD_DEMO_ALIASES=<untracked alias file> bash scripts/record-demo.shon the adminhost, lmd-top built from
1a3b4f3. Sanitizer:frames: 438, duration: 44.0s, replacements: 3331, distinct IPv4 mapped: 1, leak check passed (exit 0).assets/demo.castfor internal node names, home paths and private IPv4(10/8, 172.16/12, 192.168/16): 0 hits.
.castparses as JSON lines (440 lines).python tools/check_sensitive.py .(ai-rm copy): clean. Tree-wide grep for internal names: clean.SERVING 2/25, status line2 model(s) serving, 1 accelerator(s) hot (>80%)(nowarning from the demo workload; its startup probe events had expired before recording),
RNGD on npu-node-1 at 24 % with trend.
/rngd/llama8…route →llama8b-pd-pool(1/1 endpoints) → gateway pod Running.llama8b-pd-pool.0 failed, ~1.16 req/s, TTFT p90 1066 ms, TPOT p90 288 ms. The recording run used
--speedup 0.75(~1 req/s).pods left, Helm release unchanged (revision 4),
airm-placementConfigMap unchanged (sameresourceVersion and content hash before and after), 0 RNGD/ATOM allocated on the node.
Compatibility and limits
airm_*series, not vLLM/Furiosa-LLM metrics, andthis pool's endpoint picker is not scraped by Prometheus. So the header
req/s,TTFT,E2Eand the Serving: Perf throughput row still show
–, and EPP endpoint decisions are empty.Utilisation, power, temperature, serving status and the ai-rm panels move. Showing request
rate/TTFT needs a vLLM or Furiosa-LLM server with a ServiceMonitor (or the PD worker exporting
vLLM-compatible names); left for a later re-record.
docs/DEMO.mdexplains this.⚠8 alert (A): pre-existing cluster alerts (image pulls on other nodes), notfrom the demo workload. Another team's job had an A100 at 100 % at recording time; it shows as is.
Related Issue
Closes #10
🤖 Generated with Claude Code