Skip to content

chore: sync NVIDIA upstream main through 9d65c0ae - #54

Merged
cquil11 merged 5 commits into
mainfrom
chore/sync-upstream-20261008-llmd
Oct 8, 2026
Merged

cquil11 merged 5 commits into
mainfrom
chore/sync-upstream-20261008-llmd

Conversation

@cquil11

@cquil11 cquil11 commented Oct 8, 2026

Copy link
Copy Markdown

Merge NVIDIA/srt-slurm main through 9d65c0ae, including TokenSpeed support and the TRT-LLM MPI rank-order fix. Preserve the fork-specific changes.

peilii and others added 5 commits October 7, 2026 16:54
…IA#583)

* fix(trtllm): pin MPI rank order on uniform multi-node endpoints

A multi-node TRT-LLM endpoint spanning full nodes passed Slurm a plain --nodelist, which names the nodes but not the task order: Slurm may lay ranks out by its own topology, putting rank 0 on a node other than the leader whose IP is MASTER_ADDR, and the rendezvous then stalls at startup. Uneven layouts already used --distribution=arbitrary with one host per task; this extends that to every multi-node endpoint (e.g. --ntasks=8 --ntasks-per-node=4 --nodelist=A,A,A,A,B,B,B,B, no --nodes). Single-node endpoints are unchanged. Tests cover the rendered srun and the relaunch path; docs/engines.md describes the layout.

Signed-off-by: Pei Li <peili@nvidia.com>

* fix(trtllm): review follow-ups: num_nodes condition, warn on replaced distribution, two-node example and snapshot

Use num_nodes > 1 for the multi-node check; log a warning naming a cluster- or role-configured srun_options.distribution that the explicit per-rank layout replaces, with a test; assert MASTER_ADDR in the rendered command; add examples/trtllm/dynamo-disagg-multinode.yaml with its launch snapshot and README row so the layout is visible in tests/snapshots/launch; docs show the flags as rendered.

Signed-off-by: Pei Li <peili@nvidia.com>

* fix(trtllm): make the two-node example an H100 example

The suite treats every examples/{sglang,vllm,trtllm}/*.yaml as an H100 recipe (8 GPUs per node) and pins their count. The two-node example becomes TP8 prefill on one node and TP16 decode across two 8-GPU nodes; the snapshot shows sixteen ranks, eight hosts each; the curated count is 17.

Signed-off-by: Pei Li <peili@nvidia.com>

---------

Signed-off-by: Pei Li <peili@nvidia.com>
…#580)

* feat(tokenspeed): add a native TokenSpeed backend

Add `engine: tokenspeed`, which launches Dynamo's TokenSpeed backend
(`python3 -m dynamo.tokenspeed`) behind the Dynamo frontend, aggregated or
prefill/decode with Mooncake.

srtctl sets the model, served model name, host, multi-node rendezvous and
P/D flags. `--port` comes from a new per-node TOKENSPEED_PORTS kind spaced
1024 apart, because TokenSpeed scans for its NCCL port above it, and
`--dist-init-addr` from a DIST_INIT_PORTS block sized for the control-plane
cluster TokenSpeed binds on the leader.

Adds examples, launch snapshots, docs/tokenspeed.md and tests.

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* docs(tokenspeed): name the first Dynamo nightly with TokenSpeed prefill/decode

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* docs(tokenspeed): link the examples by URL for the strict docs build

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* feat(tokenspeed): run TokenSpeed gRPC engines behind SMG

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* docs: link the SMG and TokenSpeed examples by URL for the strict docs build

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* refactor(tokenspeed): inherit the Prometheus metrics path from Backend

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* chore(tokenspeed): use the shared WorkerMode and the NVIDIA copyright header

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* feat(tokenspeed): point the Mooncake Store L3 cache at a mooncake-master service

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* fix(tokenspeed): skip the gRPC engine warmup on prefill and decode workers

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* docs(tokenspeed): document DEP and TEP, KV cache offload and the P/D warmup skip

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* test(tokenspeed): update launch snapshots for the P/D warmup skip

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* refactor(backends): share the Mooncake worker environment through Backend

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

* refactor(tokenspeed): match existing worker launch selection

* fix(tokenspeed): pass mapping-valued args as JSON

Signed-off-by: Cam Quilici <cjquilici@gmail.com>

---------

Signed-off-by: Cam Quilici <cjquilici@gmail.com>
Signed-off-by: Yuewei Na <nv-yna@users.noreply.github.com>
Co-authored-by: Yuewei Na <nv-yna@users.noreply.github.com>
Signed-off-by: Yuewei Na <nv-yna@users.noreply.github.com>
Co-authored-by: Yuewei Na <nv-yna@users.noreply.github.com>
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown

src/srtctl diff: +299 -62

@cquil11
cquil11 merged commit ab62ca5 into main Oct 8, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants