Repository navigation
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #596 +/- ##
=======================================
Coverage ? 85.51%
=======================================
Files ? 165
Lines ? 24537
Branches ? 0
=======================================
Hits ? 20982
Misses ? 3555
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…ake_store_config The Mooncake client config (the JSON a worker reads from MOONCAKE_CONFIG_PATH) lived in the mooncake-master service's options.store_config, although the master never reads it: it says how each worker joins the pool and how much host memory its ranks lend. It now lives with the other per-role settings, in roles.<role>.mooncake_store_config, for vLLM as well as TRT-LLM. - vLLM writes one client config per role whose KV connector uses Mooncake (/logs/mooncake_store_config_<role>.json) and points that role's MOONCAKE_CONFIG_PATH at it. device_names_by_gpu process configs are per role too (mooncake_store_config_<role>_gpu<ids>.json), for Mooncake roles only. - The vLLM connector is resolved like the worker command (kv_connector_classes), so a Mooncake connector chosen through engine.connector or roles.<role>.args.connector counts as well as kv-transfer-config. The vLLM master check uses the same answer, and is_mooncake_connector is the one place the class name is matched. - Backend.mooncake_store_modes, mooncake_store_config_for_mode, mooncake_master_store_config and mooncake_pool_keys: one layering in the base class, and one table per engine of the keys every client of a pool must share. The validator checks those match across roles, and refuses the field on roles that read no client config and without a mooncake-master service. - options.store_config is deprecated, not removed: its keys still apply under every role's own, and loading a recipe that sets it logs a warning. - srtctl migrate moves options.store_config (including schema-1 backend.mooncake_kv_store.store_config) into each Mooncake role, under the role's own keys, keeping end-of-line comments with their keys. Override and sweep files, whose variants can change a role's connector, are left as they are, as is engine.mooncake_kv_store.store_config; a note says so. - The dry run shows each role's config through the same hooks for both engines. - examples/vllm/dynamo-disagg-mooncake.yaml and its launch snapshot. The TRT-LLM examples carry their client config in the roles. Docs updated. Signed-off-by: Yuewei Na <nv-yna@users.noreply.github.com>
nv-yna
force-pushed
the
yna/mooncake-store-config-in-roles
branch
from
October 19, 2026 23:15
978d925 to
76773e5
Compare
nv-yna
marked this pull request as ready for review
October 19, 2026 23:15
nv-yna
requested review from
alec-flowers,
csahithi,
hjjq,
ishandhanani,
kedarpotdar-nv,
kyleliang-nv,
nlevin-ui and
qiching
as code owners
October 19, 2026 23:15
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A Mooncake client config is the JSON a vLLM or TRT-LLM worker reads from
MOONCAKE_CONFIG_PATH. It says how that worker joins the pool and how much host memory each of its ranks lends. Recipes write it in themooncake-masterservice'soptions.store_config, but the master never reads it, so the keys read like master settings. Since #595 a TRT-LLM role can also override them inroles.<role>.mooncake_store_config, so one setting can appear in two places:This came up in the review of #595 (comment). History: #157 added
store_configon the engine (backend.mooncake_kv_store.store_config). #407 (schema 2.0) moved the master intoservices:, and the migrator movedstore_configalong tooptions.store_config. Everything else a role needs already lives underroles.<role>.What a recipe looks like with this change
Each role that uses Mooncake carries its own client config, and the master entry describes only the master. A YAML anchor writes the keys the roles share once.
srtctl migrate -f recipe.yamlperforms this rewrite. TRT-LLM has the same shape; seeexamples/trtllm/trtllm-serve-disagg-mooncake.yaml. The newexamples/vllm/dynamo-disagg-mooncake.yamlshows the vLLM form.Changes
RoleConfig.mooncake_store_confignow applies to vLLM as well as TRT-LLM. vLLM writes/logs/mooncake_store_config_<role>.jsonfor each role whose KV connector uses Mooncake, and sets that role'sMOONCAKE_CONFIG_PATH. Before, it wrote one/logs/mooncake_store_config.jsonfor every role.device_names_by_gpuprocess configs becomemooncake_store_config_<role>_gpu<ids>.json, built from that role's keys.VLLMBackend.uses_mooncake_storeresolves the connector the way the worker command does (kv_connector_classes):kv-transfer-config, elseroles.<role>.args.connector, elseengine.connector, including connectors aMultiConnectorwraps. The file writer, worker env, dry run, role-field validator and the existing "master without a Mooncake connector" check all use it.is_mooncake_connectoris the one place the class name is matched.mooncake_store_modes,mooncake_store_config_for_mode,mooncake_master_store_configandmooncake_pool_keys. The layering (role keys over the deprecated service keys) is implemented once inBackend.mooncake_pool_keyslists, per engine, the keys every client of a pool must share: vLLMmetadata_serverandprotocol; TRT-LLM alsomodel_keyandnamespace.mooncake_store_configon a role that reads no client config (SGLang, or no Mooncake connector), and without amooncake-masterservice. This replaces feat(trtllm): run TRT-LLM's mooncake-store connector on the native mooncake-master service #595's rule that pool keys could not be set per role.options.store_config(andengine.mooncake_kv_store.store_config) keeps working: its keys apply under every role's own. Loading a recipe that sets it logs a warning that names the replacement andsrtctl migrate.srtctl migratemovesoptions.store_config, including the schema-1backend.mooncake_kv_store.store_config, into each role whose connector uses Mooncake. The engine decides which roles those are, so connectors resolve as at launch. A role's own keys win, and end-of-line comments travel with their keys. Override files (baseplusoverride_*) and sweep files are left as they are, because a variant or sweep point can change which roles use Mooncake. Theengine.mooncake_kv_store.store_configspelling is also left for the user. Each of these cases gets a note.docs/mooncake-kv-store.md,docs/services.mdanddocs/legacy-v1.mddescribe the per-role form, the anchor pattern and the migration. The TRT-LLM examples carry their client config in the roles. Schema docs are regenerated.