|
|
@@ -1,12 +1,11 @@
|
|
|
# DeepSeek-V4-Flash-DSpark — 2× GB10 / DGX Spark, TP=2 over RoCE.
|
|
|
# DSpark speculative decoding on the official DeepSeek-V4-Flash-0731 release
|
|
|
-# via the local :fixed overlay on aidendle94's production-3.8 image (see
|
|
|
+# via the local :fixed overlay on aidendle94's production-3.75 image (see
|
|
|
# docker-images/deepseek-v4-flash-dspark).
|
|
|
#
|
|
|
# Image: sparkrun-vllm-ds4-gb10:fixed
|
|
|
-# production-3.8 clean-overlay base (vLLM 0.21.1, b12x MoE, NCCL 2.30.4,
|
|
|
-# flashinfer 0.6.12, opt-in DSPARK tiny-A8 decode kernel) + patched
|
|
|
-# deepseek_v4 tokenizer (thinking_mode kwarg, anti-injection, strict JSON).
|
|
|
+# production-3.75 base (DSpark, b12x MoE, patched NCCL 2.30.4, multi-node
|
|
|
+# fixes) + instanttensor for faster model loading.
|
|
|
# Model: deepseek-ai/DeepSeek-V4-Flash-0731 — official release.
|
|
|
# 0731 (and the -DSpark preview) both have dspark_block_size = 5. This image's
|
|
|
# speculator hard-rejects num_speculative_tokens > block_size
|
|
|
@@ -39,18 +38,14 @@ args = [
|
|
|
"--kv-cache-dtype", "fp8",
|
|
|
"--block-size", "256",
|
|
|
"--load-format", "auto",
|
|
|
- "--max-model-len", "393216",
|
|
|
+ "--max-model-len", "524288",
|
|
|
"--max-num-seqs", "16",
|
|
|
"--max-num-batched-tokens", "16536",
|
|
|
"--max-cudagraph-capture-size", "16",
|
|
|
- "--gpu-memory-utilization", "0.9",
|
|
|
+ "--gpu-memory-utilization", "0.84",
|
|
|
"--served-model-name", "deepseek-v4-flash", "default",
|
|
|
- # Attention: vLLM 0.21 (production-3.8) renamed/removed the SM120 sparse-MLA
|
|
|
- # backend names (FLASHINFER_MLA_SPARSE_DSV4 no longer exists). On GB10 the
|
|
|
- # platform auto-selects SPARSE_MLA_SM120 for MLA; the b12x unified sparse-MLA
|
|
|
- # backend (same fp8_ds_mla envelope) is selected explicitly via
|
|
|
- # VLLM_ATTENTION_BACKEND=B12X_MLA_SPARSE (env below) to pair with the b12x
|
|
|
- # MoE + tiny-decode path.
|
|
|
+ # Engine backends
|
|
|
+ "--attention-backend", "FLASHINFER_MLA_SPARSE_DSV4",
|
|
|
"--moe-backend", "b12x",
|
|
|
# Chunked prefill + prefix caching
|
|
|
"--enable-chunked-prefill",
|
|
|
@@ -62,18 +57,22 @@ args = [
|
|
|
# Async scheduling
|
|
|
"--async-scheduling",
|
|
|
"--no-scheduler-reserve-full-isl",
|
|
|
+ # DSpark speculative decoding — k=5 is DeepSeek-V4-Flash's native
|
|
|
+ # dspark_block_size (0731 == preview). Do NOT raise to k=7 (0731 model-card
|
|
|
+ # rec): this image hard-rejects k > block_size at boot. draft_sample_method
|
|
|
+ # is accepted by the speculative-config parser (no-op on the DSpark path).
|
|
|
"--speculative-config", """
|
|
|
-'{"method":"dspark","num_speculative_tokens":7,"draft_sample_method":"greedy"}'""",
|
|
|
+'{"method":"dspark","num_speculative_tokens":5,"draft_sample_method":"greedy"}'""",
|
|
|
# Tokenizer / reasoning
|
|
|
"--tokenizer-mode", "deepseek_v4",
|
|
|
"--tool-call-parser", "deepseek_v4",
|
|
|
"--reasoning-parser", "deepseek_v4",
|
|
|
"--enable-auto-tool-choice",
|
|
|
"--generation-config", "vllm",
|
|
|
- # vLLM 0.21 (production-3.8) accepts default_chat_template_kwargs as a
|
|
|
- # single JSON arg (json.loads), not the per-key dotted form used on 3.75.
|
|
|
- "--default-chat-template-kwargs", """
|
|
|
-'{"thinking":true,"reasoning_effort":"high","temperature":1,"top_p":0.95}'""",
|
|
|
+ "--default-chat-template-kwargs.thinking=true",
|
|
|
+ "--default-chat-template-kwargs.reasoning_effort=high",
|
|
|
+ "--default-chat-template-kwargs.temperature=1",
|
|
|
+ "--default-chat-template-kwargs.top_p=1",
|
|
|
# Disable custom all-reduce (not needed on GB10 single-NIC)
|
|
|
"--disable-custom-all-reduce",
|
|
|
"--trust-remote-code",
|
|
|
@@ -106,21 +105,13 @@ VLLM_USE_FLASHINFER_SAMPLER = "1"
|
|
|
VLLM_USE_AOT_COMPILE = "1"
|
|
|
VLLM_USE_MEGA_AOT_ARTIFACT = "0"
|
|
|
VLLM_USE_BREAKABLE_CUDAGRAPH = "0"
|
|
|
+VLLM_MEMORY_PROFILE_INCLUDE_ATTN = "1"
|
|
|
+VLLM_PREFIX_CACHE_RETENTION_INTERVAL = "4096"
|
|
|
+B12X_MLA_SM120_UNIFIED = "1"
|
|
|
+B12X_DENSE_SPLITK_TURBO = "1"
|
|
|
+B12X_W4A16_TC_DECODE = "1"
|
|
|
B12X_MHC_MAX_TOKENS = "16384"
|
|
|
|
|
|
-# vLLM 0.21 (production-3.8): b12x unified sparse-MLA attention for DSV4 on
|
|
|
-# GB10 (selects B12xMLASparseBackend; supports fp8_ds_mla KV). No longer
|
|
|
-# reachable via --attention-backend (FLASHINFER_MLA_SPARSE_DSV4 removed).
|
|
|
-VLLM_ATTENTION_BACKEND = "B12X_MLA_SPARSE"
|
|
|
-
|
|
|
-# DSPARK tiny-A8 decode kernel (production-3.8 /opt/tinydec): routes small-M
|
|
|
-# MoE decode (M<=VLLM_B12X_TINY_MAX_M) through the custom w4a8mx Triton
|
|
|
-# kernel; stock b12x path otherwise. sitecustomize hook reads these at start.
|
|
|
-# Fail-open: any kernel error falls back to stock b12x automatically.
|
|
|
-VLLM_B12X_TINY_DECODE = "1"
|
|
|
-VLLM_B12X_TINY_MAX_M = "8"
|
|
|
-VLLM_B12X_TINY_CHUNK = "8"
|
|
|
-
|
|
|
# GPU memory management
|
|
|
CUTE_DSL_ARCH = "sm_121a"
|
|
|
PYTORCH_CUDA_ALLOC_CONF = "expandable_segments:True"
|