🛠️ 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Re-run the identical prompt set against your Week 3 aggregated (co-located) vLLM deployment. Record the same two metrics.
  6. Build a comparison table of TTFT and tokens/sec for disaggregated vs. aggregated, broken out by short prompts vs. long prompts.
  7. 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.
  8. 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.