Skip to content

inference-perf on GB300 needs a CUDA 13 (sm_103) vLLM runtime #2385

Description

@yuanchen8911

Summary

inference-perf cannot produce a meaningful GB300 measurement with the currently pinned Dynamo worker image, because that image is CUDA 12 and GB300 (Blackwell Ultra) is sm_103. The check is deferred on gb300-eks-ubuntu-inference-dynamo until an sm_103-capable (CUDA 13) vLLM / Dynamo runtime ships.

Evidence

Measured 2026-08-25 on nhensley-gb300 (2× p6e-gb300r.36xlarge, Qwen/Qwen3-8B, 4 GPU workers, concurrency 1024, 8192 requests) — the same configuration as the GB200 baseline:

Metric GB200 reference GB300 measured Gate
throughput ~65,952 tok/s 20,769 tok/s >= 50000
TTFT p99 ~1,240 ms 33,320 ms <= 2000

GB300 should exceed GB200. A 3× throughput drop paired with a 27× latency blowup is not a hardware characteristic — it is the signature of serving from JIT-compiled kernels.

Confirmed from the image config of nvcr.io/nvidia/ai-dynamo/vllm-runtime:1.2.1 (linux/arm64):

CUDA_VERSION=12.9.1
NV_LIBNCCL_PACKAGE=libnccl2=2.27.3-1+cuda12.9

Mechanism

Plain CUDA kernels forward-compat onto a newer arch via PTX JIT, but runtime kernel compilers (Triton/LLVM) need explicit arch support. Without sm_103 codegen the workers still serve — they just compile kernels on demand, which is what destroys first-token latency while leaving throughput merely degraded.

This is the same class of gap already documented for VR200 / sm_107a, where the toolchain does not recognize the arch at all and the decode workers crash-loop outright rather than degrade. GB300 is the milder variant because CUDA 12.9 partially handles sm_103.

Why the thresholds were not simply retuned

Setting floors from 20,769 tok/s / 33,320 ms would encode a degraded configuration as the GB300 baseline. It would turn the PR green while permanently masking this gap, and a correct CUDA 13 image would then exceed the floor by ~3×, leaving the gate unable to detect a regression in either direction.

Done when

  1. An sm_103-capable (CUDA 13) vLLM / Dynamo runtime image is available and pinned.
  2. inference-perf is re-enabled on gb300-eks-ubuntu-inference-dynamo.
  3. Throughput and TTFT floors are measured on GB300 and set from that run.

Notes

  • Deployment (4/4) and conformance (10/10) pass on this leaf and continue to gate it; only the performance phase is deferred.
  • cacheWorkerImage in validators/performance/model_cache.go is pinned to the same image and is kept in sync with testdata/inference/dynamo-deployment.yaml, so both move together when the runtime is bumped.

Related: #2381 (GB300 EKS overlays), #2382 (the PR that deferred the check).

Metadata

Metadata

Assignees

Labels

area/validatortheme/validationConstraint evaluation, health checks, and conformance evidence

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions