Skip to content

feat: support the LMCache server on ATOM and SGLang - #528

Merged
ishandhanani merged 7 commits into
NVIDIA:mainfrom
SemiAnalysisAI:feat/lmcache-atom-sglang
Sep 29, 2026
Merged

ishandhanani merged 7 commits into
NVIDIA:mainfrom
SemiAnalysisAI:feat/lmcache-atom-sglang

Conversation

@cquil11

@cquil11 cquil11 commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Extends the LMCache service from #507 to ATOM and SGLang, and fixes connector forwarding for direct vLLM aggregate workers. Includes #507's commit as the base.

  • ATOM: adds role-level extra-kv-connectors, preserving Mooncake for P/D transfer. Defaults lmcache_mp to the service's port, 8750; explicit ports take precedence.
  • SGLang: supplies node-local LMCache connection settings when enable-lmcache is enabled, unless a config file or host override is provided.
  • vLLM: forwards an explicitly configured aggregate-role connector to --kv-transfer-config when launching with vllm serve.

Includes example recipes, launch snapshots, and regression tests.

Validation

Configuration Cluster InferenceX PR Run
ATOM 1P1D, Mooncake + lmcache_offload MI355X #3543 Passed
vLLM aggregate, lmcache-mp + lmcache-server MI300X, TP8 #3545 Passed
SGLang, enable-lmcache + lmcache-server B200, TP8 #3554 Passed

A role can list extra-kv-connectors in its args. srtctl keeps generating
the Mooncake P/D connector with its handshake port and wraps it with the
extras in ATOM's multi connector, which is how ATOM runs its in-process
LMCache CPU offload on prefill. A single extra connector on an aggregate
role is passed unwrapped.

Signed-off-by: Cameron Quilici <cjquilici@gmail.com>
…server

SGLang's enable-lmcache flag runs LMCacheUnifiedRadixCache over LMCache's
multiprocess connector, which reads the server address from
LMCACHE_MP_HOST and LMCACHE_MP_PORT. srtctl now sets both to the
lmcache-server service on the worker's own node, unless the recipe passes
lmcache-config-file or sets LMCACHE_MP_HOST in the role env.

Signed-off-by: Cameron Quilici <cjquilici@gmail.com>
Drop the aggregate-role path, the underscore spelling and per-entry
validation; prefill/decode wrap Mooncake plus the extras in multi and
aggregate roles reject extra-kv-connectors.

Signed-off-by: Cameron Quilici <cjquilici@gmail.com>
ATOM runs lmcache_offload on aggregate servers too, and its lmcache_mp
connector is a client for the same lmcache server that the lmcache-server
service launches. extra-kv-connectors now work on any role: an aggregate
role with one connector runs it alone, and several are wrapped in multi.
lmcache_mp defaults lmcache.mp.port to srtctl's node-local server port
unless the recipe gives an address.

Signed-off-by: Cameron Quilici <cjquilici@gmail.com>
Signed-off-by: Cameron Quilici <cjquilici@gmail.com>
Signed-off-by: Cameron Quilici <cjquilici@gmail.com>
Signed-off-by: Cameron Quilici <cjquilici@gmail.com>
@cquil11
cquil11 force-pushed the feat/lmcache-atom-sglang branch from 9b65d1a to 71936ee Compare September 29, 2026 16:16
@ishandhanani ishandhanani added the bug Something isn't working label Sep 29, 2026
@ishandhanani
ishandhanani merged commit 7b5863a into NVIDIA:main Sep 29, 2026
9 checks passed
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (main@6adea77). Learn more about missing BASE report.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #528   +/-   ##
=======================================
  Coverage        ?   83.39%           
=======================================
  Files           ?      154           
  Lines           ?    22141           
  Branches        ?        0           
=======================================
  Hits            ?    18465           
  Misses          ?     3676           
  Partials        ?        0           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants