Kaynağa Gözat

dsv41-flash-1017-4x-sglang: 1017 perf A/B — ep-size 2 (+9% decode), context 1M; document the engram MAX_IDS <-> chunked-prefill coupling

Benchmarks on 4nodes-switch (dgx1-4, image dsv41-sglang-1017:v1):
  baseline ep4/2048/512K      87/100  pp 3019 tg 44.9 (c1) 52.6 (c2)
  fp4-indexer                  —      pp 2942 tg 45.1  but c2/8K -15..20% -> dropped
  ep2/2048/1M (this commit)   87/100  pp 2358 tg 45.6 (c1) 67.8 (c2), resp 71->75, turn 1.7->1.4s
Probe medians (5 cold 2K passes): ep2 38.8-43.0 tok/s vs ep4 37.5-37.8.
chunked-prefill 8192 is blocked by SPARK_ENGRAM_MAX_IDS (max_prefill_tokens x 12
hash columns = 190,608 ids > 65,536) — the engine dies mid-request, so the env
now documents the coupling. Full analysis: specs/tech-architecture/dsv41-1017-tuning.md.
Alexander Korolev 4 gün önce
ebeveyn
işleme
fe0d38641b
1 değiştirilmiş dosya ile 11 ekleme ve 2 silme
  1. 11 2
      recipes/dsv41-flash-1017-4x-sglang/recipe.toml

+ 11 - 2
recipes/dsv41-flash-1017-4x-sglang/recipe.toml

@@ -45,7 +45,12 @@ args = [
     "--load-format", "safetensors",
     # Aiden's measured shape (production-1.6, carried into 1.7.1); --tp 4 /
     # --nnodes 4 / --node-rank / --dist-init-addr are appended by the launcher
-    "--ep-size", "4",
+    # A/B 2026-10-18 (specs/tech-architecture/dsv41-1017-tuning.md): EP2 (the
+    # knapcio TP4/EP2 shape) decodes ~+9% over EP4 (probe medians 39-43 vs
+    # 37.6 tok/s c1) with the same quality score (87/100) and 13.5 GB GPU
+    # headroom — adopted. --enable-deepseek-v4-fp4-indexer measured neutral
+    # (decode) / negative (c2, 8K): not used.
+    "--ep-size", "2",
     "--attention-backend", "dsv4",
     "--moe-runner-backend", "flashinfer_mxfp4",
     # required for the MXFP8 route (selects the block-scaled path the hook wraps;
@@ -53,7 +58,7 @@ args = [
     "--fp8-gemm-backend", "flashinfer_cutlass",
     "--mem-fraction-static", "0.80",
     "--chunked-prefill-size", "2048",
-    "--context-length", "524288",
+    "--context-length", "1048576",
     "--max-running-requests", "16",
     "--cuda-graph-max-bs-decode", "16",
     "--random-seed", "0",
@@ -118,6 +123,10 @@ SPARK_LATE_TAIL_SKIP = "1"
 SPARK_LATE_TAIL_SKIP_ALL = "1"
 SPARK_SM120_REAL_HEADS = "1"
 SPARK_ENGRAM_THREADS = "64"
+# MUST track --chunked-prefill-size: the per-chunk engram lookup is
+# max_prefill_tokens x hash columns (~2 x chunk x 12). 2048 chunk -> 49,152 ids
+# (fits the 65536 default); 8192 chunk -> 196,608 ids and the engine dies with
+# "a lookup of 190608 ids exceeds SPARK_ENGRAM_MAX_IDS" (measured 2026-10-18).
 SPARK_ENGRAM_MAX_IDS = "65536"
 SPARK_MXFP8_BACKEND = "b12x"
 SPARK_ROCE_AR = "1"