docs(sglang): rewrite the reference stack to the MP data plane#162
docs(sglang): rewrite the reference stack to the MP data plane#162EdHasNoLife wants to merge 5 commits into
Conversation
The reference manifest + README still described the pre-MP lm:// model with a 'KNOWN LIMITATION / caches nothing / do not use as a working offload' narrative — now false since the MP data plane shipped. Rewrite deployment.yaml to the MP topology (Redis L2 + node-local MP-worker native sidecar + --lmcache-config-file, no lm:// env) and the README to match; refresh the VERSIONS.md note that flagged the manifest as lagging. Derived from the GPU-validated adapter render (redis_l2.go + sglang_mp.go), structurally validated (kubectl dry-run); needs a GPU re-run before it's golden.
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fix
NitNone. Per-category coverage
Verdictchanges-requested |
…e (review) LMCache MP is write-through — KV lands in Redis on store, not only on HBM eviction — so the standalone check asserts dbsize>0 after requests rather than making it eviction-conditional. Also drop the VERSIONS.md parenthetical that still called the manifest rewrite a future increment (it landed in this PR).
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fix
Nit
Per-category coverage
Verdictchanges-requested |
…ction; precise privacy note (review r2) - --maxmemory 6gb (6e9 bytes) understated the managed ~80%-of-8Gi render; set the byte-exact 6871947674 (~6.4Gi). - step-4 said offload happens 'on HBM eviction', contradicting the write-through DBSIZE check; reword to write-through. - Service :5557 comment no longer overstates the privacy guarantee (pod IP is still reachable without a NetworkPolicy). - Enumerate what a GPU run must confirm before this is treated as golden.
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fix
NitNone. Per-category coverage
Verdictchanges-requested |
… VERSIONS Redis row (review r3) - DBSIZE>0 only proves write-through offload; add a flush_cache + re-request step asserting the worker's 'Retrieved' log — the store->flush->retrieve cycle the managed path was GPU-validated on. - The Redis L2 row said 'not a reference manifest / code default only', now contradicted by the manifest this PR added; list it in Where + distinguish the pullable-tag default from a reproducible pin.
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fix
Nit
Per-category coverage
Verdictchanges-requested |
…check curls; --dry-run=client (review r4) The retrieval check grepped the whole worker log, so a warm-up retrieval could false-pass; scope it with --since-time and fail the flush/request curls explicitly. Also spell out --dry-run=client (bare --dry-run is deprecated).
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fix
NitNone. Per-category coverage
Verdictchanges-requested |
|
Dispositioning the two remaining Codex findings (PR is otherwise green/mergeable):
CAC-251. |
The SGLang reference stack still described the pre-MP
lm://model with a pervasive "KNOWN LIMITATION / caches nothing / do not use as a working offload / drop--enable-lmcache" narrative — now false: the MP data plane shipped (#149), so SGLang genuinely offloads. An operator following the reference was told a working feature is broken.Rewrites the reference stack to the shipped MP topology:
manifests/sglang-lmcache/deployment.yaml— replaces the standalonelm://lmcache-server+LMCACHE_REMOTE_URLenv with a Redis L2 store + a node-local MP-worker native sidecar (aninitContainersentry withrestartPolicy: Always) that writes the--lmcache-config-fileand offloads to Redis via theresp--l2-adapter; the engine gets--enable-lmcache+--lmcache-config-file, and the lm:// env is dropped.manifests/sglang-lmcache/README.md— rewritten to the working MP flow (deploy Redis L2 + engine + worker, drive traffic, assert publisher-start + a non-empty Redis L2 after eviction), keeping the still-valid off-GPU wire tests, privacy boundary, managed-path, and block-size sections.VERSIONS.md— refreshes the note that flagged the manifest as lagging (it now matches). The pins themselves were already MP.Validation. Derived from the GPU-validated adapter render (
redis_l2.go+internal/enginewire/sglang_mp.go; the controller-rendered managed path was validated store→flush→retrieve in the MP increment) and structurally validated (kubectl apply --dry-run=clientpasses all four objects; native-sidecarrestartPolicyrecognized). It has not been independently re-run end-to-end on a GPU in this hand shape — the manifest + README + VERSIONS all say so and recommend a GPU run before treating it as golden.Still deferred under CAC-251 (not in this PR): the MP smoke assertion. It modifies the shared 3,600-line per-PR install-smoke gate, which I can't run locally — adding an unvalidated assertion there is high-blast-radius (a wrong resource name / timing budget breaks CI for the whole repo), so it should be added with a real kind run, not blind. (Also corrected while here:
cachebackend-api.mdandVERSIONS.md's pins were already MP — my earlier "still open" list over-counted; see the CAC-251 comments.)CAC-251.