Inference Engines
Framework-centric inference serving examples on AWS, organized by engine (vLLM, SGLang, NVIDIA Dynamo)
View on GitHubOverview
This collection provides framework-centric inference examples on AWS, organized by serving engine. Each example deploys a modern LLM or VLM serving stack β with options for high-performance EFA networking, expert-parallel all-to-all communication, and disaggregated prefill/decode KV-cache transfer β across Amazon EKS, SageMaker HyperPod EKS, and EC2.
Available engines and test cases
| Engine | Example | Description |
|---|---|---|
vllm | dsv3-uccl-nixl | DeepSeek-V3 disaggregated (prefill/decode) inference with vLLM, UCCL-EP, and NIXL on EKS |
vllm | cosmos-reason | NVIDIA Cosmos Reason physical-reasoning VLM served by vLLM on EKS / SageMaker HyperPod EKS |
sglang | dsr1-deepep-efa | DeepSeek-R1 on p5/p5en (EC2 + Docker) with DeepEP MoE all-to-all over NVSHMEM-libfabric/EFA β colocated and 2P2D PD-disaggregated |
nvidia-dynamo | nvidia-dynamo | NVIDIA Dynamo (SGLang backend) on SageMaker HyperPod EKS β aggregated and PD-disaggregated serving via the Dynamo operator |
sglang | qwen3.5-27b-b300-intra-pd | Qwen3.5-27B with intra-node prefill/decode disaggregation on a single B300 node |
sglang | kimi2.6-h200-1p1d | Kimi2.6 with node-level 1-prefill / 1-decode disaggregation across two H200 nodes |
sglang | dsv4pro-b300-single-node | DeepSeek V4 Pro unified (non-PD) serving on a single B300 node |
sglang | dsv4flash-b300-intra-3p1d | DeepSeek-V4-Flash with intra-node 3-prefill / 1-decode disaggregation (tp=2 each) on a single B300 node |
sglang | glm5.2-b300-tp2-dp4 | GLM-5.2 (NVFP4) as 4Γ independent tp=2 engines behind an SGLang router on a single B300 node |
More engines (TRT-LLM, NIM, Ray Serve, and others) are planned.
vLLM
vLLM is a high-throughput, OpenAI-API-compatible LLM serving engine. The samples deploy vLLM on AWS for inference workloads, with options for:
- High-performance EFA networking
- Expert-parallel all-to-all (UCCL-EP)
- Disaggregated prefill/decode KV-cache transfer (NIXL)
DeepSeek-V3 disaggregated inference (dsv3-uccl-nixl)
This sample serves DeepSeek-V3-0324 (671B parameters, 256 experts, top-8 routing, MLA)
with disaggregated prefill / decode across multiple p5en.48xlarge (8ΓH200) nodes on
Amazon EKS or SageMaker HyperPod EKS, using:
- vLLM 0.21.0 for OpenAI-compatible serving
- UCCL-EP (
deepep_high_throughput,deepep_low_latency) for MoE expert-parallel all-to-all over EFA - NIXL (NVIDIA Inference Xfer Library) over
LIBFABRICfor KV-cache transfer between prefill and decode pods - A simple Python proxy (
toy_proxy_server.pyshipped in vLLM) for routing
It benchmarks configurations from a single 8-GPU unified node up to a 6-node
1-prefill / 5-decode disaggregated topology, plus a UCCL-EP vs. AGRS
(allgather_reducescatter) backend comparison.
Architecture
- Prefill runs UCCL-EP
deepep_high_throughput(high token/s under bursts) - Decode runs UCCL-EP
deepep_low_latency(low TPOT, CUDA graphs) - NIXL transfers KV blocks from prefill β decode over EFA via the
LIBFABRICbackend - All pods run with
hostNetwork: trueso EFA / NIXL / NCCL can use the full 16-EFA, 3,200 Gbps fabric
Indicative results
Caveat. These numbers come from single-seed runs at
--num-prompts 50. They are smoke-benchmark numbers, not statistically tight measurements. Treat the rankings as directionally informative, not as research findings. Source: thedsv3-uccl-nixlREADME.
| Config | Nodes | GPUs | Burst RPS | Burst tok/s | P50 TPOT @1RPS | P50 TPOT @burst | tok/s/GPU |
|---|---|---|---|---|---|---|---|
| 1N unified | 1 | 8 | 13.49 | 3,454 | 21.83ms | 44.00ms | 431.55 |
| 1P+1D | 2 | 16 | 15.94 | 4,082 | 20.93ms | 40.91ms | 255.10 |
| 1P+3D | 4 | 32 | 17.22 | 4,408 | 18.21ms | 33.76ms | 137.75 |
| 1P+4D | 5 | 40 | 19.18 | 4,910 | 17.81ms | 32.51ms | 122.75 |
| 1P+5D | 6 | 48 | 17.16 | 4,392 | 17.81ms | 30.34ms | 91.51 |
| 1P+3D AGRS | 4 | 32 | 10.62 | 2,721 | 23.30ms | 48.20ms | 85.03 |
Directional observations:
- Disaggregation pays off mostly in latency, not throughput. Unified has the best
tok/s/GPU; disaggregation lowers burst TPOT roughly 44ms β 30ms but only modestly increases peak RPS. - The 1P:4D ratio appears to be the knee β beyond that, the single prefill node looks like the bottleneck.
- UCCL-EP outperforms AGRS for this MLA + 256-expert MoE model in these runs.
Prerequisites
- Amazon EKS or SageMaker HyperPod EKS, version 1.33+ (1.33 added native EFA traffic in the default EKS security group)
- 1β6 Γ
p5en.48xlargeGPU nodes (8ΓH200 141GB, 16ΓEFA, ~30 TB NVMe) - NVIDIA device plugin and EFA device plugin installed
- (Recommended) FSx for Lustre PVC for the model cache, or local NVMe
- Hugging Face token with access to
deepseek-ai/DeepSeek-V3-0324 - ~680 GB of fast storage for the FP8 weights cache
Key software versions: vLLM 0.21.0, UCCL commit 0dc87eb, NIXL v1.1.0, PyTorch 2.11.0
(cu130), Ray 2.55.1, EFA installer 1.48.0, NCCL v2.30.4-1. These pins, the EKS 1.33+ EFA note,
and the results table are transcribed from the
dsv3-uccl-nixl README;
the Cosmos Reason image tags (vllm/vllm-openai:v0.21.0 for the plain-EKS path and the AWS DLC
vllm:0.17-gpu-py312 for the HyperPod path β two distinct images) are from the
cosmos-reason README.
The upstream repo is forward-dated; these versions reflect the source as published.
NVIDIA Cosmos Reason (cosmos-reason)
Online inference reference for NVIDIAβs Cosmos Reason physical-reasoning Vision-Language Model, served by vLLM on Amazon EKS or SageMaker HyperPod EKS. Cosmos Reason generates chain-of-thought reasoning traces about safety, causality, object interactions, and spatiotemporal dynamics in videos and images β the building block for auto-labeling Synthetic Data Generation (SDG) pipelines, Reasoning VLA models, and video Q&A workloads.
This test case provides two parallel kubectl-only deployment paths, both serving
the same model with the same vLLM CLI args:
| Path | Purpose |
|---|---|
kubernetes/ | Plain EKS users with an existing vLLM deployment. No HyperPod required. Vendor vllm/vllm-openai:v0.21.0 image. |
hyperpod-eks/ | HyperPod EKS clusters using the Inference Operator β auto KEDA + Karpenter scale-to-zero, managed KV cache, intelligent routing. AWS-managed vllm:0.17-gpu-py312 Deep Learning Container. |
Supported models are parameterized via ${MODEL_ID}:
| Model | Backbone | Min GPU memory | Recommended --max-model-len | Reasoning parser |
|---|---|---|---|---|
nvidia/Cosmos-Reason1-7B (default for sm_8x) | Qwen2.5-VL | 24 GB | 24576 / 32768 | None β <think> inline in content |
nvidia/Cosmos-Reason2-2B | Qwen3-VL | 24 GB | 16384 | --reasoning-parser qwen3 |
nvidia/Cosmos-Reason2-8B (default for sm_9x) | Qwen3-VL | 32 GB | 16384 | --reasoning-parser qwen3 |
Both paths expose an OpenAI-compatible /v1/chat/completions endpoint and ship example
clients for image VQA, video VQA, and SDG auto-labeling. Video workloads require an
expanded encoder cache; the kubernetes/ path (upstream vLLM v0.21.0) includes the
necessary flags by default, while the HyperPod DLC path is recommended for image workloads.
SGLang
Multiple SGLang test cases cover DeepSeek-R1 on p5/p5en with DeepEP MoE all-to-all over NVSHMEM-libfabric/EFA, along with newer single-node and node-level prefill/decode disaggregation topologies on H200 and B300 hardware β spanning Qwen3.5-27B, Kimi2.6, DeepSeek V4 Pro/Flash, and GLM-5.2.
Each sample is self-contained: most are EKS / SageMaker HyperPod manifests applied with
kubectl, while dsr1-deepep-efa runs directly on EC2 with Docker. Except for GLM-5.2 (which
uses a digest-pinned dev-glm52-nvfp4 image for NVFP4 support), the manifest-applied samples
serve on the upstream lmsysorg/sglang:v0.5.12.post1-cu130 image; Kimi adds an EFA layer on top
for inter-node RDMA. See the dedicated
SGLang inference examples
for the full per-sample topology, images, and shared helpers (EFA image build, model pre-staging,
metrics).
NVIDIA Dynamo
The nvidia-dynamo example serves models with NVIDIA Dynamo (SGLang backend) on
SageMaker HyperPod EKS, supporting both aggregated and PD-disaggregated serving via the
Dynamo operator. See
examples/inference/nvidia-dynamo
for deployment, benchmarks, and observability.
Source
All examples on this page are maintained in
examples/inference
in the awsome-distributed-ai repository.