From ff1804a083ca17b5dfe587e54073adc4fca50be5 Mon Sep 17 00:00:00 2001 From: Yuwei An Date: Tue, 22 Sep 2026 13:52:04 -0700 Subject: [PATCH 1/5] feat(gb300): add SGLang DeepSeek-V4.1 AgentX recipe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pin the upstream image containing #40637 by digest. Add nine TP4/EP4 and TP2/EP2 points with load-specific Engram placement, the GB300 launch route, and Enroot digest normalization. Preserve native DSpark precision and use real verification for evals. 新增 GB300 SGLang DeepSeek-V4.1 AgentX 配方,使用 digest 固定包含 #40637 的上游镜像。覆盖九个 TP4/EP4 与 TP2/EP2 测试点,按负载选择 Engram 放置方式,并补充启动路由和 Enroot digest 转换。保留原生 DSpark 精度,准确率评测使用真实验证。 Validated Bash syntax, 31 local command/routing checks, nine-point matrix, three-mode eval matrix, and append-only changelog. GPU qualification remains pending; replace the changelog PR-link placeholder after PR creation. --- .../dsv41flash_fp4_gb300_sglang_mtp.sh | 120 ++++++++++++++++++ configs/nvidia-master.yaml | 18 +++ docs/configuration-procedures.md | 25 ++++ docs/configuration-procedures_zh.md | 22 ++++ perf-changelog.yaml | 10 ++ runners/launch_gb300-nv.sh | 27 +++- 6 files changed, 220 insertions(+), 2 deletions(-) create mode 100755 benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh diff --git a/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh new file mode 100755 index 0000000000..67f2cc160c --- /dev/null +++ b/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh @@ -0,0 +1,120 @@ +#!/usr/bin/env bash +set -eo pipefail + +# DeepSeek-V4.1-Flash on GB300, using the image's native DSpark. +source "$(dirname "$0")/../../benchmark_lib.sh" +check_env_vars MODEL TP EP_SIZE CONC KV_OFFLOADING TOTAL_CPU_DRAM_GB RESULT_DIR DURATION +check_env_vars EVAL_ONLY SPEC_DECODING IMAGE SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE +require_agentic_kv_offload_none + +if [[ "$MODEL" != deepseek-ai/DeepSeek-V4.1-Flash || "$TP" != "$EP_SIZE" || "$SPEC_DECODING" != mtp ]]; then + echo "This recipe requires DeepSeek-V4.1-Flash, EP_SIZE=TP, and SPEC_DECODING=mtp" >&2 + exit 1 +fi +case "$TP:$CONC" in + 4:1|4:2|4:4|4:8|4:32|4:64|4:80|2:16|2:32) ;; + *) echo "Unsupported GB300 SGLang point: TP=$TP CONC=$CONC" >&2; exit 1 ;; +esac +case "$EVAL_ONLY" in + true|false) ;; + *) echo "EVAL_ONLY must be true or false" >&2; exit 1 ;; +esac +case "$SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE" in + 0) ;; + 1) check_env_vars SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT ;; + *) echo "SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE must be 0 or 1" >&2; exit 1 ;; +esac +export GPU_COUNT="$TP" +export PYTHONNOUSERSITE=1 +export PYTHONUNBUFFERED=1 + +if [[ -n "${MODEL_PATH:-}" && "$MODEL_PATH" != "$MODEL" ]]; then + hf download "$MODEL" --local-dir "$MODEL_PATH" +else + hf download "$MODEL" + export MODEL_PATH="$MODEL" +fi + +nvidia-smi +resolve_trace_source +install_agentic_deps +mkdir -p "$RESULT_DIR" +SERVER_LOG="$RESULT_DIR/server.log" + +export AIPERF_HTTP_TCP_USER_TIMEOUT=900000 +export SGLANG_TIMEOUT_KEEP_ALIVE=900 +export SGLANG_DEFAULT_THINKING=1 +export SGLANG_DSV41_REASONING_EFFORT=high +export SGLANG_RAGGED_VERIFY_MODE=static + +# SGLang graph sizes count requests, not the six target-verify token rows. +# Reserve two requests per trajectory for fan-out; this is a scheduling cap, +# not a guarantee about the number of subagents a trajectory may spawn. +MAX_RUNNING_REQUESTS=$((2 * CONC)) +CUDA_GRAPH_MAX_BS=64 +while (( CUDA_GRAPH_MAX_BS < MAX_RUNNING_REQUESTS )); do + CUDA_GRAPH_MAX_BS=$((2 * CUDA_GRAPH_MAX_BS)) +done + +# Initial tuning follows the newer B200 TP4 recipe; qualify it on GB300. +SWA_PREFIX_TAILS=$((64 * CONC)) +if (( SWA_PREFIX_TAILS < 128 )); then + SWA_PREFIX_TAILS=128 +elif (( SWA_PREFIX_TAILS > 4096 )); then + SWA_PREFIX_TAILS=4096 +fi +if (( CONC >= 32 )); then + export AGENTIC_WARMUP_GRACE_PERIOD=3600 +fi + +# Match the published vLLM arm's thinking-on golden AL, not the earlier +# diagnostic AL=5.4. Accuracy evals must never inherit forced acceptance. +unset SGLANG_SIMULATE_ACC_LEN SGLANG_SIMULATE_ACC_METHOD SGLANG_SIMULATE_ACC_TOKEN_MODE +if [[ "$EVAL_ONLY" == false ]]; then + export SGLANG_SIMULATE_ACC_LEN=3.51 + export SGLANG_SIMULATE_ACC_METHOD=match-expected + export SGLANG_SIMULATE_ACC_TOKEN_MODE=real-draft-token +fi + +select_available_server_port +export AIPERF_SERVER_URL="http://localhost:${PORT}" +export AIPERF_SERVER_METRICS_URLS="${AIPERF_SERVER_URL}/metrics" +export AIPERF_REQUIRED_SERVER_METRIC_PREFIX="sglang:" + +SGLANG_CMD=( + python3 -m sglang.launch_server + --model-path "$MODEL_PATH" --served-model-name "$MODEL" + --host 0.0.0.0 --port "$PORT" + --trust-remote-code + --tp "$TP" --ep-size "$EP_SIZE" + --mem-fraction-static 0.80 + --chunked-prefill-size 4096 + --prefill-decode-interval 16 + --swa-prefix-tails "$SWA_PREFIX_TAILS" + --speculative-algorithm DSPARK + --speculative-dspark-block-size 5 + --max-running-requests "$MAX_RUNNING_REQUESTS" + --cuda-graph-max-bs-decode "$CUDA_GRAPH_MAX_BS" + --reasoning-parser auto + --tool-call-parser auto + --watchdog-timeout 3600 + --enable-metrics + --enable-cache-report +) +write_command "$RESULT_DIR/sglang_command.txt" "${SGLANG_CMD[@]}" +{ + printf 'IMAGE=%s\n' "$IMAGE" + echo "=== SGLANG_* env vars at launch ===" + env | grep -E '^SGLANG_' | sort + echo "===================================" +} | tee "$SERVER_LOG" +"${SGLANG_CMD[@]}" >> "$SERVER_LOG" 2>&1 & +SERVER_PID=$! +wait_for_server_ready --port "$PORT" --server-log "$SERVER_LOG" --server-pid "$SERVER_PID" + +if [[ "$EVAL_ONLY" == true ]]; then + run_eval --port "$PORT" +else + build_replay_cmd "$RESULT_DIR" + run_agentic_replay_and_write_outputs "$RESULT_DIR" +fi diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 97d4aa3934..217d60893e 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -8213,6 +8213,24 @@ dsv41flash-fp4-gb300-vllm-agentic-dspark: # capture stopped at 512, leaving ~36 GiB of KV per GPU. - { tp: 2, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8, 16, 32, 64, 128] } +dsv41flash-fp4-gb300-sglang-agentic-dspark: + image: lmsysorg/sglang:nightly-dev-cu13-20260922-4cbf290f@sha256:504d34fd712ac2656e9a9da363160e49fddb9957b60092893d6b773fc26c0f5f + model: deepseek-ai/DeepSeek-V4.1-Flash + model-prefix: dsv41flash + runner: cluster:gb300-nv + precision: fp4 + framework: sglang + multinode: false + scenarios: + agentic-coding: + - dram-utilization: 0.80 + search-space: + # Launcher keeps Engram on GPU for these points. + - { tp: 4, ep: 4, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8] } + # Launcher offloads Engram weights, not KV, for these points. + - { tp: 4, ep: 4, kv-offloading: none, spec-decoding: mtp, conc-list: [32, 64, 80] } + - { tp: 2, ep: 2, kv-offloading: none, spec-decoding: mtp, conc-list: [16, 32] } + # H200 AgentX arm for DeepSeek-V4.1-Flash. Upstream marks h200 verified and says # the GB200 NVL4 TP4 layout becomes TP8 on 8-GPU nodes, so this is TP8. # `precision: fp4` labels the checkpoint's MXFP4 routed experts, as on the diff --git a/docs/configuration-procedures.md b/docs/configuration-procedures.md index f1e39af598..390767ed52 100644 --- a/docs/configuration-procedures.md +++ b/docs/configuration-procedures.md @@ -472,6 +472,31 @@ those paths on `vllm` only. GPU sweep and eval evidence is required before calling any of these arms validated. +### GB300 DeepSeek-V4.1-Flash SGLang candidate + +The GB300 SGLang script supports nine selected AgentX points: TP4/EP4 at +C1/C2/C4/C8 with GPU-resident Engram, TP4/EP4 at C32/C64/C80 with per-rank +host Engram, and TP2/EP2 at C16/C32 with per-rank host Engram. KV stays on GPU +in every case; `kv-offloading: none` does not describe Engram weight placement. +The launcher selects placement from TP and concurrency and records the effective +SGLang environment in the server log. Verify actual huge-page backing for each +host-offload rank; requesting per-rank layout does not guarantee huge pages. + +The candidate retains native DSpark5 and thinking-on golden AL 3.51 for throughput, +clears forced acceptance for accuracy evals, and uses the canonical 3600-second +AgentX replay. Initial tuning is fraction 0.8, chunk 4096, interval 16, and +128–4096 SWA tails from `64 * CONC`. Maximum running requests is `2 * CONC`; +decode graphs round up to the next power of two, with minimum 64 **requests**, not +tokens. C80 therefore requests graph batch 256. These settings are not yet +GPU-qualified, especially TP2 loading and high-concurrency graph memory. + +The master entry pins `lmsysorg/sglang:nightly-dev-cu13-20260922-4cbf290f` +to its multi-architecture digest. Registry metadata confirms ARM64 support and +source commit `4cbf290fb9e71518f1f8f133025f507d69f9b409`, the merge of SGLang +fix #40637. The launcher converts Docker digest references to Enroot's manifest-tag +syntax, following the B200 launcher. Real-weight startup, the complete selected sweep and +real-verification eval evidence are still required before publication. + ## Validate Run the smallest checks that cover the edited layers. diff --git a/docs/configuration-procedures_zh.md b/docs/configuration-procedures_zh.md index 2f4ed95c9f..887a6a81da 100644 --- a/docs/configuration-procedures_zh.md +++ b/docs/configuration-procedures_zh.md @@ -409,6 +409,28 @@ offload),prefill 分块上限设为 4096,即 vLLM H100 配方在 80 GB 显 在获得 GPU sweep 与 eval 证据之前,不得将这些配方视为已验证。 +### GB300 DeepSeek-V4.1-Flash SGLang 候选配方 + +GB300 SGLang 脚本支持九个选定 AgentX 点:TP4/EP4 的 C1/C2/C4/C8 使用 +GPU 常驻 Engram;TP4/EP4 的 C32/C64/C80 和 TP2/EP2 的 C16/C32 使用每 rank +主机 Engram。所有点的 KV 均保留在 GPU;`kv-offloading: none` 不表示 Engram +权重的放置方式。启动器根据 TP 和并发选择放置方式,并在服务器日志中记录生效的 +SGLang 环境变量。必须检查每个主机卸载 rank 的实际大页覆盖率;请求每 rank 布局 +不保证获得大页。 + +候选配方保留原生 DSpark5,吞吐使用 thinking-on 黄金 AL 3.51,准确率 eval 清除 +强制接受设置,并使用正式 3600 秒 AgentX 回放。初始调优为静态显存比例 0.8、 +chunk 4096、interval 16,以及由 `64 * CONC` 限制在 128–4096 的 SWA tails。 +运行请求上限为 `2 * CONC`;decode graph 向上取二次幂,最少 64 个**请求**, +而非 token。因此 C80 请求 graph batch 256。这些设置尚未完成 GPU 验证, +尤其是 TP2 加载和高并发 graph 显存需求。 + +master 配置使用多架构 digest 固定 `lmsysorg/sglang:nightly-dev-cu13-20260922-4cbf290f`。 +镜像仓库元数据确认支持 ARM64,源码 commit 为 `4cbf290fb9e71518f1f8f133025f507d69f9b409`, +即 SGLang 修复 #40637 的合并提交。启动器沿用 B200 的方式,将 Docker digest +引用转换为 Enroot 的 manifest-tag 语法。 +发布前仍需真实权重启动、全部选定点的 sweep 和真实验证的准确率评测证据。 + ## 验证 运行覆盖被修改层的最小检查。 diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 1941379e55..2da1165948 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -8633,3 +8633,13 @@ - "Test TP2 loading with the unmodified pinned stock loader and expandable CUDA allocator segments alone; preserve tensor payloads, layouts, and computation" - "Resolve local model snapshots, retain robust AgentX HTTP timeouts, and normalize digest-pinned images for the installed Enroot parser with immediate import failure handling" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/3346 + +- config-keys: + - dsv41flash-fp4-gb300-sglang-agentic-dspark + scenario-type: + - agentic-coding + description: + - "Add a GB300 TP4/EP4 and TP2/EP2 DeepSeek-V4.1-Flash SGLang AgentX recipe with native DSpark5 and thinking-on golden AL 3.51; accuracy evals use real verification" + - "Pin upstream SGLang nightly-dev-cu13-20260922-4cbf290f by digest, including merged fix #40637; normalize digest references for Enroot imports" + - "Use TP4 with GPU-resident Engram at C1/C2/C4/C8 and per-rank host Engram at C32/C64/C80; add TP2 C16/C32 with per-rank host Engram. KV stays on GPU throughout; qualify memory, graph sizes, interval 16, chunk 4096, and concurrency-scaled SWA tails on the new image" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX diff --git a/runners/launch_gb300-nv.sh b/runners/launch_gb300-nv.sh index 57263615e5..f48f3665c1 100644 --- a/runners/launch_gb300-nv.sh +++ b/runners/launch_gb300-nv.sh @@ -32,7 +32,7 @@ mkdir -p "$DYNAMO_WHEELS_CACHE_HOST_PATH" export MODEL_PATH=$MODEL -if [[ "$MODEL_PREFIX" == "dsv41flash" && "$PRECISION" == "fp4" && "$FRAMEWORK" == "vllm" && "${IS_MULTINODE}" != "true" ]]; then +if [[ "$MODEL_PREFIX" == "dsv41flash" && "$PRECISION" == "fp4" && ( "$FRAMEWORK" == "vllm" || "$FRAMEWORK" == "sglang" ) && "${IS_MULTINODE}" != "true" ]]; then # Download the new checkpoint into the persistent shared HF cache. export MODEL_PATH="$MODEL" elif [[ $MODEL_PREFIX == "dsr1" && $PRECISION == "fp4" ]]; then @@ -91,6 +91,15 @@ NGINX_SQUASH_FILE="/data/home/sa-shared/gharunners/squash/$(echo "$NGINX_IMAGE" # The login node is x86_64 and the compute nodes aarch64, so import on a compute node. import_squash() { local squash="$1" image="$2" + # Enroot uses the digest as the manifest tag, not Docker's @ syntax. + if [[ "$image" == *@sha256:* ]]; then + local image_digest="${image##*@}" + image="${image%@*}" + if [[ "${image##*/}" == *:* ]]; then + image="${image%:*}" + fi + image="${image}:${image_digest}" + fi local lock="${squash}.lock" srun --account="$SLURM_ACCOUNT" --partition="$SLURM_PARTITION" --exclusive --time=180 bash -c " exec 9>\"$lock\" @@ -106,7 +115,7 @@ import_squash() { import_squash "$SQUASH_FILE" "$IMAGE" # Keep this branch before the nginx import and srtctl setup. -if [[ "$MODEL_PREFIX" == "dsv41flash" && "$FRAMEWORK" == "vllm" && "${IS_MULTINODE}" != "true" ]]; then +if [[ "$MODEL_PREFIX" == "dsv41flash" && ( "$FRAMEWORK" == "vllm" || "$FRAMEWORK" == "sglang" ) && "${IS_MULTINODE}" != "true" ]]; then BENCH_SCRIPT="benchmarks/single_node/agentic/${MODEL_PREFIX}_${PRECISION}_gb300_${FRAMEWORK}_mtp.sh" # Cover DSpark5 verification for concurrent AgentX subagents at c1/c2/c4. export DSV41_MIN_CUDAGRAPH_CAPTURE_SIZE=64 @@ -119,6 +128,20 @@ if [[ "$MODEL_PREFIX" == "dsv41flash" && "$FRAMEWORK" == "vllm" && "${IS_MULTINO export RESULT_DIR=/ix/results # Cold model loading and graph capture exceeded the one-hour frontend deadline. export VLLM_ENGINE_READY_TIMEOUT_S=7200 + if [[ "$FRAMEWORK" == "sglang" ]]; then + check_env_vars TP CONC + # Engram weight placement changes with load; KV stays on GPU throughout. + case "$TP:$CONC" in + 4:1|4:2|4:4|4:8) + export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=0 + ;; + 4:32|4:64|4:80|2:16|2:32) + export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=1 + export SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT=per_rank + ;; + *) echo "Unsupported SGLang GB300 point: TP=$TP CONC=$CONC" >&2; exit 1 ;; + esac + fi srun --account="$SLURM_ACCOUNT" --partition="$SLURM_PARTITION" \ --nodes=1 --ntasks=1 --gpus="${TP:?}" --cpus-per-task=144 --exclusive --mem=0 \ --time="${SALLOC_TIME_LIMIT}" --job-name="$RUNNER_NAME" \ From f1fca89a73ef369b4d88d79e7e08d84b24bb5c4f Mon Sep 17 00:00:00 2001 From: Yuwei An Date: Tue, 22 Sep 2026 14:08:11 -0700 Subject: [PATCH 2/5] refactor(gb300): keep Engram placement in benchmark recipe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move TP/concurrency-specific Engram selection out of the shared GB300 launcher and into the SGLang benchmark script. Preserve the nine benchmark points and keep only routing and digest import changes in the launcher. 将按 TP 和并发选择 Engram 放置方式的逻辑移至 SGLang benchmark 脚本,保留九个测试点,减少共享 GB300 启动器的修改,仅保留路由和 digest 导入支持。 Validation: Bash syntax, git diff --check, and 31 local command-construction/routing checks passed. No GPU execution. --- .../agentic/dsv41flash_fp4_gb300_sglang_mtp.sh | 16 +++++++++------- configs/nvidia-master.yaml | 4 ++-- docs/configuration-procedures.md | 2 +- docs/configuration-procedures_zh.md | 2 +- runners/launch_gb300-nv.sh | 14 -------------- 5 files changed, 13 insertions(+), 25 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh index 67f2cc160c..1a93cb372f 100755 --- a/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh @@ -4,26 +4,28 @@ set -eo pipefail # DeepSeek-V4.1-Flash on GB300, using the image's native DSpark. source "$(dirname "$0")/../../benchmark_lib.sh" check_env_vars MODEL TP EP_SIZE CONC KV_OFFLOADING TOTAL_CPU_DRAM_GB RESULT_DIR DURATION -check_env_vars EVAL_ONLY SPEC_DECODING IMAGE SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE +check_env_vars EVAL_ONLY SPEC_DECODING IMAGE require_agentic_kv_offload_none if [[ "$MODEL" != deepseek-ai/DeepSeek-V4.1-Flash || "$TP" != "$EP_SIZE" || "$SPEC_DECODING" != mtp ]]; then echo "This recipe requires DeepSeek-V4.1-Flash, EP_SIZE=TP, and SPEC_DECODING=mtp" >&2 exit 1 fi +# Engram weight placement changes with load; KV stays on GPU throughout. case "$TP:$CONC" in - 4:1|4:2|4:4|4:8|4:32|4:64|4:80|2:16|2:32) ;; + 4:1|4:2|4:4|4:8) + export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=0 + ;; + 4:32|4:64|4:80|2:16|2:32) + export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=1 + export SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT=per_rank + ;; *) echo "Unsupported GB300 SGLang point: TP=$TP CONC=$CONC" >&2; exit 1 ;; esac case "$EVAL_ONLY" in true|false) ;; *) echo "EVAL_ONLY must be true or false" >&2; exit 1 ;; esac -case "$SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE" in - 0) ;; - 1) check_env_vars SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT ;; - *) echo "SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE must be 0 or 1" >&2; exit 1 ;; -esac export GPU_COUNT="$TP" export PYTHONNOUSERSITE=1 export PYTHONUNBUFFERED=1 diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 217d60893e..deabfd217a 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -8225,9 +8225,9 @@ dsv41flash-fp4-gb300-sglang-agentic-dspark: agentic-coding: - dram-utilization: 0.80 search-space: - # Launcher keeps Engram on GPU for these points. + # Benchmark script keeps Engram on GPU for these points. - { tp: 4, ep: 4, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8] } - # Launcher offloads Engram weights, not KV, for these points. + # Benchmark script offloads Engram weights, not KV, for these points. - { tp: 4, ep: 4, kv-offloading: none, spec-decoding: mtp, conc-list: [32, 64, 80] } - { tp: 2, ep: 2, kv-offloading: none, spec-decoding: mtp, conc-list: [16, 32] } diff --git a/docs/configuration-procedures.md b/docs/configuration-procedures.md index 390767ed52..1f20e7e86f 100644 --- a/docs/configuration-procedures.md +++ b/docs/configuration-procedures.md @@ -478,7 +478,7 @@ The GB300 SGLang script supports nine selected AgentX points: TP4/EP4 at C1/C2/C4/C8 with GPU-resident Engram, TP4/EP4 at C32/C64/C80 with per-rank host Engram, and TP2/EP2 at C16/C32 with per-rank host Engram. KV stays on GPU in every case; `kv-offloading: none` does not describe Engram weight placement. -The launcher selects placement from TP and concurrency and records the effective +The benchmark script selects placement from TP and concurrency and records the effective SGLang environment in the server log. Verify actual huge-page backing for each host-offload rank; requesting per-rank layout does not guarantee huge pages. diff --git a/docs/configuration-procedures_zh.md b/docs/configuration-procedures_zh.md index 887a6a81da..166b729fe4 100644 --- a/docs/configuration-procedures_zh.md +++ b/docs/configuration-procedures_zh.md @@ -414,7 +414,7 @@ offload),prefill 分块上限设为 4096,即 vLLM H100 配方在 80 GB 显 GB300 SGLang 脚本支持九个选定 AgentX 点:TP4/EP4 的 C1/C2/C4/C8 使用 GPU 常驻 Engram;TP4/EP4 的 C32/C64/C80 和 TP2/EP2 的 C16/C32 使用每 rank 主机 Engram。所有点的 KV 均保留在 GPU;`kv-offloading: none` 不表示 Engram -权重的放置方式。启动器根据 TP 和并发选择放置方式,并在服务器日志中记录生效的 +权重的放置方式。benchmark 脚本根据 TP 和并发选择放置方式,并在服务器日志中记录生效的 SGLang 环境变量。必须检查每个主机卸载 rank 的实际大页覆盖率;请求每 rank 布局 不保证获得大页。 diff --git a/runners/launch_gb300-nv.sh b/runners/launch_gb300-nv.sh index f48f3665c1..50bd9282aa 100644 --- a/runners/launch_gb300-nv.sh +++ b/runners/launch_gb300-nv.sh @@ -128,20 +128,6 @@ if [[ "$MODEL_PREFIX" == "dsv41flash" && ( "$FRAMEWORK" == "vllm" || "$FRAMEWORK export RESULT_DIR=/ix/results # Cold model loading and graph capture exceeded the one-hour frontend deadline. export VLLM_ENGINE_READY_TIMEOUT_S=7200 - if [[ "$FRAMEWORK" == "sglang" ]]; then - check_env_vars TP CONC - # Engram weight placement changes with load; KV stays on GPU throughout. - case "$TP:$CONC" in - 4:1|4:2|4:4|4:8) - export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=0 - ;; - 4:32|4:64|4:80|2:16|2:32) - export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=1 - export SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT=per_rank - ;; - *) echo "Unsupported SGLang GB300 point: TP=$TP CONC=$CONC" >&2; exit 1 ;; - esac - fi srun --account="$SLURM_ACCOUNT" --partition="$SLURM_PARTITION" \ --nodes=1 --ntasks=1 --gpus="${TP:?}" --cpus-per-task=144 --exclusive --mem=0 \ --time="${SALLOC_TIME_LIMIT}" --job-name="$RUNNER_NAME" \ From c265c558cd681fcdaaaf25066ff8029d4e471d4c Mon Sep 17 00:00:00 2001 From: Oasis-Git Date: Thu, 24 Sep 2026 13:56:56 -0700 Subject: [PATCH 3/5] perf(gb300): refresh SGLang image and tune TP4 AgentX prefill MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新 GB300 SGLang 镜像并调整 TP4 AgentX 预填充配置;保留 TP2 启动设置,等待全量性能与准确率验收。 --- .../dsv41flash_fp4_gb300_sglang_mtp.sh | 26 +++++++++++-------- configs/nvidia-master.yaml | 2 +- docs/configuration-procedures.md | 16 ++++++++++-- docs/configuration-procedures_zh.md | 15 +++++++++-- perf-changelog.yaml | 10 +++++++ 5 files changed, 53 insertions(+), 16 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh index 5dd3edb473..5eb80fa867 100644 --- a/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh @@ -45,17 +45,10 @@ export SGLANG_TIMEOUT_KEEP_ALIVE=900 export SGLANG_DEFAULT_THINKING=1 export SGLANG_DSV41_REASONING_EFFORT=high -# TP4 has room for the original Engram tables in HBM: the STP baseline used -# 73.3 GiB for weights before the ~47.2 GiB tables. Host shards still had 0% -# huge-page backing on some ranks after model-local cache advice, so avoid -# that lookup bottleneck on TP4. TP2 retains the anonymous host-table layout. -if (( TP >= 4 )); then - export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=0 - unset SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT -else - export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=1 - export SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT=per_rank -fi +# Retain TP2's anonymous host-table layout and use the same placement on TP4 +# to leave HBM for the larger prefill workspace and cached prefixes. +export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=1 +export SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT=per_rank # The bundled Markov embedding/head weights are natively BF16. Preserve the # nightly default that keeps W2 BF16 instead of converting it to FP32. @@ -134,6 +127,17 @@ if (( TP == 2 && CONC >= 64 )); then CHUNKED_PREFILL_SIZE=8192 fi +# Matched one-hour C64 runs favor 16K chunks without delaying prefills. +# Keep this TP4 candidate fixed across the sweep; TP2 retains its recipe above. +if (( TP == 4 )); then + CHUNKED_PREFILL_SIZE=16384 + SCHEDULING_ARGS=(--prefill-decode-interval 0) + CACHE_ARGS=(--swa-prefix-tails 4096) + MAX_RUNNING_REQUESTS=128 + CUDA_GRAPH_MAX_BS=128 + export SGLANG_RAGGED_VERIFY_MODE=static +fi + SGLANG_CMD=( python3 -m sglang.launch_server --model-path "$MODEL_PATH" --served-model-name "$MODEL" diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 7ee2ca0bee..6e934abeb2 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -9002,7 +9002,7 @@ dsv41flash-fp4-b300-sglang-agentic-dspark: # Official SGLang nightly; Engram weights in host DRAM, native DSpark draft. dsv41flash-fp4-gb300-sglang-agentic-dspark: - image: lmsysorg/sglang:nightly-dev-cu13-20260922-582389ce@sha256:0e1b14e302619a42ef5581b87db6804651d4f946301cf543d74a3a1eb1c33b40 + image: lmsysorg/sglang:dev-cu13-nightly-0924@sha256:d2c9929f8cc9889326203f6cbc46da48b69de42891b167592c9c76cc803d246e model: deepseek-ai/DeepSeek-V4.1-Flash model-prefix: dsv41flash runner: cluster:gb300-nv diff --git a/docs/configuration-procedures.md b/docs/configuration-procedures.md index 9f083eae9e..8ebd125ecc 100644 --- a/docs/configuration-procedures.md +++ b/docs/configuration-procedures.md @@ -408,6 +408,18 @@ Source: [upstream recipe](https://github.com/vllm-project/recipes/blob/main/mode ### DeepSeek-V4.1-Flash DSpark on SGLang +The GB300 candidate pins `lmsysorg/sglang:dev-cu13-nightly-0924` by digest, built from +`6a14b801417adeb844ff690e8ebe314c126eeb97` in [run 36045441324](https://github.com/sgl-project/sglang/actions/runs/36045441324). +TP2/EP2 launch settings are unchanged. TP4/EP4 uses 16,384-token prefill chunks, +prefill/decode interval 0, per-rank host Engram, 4,096 SWA prefix tails, static +ragged verification, and running-request/decode-graph caps of 128; mixed chunk +prefill remains disabled. Both retain static memory fraction 0.80, native context +and backend defaults, DSpark block size 5, and AL 3.51 for performance only. +Accuracy evaluations use real verification. Both topologies retain C1/2/4/8/16/32/64/128 +and 3,600-second profiles. Matched local C64 runs on the older `4cbf290f` image +support the TP4 choice; they do not qualify the new image or the other concurrency +points. Require a fresh full performance and accuracy sweep before accepting the curve. + The H100 SGLang candidate sweeps DSpark at concurrency 1/2/4/8/16/20. It retains 8 SWA prefix tails per concurrency at C1/C2 and 32 at C4 and above. A matched one-hour comparison rejected a blanket 128-tail floor: C2 throughput improved only 1.7% while interactivity fell 44.5%. Completed STP comparisons did not contribute a measured frontier point, so STP is excluded from the selected sweep. The recipe interleaves 16 decode steps between prefill chunks, preserving trace content and context limits. The same sweep also qualifies supported TP8/EP8/DP8 attention at C4/C8/C16/C20. DP uses a stock consistent-hash router with stable session keys, DP LM-head execution, and 64 SWA prefix tails per rank. Full C16 GSM8K passed on all 1,319 examples; its performance contribution remains under measurement. The native 1M context and the AgentX subagent/session semantics are preserved. @@ -418,8 +430,8 @@ The nightly candidate uses `nightly-dev-cu13-20260922-582389ce`, native MXFP4 Ma arms, one PR per SKU across h100, h200, b200, b300, gb200, gb300 and mi355x. They follow the [SGLang cookbook](https://lmsysorg.mintlify.app/cookbook/autoregressive/DeepSeek/DeepSeek-V4_1), which has no released SGLang version for this model yet. B200 pins the CUDA 13 nightly -`lmsysorg/sglang:nightly-dev-cu13-20260922-4cbf290f` by digest; the other NVIDIA arms use -`lmsysorg/sglang:dev-dsv41` and MI355X uses `lmsysorg/sglang:dev-dsv41-mi35x`. +`lmsysorg/sglang:nightly-dev-cu13-20260922-4cbf290f` by digest; other NVIDIA image pins +are recorded in `configs/nvidia-master.yaml`, and MI355X uses `lmsysorg/sglang:dev-dsv41-mi35x`. B200 uses shipped-default DSpark across TP4/EP4 C1–128 and TP2/EP2 C1–8. Engram stays in host DRAM with `SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT=per_rank`. diff --git a/docs/configuration-procedures_zh.md b/docs/configuration-procedures_zh.md index 83fd0bee97..20b9234f2b 100644 --- a/docs/configuration-procedures_zh.md +++ b/docs/configuration-procedures_zh.md @@ -354,6 +354,17 @@ Maximum concurrency for 1,048,576 tokens per request: 6.70x ### SGLang 上的 DeepSeek-V4.1-Flash DSpark +GB300 候选配方通过 digest 固定 `lmsysorg/sglang:dev-cu13-nightly-0924`,来自 +[run 36045441324](https://github.com/sgl-project/sglang/actions/runs/36045441324),源码提交为 +`6a14b801417adeb844ff690e8ebe314c126eeb97`。TP2/EP2 启动设置不变。TP4/EP4 使用 +16,384-token prefill chunk、prefill/decode interval 0、per-rank 主机 Engram、 +4,096 个 SWA 前缀尾部、static ragged verification,以及均为 128 的运行请求与 decode +graph 上限;不启用 mixed chunk prefill。两种拓扑均保留静态显存比例 0.80、原生上下文与 +默认后端、DSpark block size 5,且仅性能测试使用 AL 3.51;准确率评测使用真实验证。 +并发仍为 C1/2/4/8/16/32/64/128,性能采样为 3,600 秒。旧镜像 `4cbf290f` 上的同条件 +本地 C64 测试支持该 TP4 选择,但不能作为新镜像或其他并发点的验收结果;接受新曲线前 +必须重新完成全量性能与准确率测试。 + H100 SGLang 候选配方在并发 1/2/4/8/16/20 下测试 DSpark。C1/C2 按并发数的 8 倍保留 SWA 前缀尾部,C4 及以上按 32 倍保留。相同条件下的一小时对比否决了统一的 128 尾部下限:C2 吞吐量仅提高 1.7%,交互性能却下降 44.5%。已完成的 STP 对比没有贡献实测性能前沿点,因此所选 sweep 不包含 STP。配方在预填充分块之间插入 16 步解码,轨迹内容和上下文限制保持不变。 同一 sweep 还会在 C4/C8/C16/C20 下验证受支持的 TP8/EP8/DP8 attention。DP 使用原生一致性哈希路由器与稳定会话键、DP LM-head,以及每 rank 64 个 SWA 前缀尾部。C16 的完整 GSM8K 已通过全部 1,319 个样本;其性能贡献仍在测量中。原生 1M 上下文与 AgentX 子代理/会话语义保持不变。 @@ -365,8 +376,8 @@ nightly 候选配方使用 `nightly-dev-cu13-20260922-582389ce`、原生 MXFP4 M 与 mi355x 上的 SGLang 对应版本(每个 SKU 一个 PR),遵循 [SGLang cookbook](https://lmsysorg.mintlify.app/cookbook/autoregressive/DeepSeek/DeepSeek-V4_1)。 该模型尚无正式发布的 SGLang 版本。B200 通过 digest 固定 CUDA 13 nightly 镜像 -`lmsysorg/sglang:nightly-dev-cu13-20260922-4cbf290f`;其他 NVIDIA 配方使用 -`lmsysorg/sglang:dev-dsv41`,MI355X 使用 `lmsysorg/sglang:dev-dsv41-mi35x`。 +`lmsysorg/sglang:nightly-dev-cu13-20260922-4cbf290f`;其他 NVIDIA 镜像固定版本见 +`configs/nvidia-master.yaml`,MI355X 使用 `lmsysorg/sglang:dev-dsv41-mi35x`。 B200 在 TP4/EP4 C1–128 与 TP2/EP2 C1–8 全部使用上游默认 DSpark。 Engram 保留在主机 DRAM,设置 `SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT=per_rank`。 diff --git a/perf-changelog.yaml b/perf-changelog.yaml index b118f991fc..c53aa25803 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -8850,3 +8850,13 @@ - "在 ROCm 10.0 nightly nightly-rocm100-7f1a5398e9610d96c473931a26c0e12bbe0d0423(发布于 2026-09-24T05:45:09Z,摘要 sha256:5df261803a5b4e8c4d6bbe58a32c9cd597140b6fdfa7358c0ef0d0211c33ab32)上重新扫描 MI355X DeepSeek-V4.1-Flash vLLM AgentX 臂,替换 nightly-rocm100-3df4ae15。本次仅更换镜像:TP=4 与 TP=2 两行保持并发 1、2、4、8、16、32、64 与 128,其余 recipe 设置全部不变,包括按 TP 与并发决定的 Engram 放置、prefill 分块与序列上限阶梯、图捕获,以及吞吐用黄金接受长度 3.51、评测用真实分块验证的五 token DSpark。" - "此次固定主要是为了 vllm-project/vllm#57435:它在 DSv4.1 的 ROCm 路径上将 inverse RoPE 融合进 sparse decode 的 reduce。该 PR 于 2026-09-22 合并,晚于 2026-09-21 切出的 nightly-rocm100-3df4ae15,因此当前曲线上的任何数据点都不包含该改动。新镜像比旧镜像领先 176 个提交,已包含该改动。" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/3404 + +- config-keys: + - dsv41flash-fp4-gb300-sglang-agentic-dspark + scenario-type: + - agentic-coding + description: + - "Requalify GB300 DeepSeek-V4.1-Flash SGLang on dev-cu13-nightly-0924 from upstream build 36045441324, source 6a14b801417adeb844ff690e8ebe314c126eeb97, pinned to manifest sha256:d2c9929f8cc9889326203f6cbc46da48b69de42891b167592c9c76cc803d246e." + - "Keep TP2/EP2 launch settings unchanged. Use the locally tested TP4/EP4 scheduling and cache configuration: chunk 16384, prefill/decode interval 0, per-rank host Engram, 4096 SWA prefix tails, static ragged verification, and running-request/decode-graph caps of 128. Do not enable mixed chunk prefill." + - "Preserve both C1/2/4/8/16/32/64/128 grids, 3600-second profiles, static memory fraction 0.80, native context and shipped backend/precision defaults. Retain five-token DSpark with golden AL 3.51 for throughput and real verification for accuracy. Local C64 evidence uses an older image; require fresh full performance and accuracy qualification." + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX From 0587fea6cd5f746303bc20bf07839553ee4ecbe5 Mon Sep 17 00:00:00 2001 From: Oasis-Git Date: Thu, 24 Sep 2026 19:14:39 -0700 Subject: [PATCH 4/5] perf(gb300): use pure TP4 for low-concurrency AgentX points MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use EP1 for C1/C2 with the low-latency recipe, preserving TP2 and TP4 C4+ settings. Record measured C1 evidence and mark C2 as untested. Update English/Chinese guidance and append performance changelog entries. 中文:C1/C2 使用纯 TP4/EP1 低延迟配置,保留 TP2 与 TP4 C4+ 设置。记录 C1 实测依据并注明 C2 尚未验证,同步中英文说明并追加性能变更记录。 --- .../dsv41flash_fp4_gb300_sglang_mtp.sh | 22 ++++++++++++------- configs/nvidia-master.yaml | 5 +++-- docs/configuration-procedures.md | 12 ++++++++-- docs/configuration-procedures_zh.md | 9 +++++++- perf-changelog.yaml | 20 +++++++++++++++++ 5 files changed, 55 insertions(+), 13 deletions(-) diff --git a/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh b/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh index 5eb80fa867..849b974905 100644 --- a/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh +++ b/benchmarks/single_node/agentic/dsv41flash_fp4_gb300_sglang_mtp.sh @@ -45,10 +45,13 @@ export SGLANG_TIMEOUT_KEEP_ALIVE=900 export SGLANG_DEFAULT_THINKING=1 export SGLANG_DSV41_REASONING_EFFORT=high -# Retain TP2's anonymous host-table layout and use the same placement on TP4 -# to leave HBM for the larger prefill workspace and cached prefixes. +# C1/C2 TP4 keep Engram on GPU; only C1 has matched local measurements. +# Other points retain host tables for prefill workspace and cached prefixes. export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=1 export SGLANG_DSV41_ENGRAM_HOST_TABLE_LAYOUT=per_rank +if (( TP == 4 && CONC <= 2 )); then + export SGLANG_ENABLE_DSV41_ENGRAM_HOST_TABLE=0 +fi # The bundled Markov embedding/head weights are natively BF16. Preserve the # nightly default that keeps W2 BF16 instead of converting it to FP32. @@ -128,14 +131,17 @@ if (( TP == 2 && CONC >= 64 )); then fi # Matched one-hour C64 runs favor 16K chunks without delaying prefills. -# Keep this TP4 candidate fixed across the sweep; TP2 retains its recipe above. +# C1/C2 use 4K/interval16; C1 keeps automatic SWA tails and C2 reserves 128. +# TP2 retains its recipe above; the caller selects EP in the master config. if (( TP == 4 )); then - CHUNKED_PREFILL_SIZE=16384 - SCHEDULING_ARGS=(--prefill-decode-interval 0) - CACHE_ARGS=(--swa-prefix-tails 4096) - MAX_RUNNING_REQUESTS=128 - CUDA_GRAPH_MAX_BS=128 export SGLANG_RAGGED_VERIFY_MODE=static + if (( CONC > 2 )); then + CHUNKED_PREFILL_SIZE=16384 + SCHEDULING_ARGS=(--prefill-decode-interval 0) + CACHE_ARGS=(--swa-prefix-tails 4096) + MAX_RUNNING_REQUESTS=128 + CUDA_GRAPH_MAX_BS=128 + fi fi SGLANG_CMD=( diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index 6e934abeb2..ea3fccf1cf 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -9000,7 +9000,7 @@ dsv41flash-fp4-b300-sglang-agentic-dspark: - { tp: 4, ep: 4, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8, 16, 32, 64, 128] } - { tp: 2, ep: 2, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8, 16, 32, 64, 128] } -# Official SGLang nightly; Engram weights in host DRAM, native DSpark draft. +# Official SGLang nightly; TP4 C1/C2 use GPU Engram, other points use host DRAM. dsv41flash-fp4-gb300-sglang-agentic-dspark: image: lmsysorg/sglang:dev-cu13-nightly-0924@sha256:d2c9929f8cc9889326203f6cbc46da48b69de42891b167592c9c76cc803d246e model: deepseek-ai/DeepSeek-V4.1-Flash @@ -9014,4 +9014,5 @@ dsv41flash-fp4-gb300-sglang-agentic-dspark: - dram-utilization: 0.80 search-space: - { tp: 2, ep: 2, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8, 16, 32, 64, 128] } - - { tp: 4, ep: 4, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2, 4, 8, 16, 32, 64, 128] } + - { tp: 4, ep: 1, kv-offloading: none, spec-decoding: mtp, conc-list: [1, 2] } + - { tp: 4, ep: 4, kv-offloading: none, spec-decoding: mtp, conc-list: [4, 8, 16, 32, 64, 128] } diff --git a/docs/configuration-procedures.md b/docs/configuration-procedures.md index 8ebd125ecc..76b3f60727 100644 --- a/docs/configuration-procedures.md +++ b/docs/configuration-procedures.md @@ -410,12 +410,20 @@ Source: [upstream recipe](https://github.com/vllm-project/recipes/blob/main/mode The GB300 candidate pins `lmsysorg/sglang:dev-cu13-nightly-0924` by digest, built from `6a14b801417adeb844ff690e8ebe314c126eeb97` in [run 36045441324](https://github.com/sgl-project/sglang/actions/runs/36045441324). -TP2/EP2 launch settings are unchanged. TP4/EP4 uses 16,384-token prefill chunks, +TP2/EP2 launch settings are unchanged. TP4 C1 uses pure TP (EP1), GPU Engram, +4,096-token chunks, prefill/decode interval 16, request cap 2 and decode graph cap +64; automatic SWA sizing resolves to 8 tails on this image. A matched local +30-minute C1 pair measured median per-user output speeds of about 450 tok/s for +EP1 versus 433 tok/s for EP4, with essentially tied aggregate throughput and +slightly worse EP1 TTFT. This is limited evidence, not a full sweep qualification. +C2 is an untested pure-TP4/EP1 candidate using the same GPU Engram, 4K chunk and +interval 16, with request cap 4, graph cap 64 and 128 SWA prefix tails. +TP4/EP4 at C4 and above retains 16,384-token prefill chunks, prefill/decode interval 0, per-rank host Engram, 4,096 SWA prefix tails, static ragged verification, and running-request/decode-graph caps of 128; mixed chunk prefill remains disabled. Both retain static memory fraction 0.80, native context and backend defaults, DSpark block size 5, and AL 3.51 for performance only. -Accuracy evaluations use real verification. Both topologies retain C1/2/4/8/16/32/64/128 +Accuracy evaluations use real verification. Both TP sizes retain C1/2/4/8/16/32/64/128 and 3,600-second profiles. Matched local C64 runs on the older `4cbf290f` image support the TP4 choice; they do not qualify the new image or the other concurrency points. Require a fresh full performance and accuracy sweep before accepting the curve. diff --git a/docs/configuration-procedures_zh.md b/docs/configuration-procedures_zh.md index 20b9234f2b..871f1720f9 100644 --- a/docs/configuration-procedures_zh.md +++ b/docs/configuration-procedures_zh.md @@ -356,7 +356,14 @@ Maximum concurrency for 1,048,576 tokens per request: 6.70x GB300 候选配方通过 digest 固定 `lmsysorg/sglang:dev-cu13-nightly-0924`,来自 [run 36045441324](https://github.com/sgl-project/sglang/actions/runs/36045441324),源码提交为 -`6a14b801417adeb844ff690e8ebe314c126eeb97`。TP2/EP2 启动设置不变。TP4/EP4 使用 +`6a14b801417adeb844ff690e8ebe314c126eeb97`。TP2/EP2 启动设置不变。TP4 的 C1 点使用 +纯 TP(EP1)、GPU Engram、4,096-token chunk、prefill/decode interval 16、运行请求 +上限 2 和 decode graph 上限 64;该镜像的自动 SWA 配置解析为 8 个尾部。相同条件下的 +本地 30 分钟 C1 对比中,EP1 与 EP4 的每用户输出速度中位数分别约为 450 和 433 tok/s, +总吞吐量基本持平,EP1 的 TTFT 略差。这只是有限证据,不能替代全量 sweep 验收。 +C2 是尚未实测的纯 TP4/EP1 候选点,使用相同的 GPU Engram、4K chunk 和 interval 16, +请求上限为 4、graph 上限为 64,并保留 128 个 SWA 前缀尾部。 +TP4/EP4 在 C4 及以上保留 16,384-token prefill chunk、prefill/decode interval 0、per-rank 主机 Engram、 4,096 个 SWA 前缀尾部、static ragged verification,以及均为 128 的运行请求与 decode graph 上限;不启用 mixed chunk prefill。两种拓扑均保留静态显存比例 0.80、原生上下文与 diff --git a/perf-changelog.yaml b/perf-changelog.yaml index c53aa25803..a900789ece 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -8860,3 +8860,23 @@ - "Keep TP2/EP2 launch settings unchanged. Use the locally tested TP4/EP4 scheduling and cache configuration: chunk 16384, prefill/decode interval 0, per-rank host Engram, 4096 SWA prefix tails, static ragged verification, and running-request/decode-graph caps of 128. Do not enable mixed chunk prefill." - "Preserve both C1/2/4/8/16/32/64/128 grids, 3600-second profiles, static memory fraction 0.80, native context and shipped backend/precision defaults. Retain five-token DSpark with golden AL 3.51 for throughput and real verification for accuracy. Local C64 evidence uses an older image; require fresh full performance and accuracy qualification." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX + +- config-keys: + - dsv41flash-fp4-gb300-sglang-agentic-dspark + scenario-type: + - agentic-coding + description: + - "Use pure TP4/EP1 at C1 with the measured low-latency settings: GPU Engram, chunk 4096, prefill/decode interval 16, request cap 2, decode graph cap 64, and automatic SWA tails (8 on the pinned image). Keep TP2 and TP4 C2+ settings unchanged." + - "The matched local 30-minute C1 pair measured about 450 versus 433 output tok/s/user for EP1 versus EP4, with only 0.44% higher aggregate throughput and slightly worse TTFT. Full canonical performance and real-verification accuracy qualification remain required." + - "C1 使用纯 TP4/EP1 及实测低延迟设置:GPU Engram、chunk 4096、prefill/decode interval 16、请求上限 2、decode graph 上限 64,以及自动 SWA 尾部(固定镜像上为 8)。TP2 与 TP4 C2+ 设置不变。" + - "同条件本地 30 分钟 C1 对比中,EP1 与 EP4 的每用户输出速度约为 450 与 433 tok/s,总吞吐量仅提高 0.44%,TTFT 略差。仍需完整规范性能测试和真实验证准确率验收。" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX + +- config-keys: + - dsv41flash-fp4-gb300-sglang-agentic-dspark + scenario-type: + - agentic-coding + description: + - "Extend pure TP4/EP1 to C2 as an untested candidate: GPU Engram, chunk 4096, prefill/decode interval 16, request cap 4, decode graph cap 64 and 128 SWA prefix tails. Keep C1, TP4 C4+ and all TP2 settings unchanged; C1 measurements do not establish a C2 benefit." + - "将纯 TP4/EP1 扩展到尚未实测的 C2 候选点:GPU Engram、chunk 4096、prefill/decode interval 16、请求上限 4、decode graph 上限 64,以及 128 个 SWA 前缀尾部。C1、TP4 C4+ 和全部 TP2 设置不变;C1 测量不能证明 C2 获益。" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX From 2641baae70d1cbc28aa8dbc27069011d81ffd8e3 Mon Sep 17 00:00:00 2001 From: Oasis-Git Date: Thu, 24 Sep 2026 19:23:58 -0700 Subject: [PATCH 5/5] docs(gb300): shorten curve update notes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Consolidate this branch's changelog additions and shorten the English and Chinese configuration notes. Benchmark settings are unchanged. 中文:合并本分支的曲线更新记录,精简中英文配置说明,基准测试设置不变。 --- docs/configuration-procedures.md | 22 +++------------------- docs/configuration-procedures_zh.md | 20 +++----------------- perf-changelog.yaml | 25 ++----------------------- 3 files changed, 8 insertions(+), 59 deletions(-) diff --git a/docs/configuration-procedures.md b/docs/configuration-procedures.md index 76b3f60727..ab9db16fc2 100644 --- a/docs/configuration-procedures.md +++ b/docs/configuration-procedures.md @@ -408,25 +408,9 @@ Source: [upstream recipe](https://github.com/vllm-project/recipes/blob/main/mode ### DeepSeek-V4.1-Flash DSpark on SGLang -The GB300 candidate pins `lmsysorg/sglang:dev-cu13-nightly-0924` by digest, built from -`6a14b801417adeb844ff690e8ebe314c126eeb97` in [run 36045441324](https://github.com/sgl-project/sglang/actions/runs/36045441324). -TP2/EP2 launch settings are unchanged. TP4 C1 uses pure TP (EP1), GPU Engram, -4,096-token chunks, prefill/decode interval 16, request cap 2 and decode graph cap -64; automatic SWA sizing resolves to 8 tails on this image. A matched local -30-minute C1 pair measured median per-user output speeds of about 450 tok/s for -EP1 versus 433 tok/s for EP4, with essentially tied aggregate throughput and -slightly worse EP1 TTFT. This is limited evidence, not a full sweep qualification. -C2 is an untested pure-TP4/EP1 candidate using the same GPU Engram, 4K chunk and -interval 16, with request cap 4, graph cap 64 and 128 SWA prefix tails. -TP4/EP4 at C4 and above retains 16,384-token prefill chunks, -prefill/decode interval 0, per-rank host Engram, 4,096 SWA prefix tails, static -ragged verification, and running-request/decode-graph caps of 128; mixed chunk -prefill remains disabled. Both retain static memory fraction 0.80, native context -and backend defaults, DSpark block size 5, and AL 3.51 for performance only. -Accuracy evaluations use real verification. Both TP sizes retain C1/2/4/8/16/32/64/128 -and 3,600-second profiles. Matched local C64 runs on the older `4cbf290f` image -support the TP4 choice; they do not qualify the new image or the other concurrency -points. Require a fresh full performance and accuracy sweep before accepting the curve. +The GB300 DeepSeek-V4.1-Flash SGLang curve uses `dev-cu13-nightly-0924`: +TP4/EP1 at C1/C2 with GPU Engram and 4K prefill chunks, and TP4/EP4 at C4+ +with host Engram and 16K chunks. TP2 is unchanged. Full sweep validation is pending. The H100 SGLang candidate sweeps DSpark at concurrency 1/2/4/8/16/20. It retains 8 SWA prefix tails per concurrency at C1/C2 and 32 at C4 and above. A matched one-hour comparison rejected a blanket 128-tail floor: C2 throughput improved only 1.7% while interactivity fell 44.5%. Completed STP comparisons did not contribute a measured frontier point, so STP is excluded from the selected sweep. The recipe interleaves 16 decode steps between prefill chunks, preserving trace content and context limits. diff --git a/docs/configuration-procedures_zh.md b/docs/configuration-procedures_zh.md index 871f1720f9..c7cdc20be7 100644 --- a/docs/configuration-procedures_zh.md +++ b/docs/configuration-procedures_zh.md @@ -354,23 +354,9 @@ Maximum concurrency for 1,048,576 tokens per request: 6.70x ### SGLang 上的 DeepSeek-V4.1-Flash DSpark -GB300 候选配方通过 digest 固定 `lmsysorg/sglang:dev-cu13-nightly-0924`,来自 -[run 36045441324](https://github.com/sgl-project/sglang/actions/runs/36045441324),源码提交为 -`6a14b801417adeb844ff690e8ebe314c126eeb97`。TP2/EP2 启动设置不变。TP4 的 C1 点使用 -纯 TP(EP1)、GPU Engram、4,096-token chunk、prefill/decode interval 16、运行请求 -上限 2 和 decode graph 上限 64;该镜像的自动 SWA 配置解析为 8 个尾部。相同条件下的 -本地 30 分钟 C1 对比中,EP1 与 EP4 的每用户输出速度中位数分别约为 450 和 433 tok/s, -总吞吐量基本持平,EP1 的 TTFT 略差。这只是有限证据,不能替代全量 sweep 验收。 -C2 是尚未实测的纯 TP4/EP1 候选点,使用相同的 GPU Engram、4K chunk 和 interval 16, -请求上限为 4、graph 上限为 64,并保留 128 个 SWA 前缀尾部。 -TP4/EP4 在 C4 及以上保留 -16,384-token prefill chunk、prefill/decode interval 0、per-rank 主机 Engram、 -4,096 个 SWA 前缀尾部、static ragged verification,以及均为 128 的运行请求与 decode -graph 上限;不启用 mixed chunk prefill。两种拓扑均保留静态显存比例 0.80、原生上下文与 -默认后端、DSpark block size 5,且仅性能测试使用 AL 3.51;准确率评测使用真实验证。 -并发仍为 C1/2/4/8/16/32/64/128,性能采样为 3,600 秒。旧镜像 `4cbf290f` 上的同条件 -本地 C64 测试支持该 TP4 选择,但不能作为新镜像或其他并发点的验收结果;接受新曲线前 -必须重新完成全量性能与准确率测试。 +GB300 DeepSeek-V4.1-Flash SGLang 曲线使用 `dev-cu13-nightly-0924`: +C1/C2 使用 TP4/EP1、GPU Engram 和 4K prefill chunk;C4+ 使用 TP4/EP4、 +主机 Engram 和 16K chunk。TP2 不变,仍待全量 sweep 验证。 H100 SGLang 候选配方在并发 1/2/4/8/16/20 下测试 DSpark。C1/C2 按并发数的 8 倍保留 SWA 前缀尾部,C4 及以上按 32 倍保留。相同条件下的一小时对比否决了统一的 128 尾部下限:C2 吞吐量仅提高 1.7%,交互性能却下降 44.5%。已完成的 STP 对比没有贡献实测性能前沿点,因此所选 sweep 不包含 STP。配方在预填充分块之间插入 16 步解码,轨迹内容和上下文限制保持不变。 diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 009fc35434..afc97dc796 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -8893,27 +8893,6 @@ scenario-type: - agentic-coding description: - - "Requalify GB300 DeepSeek-V4.1-Flash SGLang on dev-cu13-nightly-0924 from upstream build 36045441324, source 6a14b801417adeb844ff690e8ebe314c126eeb97, pinned to manifest sha256:d2c9929f8cc9889326203f6cbc46da48b69de42891b167592c9c76cc803d246e." - - "Keep TP2/EP2 launch settings unchanged. Use the locally tested TP4/EP4 scheduling and cache configuration: chunk 16384, prefill/decode interval 0, per-rank host Engram, 4096 SWA prefix tails, static ragged verification, and running-request/decode-graph caps of 128. Do not enable mixed chunk prefill." - - "Preserve both C1/2/4/8/16/32/64/128 grids, 3600-second profiles, static memory fraction 0.80, native context and shipped backend/precision defaults. Retain five-token DSpark with golden AL 3.51 for throughput and real verification for accuracy. Local C64 evidence uses an older image; require fresh full performance and accuracy qualification." - pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX - -- config-keys: - - dsv41flash-fp4-gb300-sglang-agentic-dspark - scenario-type: - - agentic-coding - description: - - "Use pure TP4/EP1 at C1 with the measured low-latency settings: GPU Engram, chunk 4096, prefill/decode interval 16, request cap 2, decode graph cap 64, and automatic SWA tails (8 on the pinned image). Keep TP2 and TP4 C2+ settings unchanged." - - "The matched local 30-minute C1 pair measured about 450 versus 433 output tok/s/user for EP1 versus EP4, with only 0.44% higher aggregate throughput and slightly worse TTFT. Full canonical performance and real-verification accuracy qualification remain required." - - "C1 使用纯 TP4/EP1 及实测低延迟设置:GPU Engram、chunk 4096、prefill/decode interval 16、请求上限 2、decode graph 上限 64,以及自动 SWA 尾部(固定镜像上为 8)。TP2 与 TP4 C2+ 设置不变。" - - "同条件本地 30 分钟 C1 对比中,EP1 与 EP4 的每用户输出速度约为 450 与 433 tok/s,总吞吐量仅提高 0.44%,TTFT 略差。仍需完整规范性能测试和真实验证准确率验收。" - pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX - -- config-keys: - - dsv41flash-fp4-gb300-sglang-agentic-dspark - scenario-type: - - agentic-coding - description: - - "Extend pure TP4/EP1 to C2 as an untested candidate: GPU Engram, chunk 4096, prefill/decode interval 16, request cap 4, decode graph cap 64 and 128 SWA prefix tails. Keep C1, TP4 C4+ and all TP2 settings unchanged; C1 measurements do not establish a C2 benefit." - - "将纯 TP4/EP1 扩展到尚未实测的 C2 候选点:GPU Engram、chunk 4096、prefill/decode interval 16、请求上限 4、decode graph 上限 64,以及 128 个 SWA 前缀尾部。C1、TP4 C4+ 和全部 TP2 设置不变;C1 测量不能证明 C2 获益。" + - "Update the GB300 DeepSeek-V4.1-Flash SGLang curve to dev-cu13-nightly-0924: pure TP4 at C1/C2 and tuned TP4/EP4 at C4+; keep TP2 unchanged." + - "更新 GB300 DeepSeek-V4.1-Flash SGLang 曲线至 dev-cu13-nightly-0924:C1/C2 使用纯 TP4,C4+ 使用调优后的 TP4/EP4;TP2 不变。" pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX