docs(DeepSeek-V4): mark b200|small|pd-disagg + h200|small|{cp,pd-disagg} verified (#23689)

This commit is contained in:
fzyzcjy
2026-04-25 11:57:25 +08:00
committed by GitHub
parent fd401c2fb4
commit d2c61acf25
2 changed files with 22 additions and 1 deletions
@@ -145,7 +145,14 @@ The generator currently picks values on the **conservative** side (mirroring an
**Hopper (H200) note**
The H200 image and checkpoint are currently being uploaded — public path coming shortly.
H200 image (`lmsysorg/sglang:deepseek-v4-hopper`) and FP8 checkpoints
(`sgl-project/DeepSeek-V4-Flash-FP8`, `sgl-project/DeepSeek-V4-Pro-FP8`) are
publicly available.
PD-Disagg recipes on H200 may require `docker run --privileged --ulimit memlock=-1`
(or `--device /dev/infiniband:/dev/infiniband --cap-add IPC_LOCK`) so mooncake
can discover the IB HCAs; without IB exposure mooncake silently falls back to
TCP, which can lead to garbled KV transfer on large checkpoints.
**Base model usage**
@@ -164,6 +164,7 @@ export const DeepSeekV4Deployment = () => {
"b200|small|balanced",
"b200|small|max-throughput",
"b200|small|cp",
"b200|small|pd-disagg",
"b200|big|low-latency",
"b200|big|balanced",
"b200|big|max-throughput",
@@ -171,7 +172,18 @@ export const DeepSeekV4Deployment = () => {
"h200|small|low-latency",
"h200|small|balanced",
"h200|small|max-throughput",
"h200|small|cp",
"h200|small|pd-disagg",
// h200|big|pd-disagg: pending verification (needs 4-node H200 cluster with
// shared IB fabric: 2-node prefill + 2-node decode).
]);
// Recipes whose command is intentionally not yet provided (e.g. blocked by an
// upstream limitation). Showing a minimal placeholder is friendlier to users
// than emitting a commented-out invalid command.
const TBD_RECIPES = new Set([
"h200|big|cp",
]);
const TBD_PLACEHOLDER = "# to be provided";
const BEING_VERIFIED_NOTE =
"# NOTE: this recipe is being verified on the latest checkpoint";
@@ -387,6 +399,7 @@ export const DeepSeekV4Deployment = () => {
const base = `${envBlock}sglang serve \\\n${flags.join(" \\\n")}`;
const withMultinode = multinode ? prependMultiNodeNote(base, nnodes) : base;
const verifyKey = `${hardware}|${modelSize}|${recipe}`;
if (TBD_RECIPES.has(verifyKey)) return TBD_PLACEHOLDER;
return VERIFIED_RECIPES.has(verifyKey)
? withMultinode
: `${BEING_VERIFIED_NOTE}\n${commentOutCommand(withMultinode)}`;
@@ -474,6 +487,7 @@ python3 -m sglang_router.launch_router \\
const full = `${prefill}\n\n${decode}\n\n${router}`;
const verifyKey = `${hardware}|${modelSize}|pd-disagg`;
if (TBD_RECIPES.has(verifyKey)) return TBD_PLACEHOLDER;
return VERIFIED_RECIPES.has(verifyKey)
? full
: `${BEING_VERIFIED_NOTE}\n${commentOutCommand(full)}`;