SERIES Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 Part 7 Part 8 Part 9 Part 10
AMD Field AI Enthusiast · by Pradeep Nallimelli · Part 10 of 10+ · June 2026

Datacenter blueprint.
Single node. The card isn't even sweating.

AMD's reference architecture for agentic AI in the datacenter is eight stages: Gateway, Assemble context, Plan + Route, RAG, Reasoning, Tool exec, Verify, Stream. Every stage gets its own service in a rack. This part shows the same eight stages running as named processes on one Radeon AI PRO R9700 plus one Genoa-class EPYC. The shape of the reference is identical. Only the scale unit changes.

Lifetime requests79,069
vLLM request_success_total at the time of capture — 0 errors, 0 aborts
Peak concurrency36
Simultaneous requests caught in the vLLM scheduler during one observation hour
KV cache headroom84.4%
Of 32 GB GDDR6 still free at peak concurrency. The card is not the constraint.
THE BLUEPRINT, ON ONE NODE

Eight datacenter stages. Nineteen host processes. One box.

AMD's datacenter agentic AI reference is normally drawn as a row of services across many racks. On this Genoa + R9700 box, each stage is a named process — or a small pool of them. The mapping is one-to-one with the rack version. The unit of scale is what shrinks.

StageDatacenter versionThis box
1. GatewayLB + auth + rate limitteams_claude_bridge · telegram_bot · open-webui (3 frontends)
2. Assemble contextVector store, BM25, doc fetchingest_email · ingest_teams · ingest_net · kb_ingest
3. Plan + RouteRouter servicebrain_loop.sh worker pool
4. RAGRetrieval clustervLLM prefix cache (live 45% → 65% as KB warmed)
5. ReasoningLLM clustervLLM Qwen3-30B-A3B-AWQ on R9700
6. Tool execTool registry + workersmeeting_loop · klue_loop subagents
7. VerifyCritic / judge serviceverify_worker pool
8. Stream responseSSE / WS edgevLLM SSE → frontends
The shape of the reference is identical. A rack does the same eight things this box does — it just does each one at higher fanout. If your single-node design respects the eight stages, scaling out is replacement, not redesign.
VOLUME THE BOX IS PUSHING

79,069 requests, 0 errors, in one container lifetime.

Part 9 captured a 4-day window at 49,288 requests. Two days later the same container has crossed 79k — load grew about 23% across an extra two days as the panel of agents kept firing. The error and abort counters are still zero. Prefix cache is warming, not cold-starting.

Lifetime totals at capture — vLLM /metrics on R9700

Source: vLLM request_success_total, prompt_tokens_total, generation_tokens_total at 2026-06-03 06:24 UTC. Container vllm-qwen3-moe, uptime 35 days, model uptime since last restart.
Prompt tokens48.77 M
+13.5 M since Part 9 — the brain keeps growing the context per call
Generated tokens13.26 M
+4.5 M since Part 9 — decoded structured rows into the synthesis store
Mean TTFT288 ms
Down from 368 ms as prefix cache hit rate climbed 45% → 65%
Telemetry rows102,552
2-second cadence across 2.5 days — the source for every number on this page
CONCURRENCY PROOF, CAPTURED LIVE

One stream is 48 tok/s. Many streams is ten times that.

vLLM logs print a one-line scheduler snapshot every iteration. Captured live during one observation hour, the same R9700 that does 48 tok/s for a single agent rolls up to several hundred aggregate decode tok/s as the queue depth grows. The peak Running counter caught 36 concurrent requests in flight at one moment. KV cache use at that peak was 15.6%.

Aggregate decode tok/s vs concurrent requests — live vLLM scheduler samples

Source: docker logs vllm-qwen3-moe, Engine 000 scheduler lines captured during 2026-06-03 observation window. Each sample is one batched iteration with N running, M waiting.
Concurrent reqsAggregate decode tok/sKV cache
1480.3%
32414.2%
8192–2116.3%
101717.0%
12128–147 (+ 1131 prefill spike)6.8%
36 (peak Running)caught between batches15.6%
Single-stream tok/s is the wrong KPI. One agent saw 48 tok/s. Twenty-four agents firing through the same scheduler saw ~450–480 tok/s in aggregate — nearly 10× the single-stream rate from the same card. Continuous batching is the unlock.
WHY THE CPU SIDE CARRIES THE DEMONSTRATION

Nineteen processes. p95 13% CPU. Bursty, not idle.

The reference workflow lives on a Genoa-class EPYC because the orchestration is constant. Nineteen distinct host processes — three frontends, four ingestors, three cognitive loops, three dashboards, plus vLLM — share the socket. Steady-state CPU is sub-percent. p95 is 13%. p99 is 14.2%. Max is 28.2%. That is the signature of an orchestration tier doing real work in short bursts, not an oversized CPU sitting idle.

