Motif-3 NVFP4
Deploy aggregated or 3P1D KV-aware Motif-3 serving on NVIDIA B200 GPUs.
Experimental. Serve Motif-3 NVFP4 with NVIDIA Dynamo and vLLM on B200. Choose one aggregated worker or three prefill workers and one decode worker (3P1D) with KV-aware routing. Each worker uses two GPUs (TP2), expert parallelism, and multi-token prediction with two speculative tokens (MTP2).
Choose your deployment target
Prerequisites
- A Kubernetes cluster with the Dynamo platform installed and a shared ReadWriteMany model-cache volume.
- A Hugging Face token with access to the checkpoint, used by the model-download Job.
- Two available B200 GPUs on one node.
- Eight available B200 GPUs. Each TP2 worker occupies two GPUs on one node; configure the fabric for NIXL/UCX transfer between nodes.
Run the following commands from the repository root. Create a namespace and download secret if they do not already exist:
Deploy
Reuse a populated shared-model-cache PVC when available. Otherwise, set storageClassName in the model-cache manifest, then create the cache and download the checkpoint. For Nscale, use storageClassName: vast.
Apply the aggregated manifest:
For Nscale B200 selection and GPU tolerations, apply the aggregated Kustomization instead:
Rendering the aggregated Kustomization requires Git and network access.
Configure GPU node selection and fabric resources for your cluster, then apply the generic 3P1D manifest:
For Nscale, use the optional site component to add B200 node selection and RDMA settings:
Wait for the frontend and all four workers to become ready.
Smoke Test
Forward the frontend port for the selected target:
In another terminal, verify model discovery and a completion:
Benchmark
Stage the complete 8k_1k_70kv_chat_new_noschedule_short_15perc.jsonl trace at /shared-model-cache/traces/8k_1k_70kv_chat_new_noschedule_short_15perc.jsonl.
The aggregated AIPerf Job uses concurrency 11:
Follow the disaggregated benchmark workflow to prepare the client and reset worker and router caches before each independent run.
The runner sends 32 warmup requests at concurrency 32, then measures all 1,805 trace rows at concurrency 64. It retains worker and router caches between phases and saves separate artifacts; warmup requests are excluded from the results.
Both targets default to real MTP verification. To use synthetic acceptance length 2.13 for benchmarking, change the SPECULATIVE_CONFIG ConfigMap key from speculative-config to speculative-config-synthetic in the deployment source, regenerate any derived manifest, and redeploy. For disaggregation, change both worker roles; see the recipe README for regeneration commands.
Expected Performance
These chat-trace results use synthetic MTP2 acceptance length 2.13. They do not measure real MTP acceptance or output quality. The default manifests use real MTP verification.
TTFT is Time To First Token. Per-user output rate excludes TTFT; throughput per GPU includes every serving GPU.
Thirty-five requests exceeded the 262,144-token context limit.
Compare All Targets
Notes
- Both targets use NVFP4 weights, FP8 KV cache, prefix caching, and a 262,144-token context limit. Frontends explicitly set
--kv-cache-block-size 128, matching--block-size=128on every worker. - Both targets use the public
nvcr.io/nvidia/ai-dynamo/vllm-runtime:1.5.0-motif-3-dev.2image; no NGC API key or image-pull secret is required. The Hugging Face secret is used only to download the model. - Populate the shared model cache before starting the workers, which run in offline mode.
- The disaggregated recipe has been validated with TP2 on both prefill and decode workers.