🛠️ Lab 14 — Disaggregated vs. Aggregated vLLM with NVIDIA Dynamo (50 pts)
Goal: Stand up a disaggregated prefill/decode deployment locally using NVIDIA Dynamo with vLLM workers, compare its latency behavior to an aggregated (co-located) vLLM deployment from Week 3, and connect the TTFT vs. tokens/sec benchmark metrics from Week 8 to the compute-bound-prefill vs. memory-bound-decode distinction from lecture. Steps:
- In a fresh Python virtual environment, install Dynamo with
pip install ai-dynamo[all] (or pull the prebuilt Dynamo runtime container if you prefer not to manage dependencies locally). Confirm the install by running Dynamo's version/help command. - Read the official Disaggregated Serving design doc (linked in Resources) before writing any code. Take notes on the two components it names as doing the real coordination work: the KV-aware Router and NIXL for KV-cache transfer.
- Using Dynamo's documented local/single-node quickstart, configure and launch a disaggregated deployment backed by vLLM workers, with one worker (or worker pool) dedicated to prefill and a separate one dedicated to decode.
- Send the same batch of test prompts you used in your Week 3 aggregated vLLM lab (or a comparable new set spanning short and long prompts) through the disaggregated deployment. Record Time-to-First-Token (TTFT) and tokens/sec for each run, the same way you did in Week 8.
- Re-run the identical prompt set against your Week 3 aggregated (co-located) vLLM deployment. Record the same two metrics.
- Build a comparison table of TTFT and tokens/sec for disaggregated vs. aggregated, broken out by short prompts vs. long prompts.
- Before reading further in the docs, write down your own prediction: which metric (TTFT or tokens/sec) should improve most from disaggregation, and why, based on which phase is compute-bound vs. memory-bandwidth-bound? Then check your prediction against the explanation in the Dynamo disaggregated-serving design doc and note where your reasoning matched or diverged.
- Produce a one-page diagram (hand-drawn photo, slide, or diagramming tool export) that maps: prompt length → prefill (compute-bound) → TTFT, and generation length/concurrency → decode (memory-bandwidth-bound) → tokens/sec.
Deliverables: Your comparison table (disaggregated vs. aggregated, TTFT and tokens/sec, short vs. long prompts), your written prediction plus what you found when you checked it against the docs, your one-page diagram, and a short (under 300 words) reflection on whether disaggregation was worth its added complexity for the workload you tested. Submit as a single document upload or via text entry with embedded images.