Host CPU percentiles — 102,552 samples across 2.5 days

Source: /tmp/agentic_perf.csv. cpu_pct and load1 percentiles computed across the full 2-second-cadence window. Load1 max 26.0 captures the heaviest ingest burst seen in the window.
Distinct processes19
Frontends + ingestors + cognitive loops + dashboards + vLLM — all on one Genoa socket
p95 CPU13.0%
During batches — the steady-state cost of running the eight-stage loop continuously
load1 p9513.6
Sustained pressure during ingest waves — not bursty, not idle
load1 max26.0
Captured during a speech-preprocessing + ingest collision — what the reserved 87% is there for
A weak CPU here turns the GPU into expensive overkill. The Genoa is what keeps the R9700 fed end-to-end. Underspec the CPU and the model spends its day waiting for tokenized prompts. The CPU is the conductor; the GPU is the soloist.
THE GPU BREATHES

Quiet at 21 W. Burst at 275 W. Right-sized.

Two rocm-smi samples taken inside the same observation hour tell the story. Mid-quiet: 3% util, 21 W draw, sclk clock-gated down to 41 MHz. Mid-burst: 100% util, 275 W, full clocks. VRAM stays 92% resident the whole time — the model never reloads. The card is exactly the right size: it can rest, and it can sprint, and it does both inside the same minute.

StateGPU %PowersclkVRAMEdge / Junction / Mem
Quiet (no in-flight requests)3%21 W41 MHz92%49 · 52 · 58 °C
Burst (peak Running ~12)100%275 Wfull92%49 · 52 · 58 °C
This is what right-sized looks like. The card is not pinned to 100% at all times (oversized would be) and it is not constantly thermal-throttled (undersized would be). It clock-gates between batches and sprints when the scheduler hands it work.
CONTINUOUSLY RUNNING, NOT A DEMO

Twenty-two of twenty-four hours at p95 13% CPU.

The 2.5-day telemetry window covers a normal weekday cycle. Only a single quiet window appears, 04:00–05:00 UTC, when overnight maintenance windows drain the ingest queues. Every other hour the box is doing real work. The heaviest single hour was 00:00–01:00 UTC at load1 p95 ~21.5 — the speech-preprocessing batch firing alongside an ingest sweep.

Hourly CPU p95 — 24 hours, 2.5-day window

Source: /tmp/agentic_perf.csv grouped by hour of day, p95 of cpu_pct per hour. The quiet window at 04:00–05:00 UTC is the only sub-5% hour.
WHAT A MAINSTREAM PROFESSIONAL CARD ACTUALLY BUYS

32 GB. PCIe. GDDR6. And still 84% KV-cache headroom at peak.

The Radeon AI PRO R9700 sits in the mainstream of the AI PRO stack — PCIe, GDDR6, no HBM. Yet 32 GB is enough to keep Qwen3-30B-A3B-AWQ resident with a 32k context and serve three frontends, nineteen background processes, and tens of thousands of requests per day with 84% of KV cache still free at peak. Headroom is not a small word here.

KV cache usage at peak concurrency — of 32 GB GDDR6 budget

Source: vLLM scheduler line at peak Running = 12, captured during 2026-06-03 observation window. 15.6% used / 84.4% free of the GPU's allocated KV cache budget.
Mainstream professional card. Real datacenter workload. Headroom to spare. The 32 GB / GDDR6 budget is the part of the spec sheet that looked tight on paper. Live telemetry says it is not the constraint. Concurrency could grow further before the cache hit a ceiling.
WHAT WE DON'T KNOW YET

Where the silicon actually spends its time.

Parts 1 through 10 measured the box from the outside — throughput counters, scheduler snapshots, KV cache numbers, power and thermal samples, hourly load curves. They proved the box does the work. They did not open the lid on where the cycles go.

Open questionTool stack that will answer itComing in
Where is the CPU actually spending cycles?perf · uProf · PerfXpertPart 11
Where is the GPU spending kernel time?rocprof · rocprofv3 · omniperfPart 12
What is the per-stage latency budget across the 8-stage loop?end-to-end timing instrumentationPart 13
Same continuously-running pipeline. Just with the lid open. The instrumentation is the next chapter, not a rebuild.
CLOSE — FORWARD, NOT DONE

The series isn't wrapping. The instrumentation is turning on.

Ten parts in. One R9700, one Genoa EPYC, an eight-stage datacenter blueprint mapped end-to-end onto a single node. Same box, same workload, sharper lens from here on out.

Today79K
Requests served, 0 errors, eight stages live on one node
NextLid off
Per-silicon profiling — CPU first, GPU second, E2E third
Same boxR9700
The card you can buy is still the card the series measures