# DeepSeek-V4-Flash-Vision-Exp on 2× GB10 — AIDEN'S IMAGE (production-3.72-vision). # # aiden's vision guide translated to our 2-node ds4 launcher, RUN THROUGH HIS # OWN env-script entrypoint (/usr/local/bin/deepseek-v4-flash-2x-spark- # entrypoint → /tmp copy of /opt/vllm-src/serve-ds4-flash-spark.sh). The script # generates the full vllm serve command from the env below; do NOT add args — # the mod drops our launcher tail ($@) so his env stays the single source. # # Image: aidendle94/sparkrun-vllm-ds4-gb10:production-3.72-vision. Their TWO # vllm wheels: dist-packages (plain, no vision) and /opt/vllm-src/.venv # (multimodal-wrapped DeepseekV4 + DSpark/DCP fixes) — only his script picks # the right one. Production profile at TP4/DCP2: 66-71 tok/s @ acceptance # 3.5-3.8; this 2x run is his "DSpark, DCP1" profile (73.8-75.2 @ TP4). # # Required envs his script demands: NODE_RANK (mod derives from VLLM_HOST_IP # vs rank-0's IB IP), MASTER_ADDR (mod; ds4 = 192.168.200.17), VLLM_HOST_IP + # NCCL_IB_HCA/GID/SOCKET/GLOO/UCX/TP (launcher [nccl.ds4] + auto-GID). # # Boot markers: "DSpark draft model loaded: 97 params" → "Model loading took # ~82 GiB" → "GPU KV cache size" ≈ 600K (12 GiB pin at this GMU) → "Application # startup complete". Smoke: 47*83 → 3901 (thinking off) + image_url color ask. # # Known quirk: first image request ~6 s cold, ~1-2 s warm (partition kernel). engine = "vllm" name = "DeepSeek V4 Flash Vision-Exp (aiden image + env-script, 2x Spark, DSpark-6)" docker_image = "aidendle94/sparkrun-vllm-ds4-gb10:production-3.72-vision" model = "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp" required_nodes = 2 tensor_parallel_size = 2 pipeline_parallel_size = 1 distributed_backend = "mp" shm_size = "32gb" # his script copies /opt/vllm-src/serve-ds4-flash-spark.sh to /tmp and execs # it; the mod block below seds the "$@" tail off the SOURCE before that copy # (our launcher's appended model/args would otherwise duplicate his generated # ones), and derives NODE_RANK/MASTER_ADDR. entrypoint = ["/usr/local/bin/deepseek-v4-flash-2x-spark-entrypoint"] # (no args: the env-script builds everything; the launcher tail is dropped by # the mod below — if the sed ever fails, vllm errors on duplicate positional # and the boot aborts loudly instead of misconfiguring.) [mods] commands = [ # rank-0 IB ip on ds4 (config.toml [cluster.ds4] rank 0 = dgx3 192.168.200.17) "export MASTER_ADDR=\"192.168.200.17\"", "if [ \"${VLLM_HOST_IP:-}\" = \"192.168.200.17\" ]; then export NODE_RANK=0; else export NODE_RANK=1; fi", "export MASTER_PORT=\"29511\"", "export PORT=\"30000\"", "export NODE_RANK=\"${NODE_RANK:-0}\"", # drop the forwarded "$@" his launcher appends to its generated vllm call # (our tail would duplicate his model positional); fail loudly if absent "sed -i '$s/ \\\"\\$@\\\"$//' /opt/vllm-src/serve-ds4-flash-spark.sh || exit 1", "grep -q 'vllm.entrypoints.cli.main serve' /opt/vllm-src/serve-ds4-flash-spark.sh", ] [env] # his script's inputs (same names verbatim; all other B12X_*/AOT/JIT knobs # the script exports itself) SPARK_HF_HOME = "/opt/local-hf" HF_HUB_OFFLINE = "1" TRANSFORMERS_OFFLINE = "1" NNODES = "2" TP_SIZE = "2" DCP_SIZE = "1" MODEL_ID = "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp" DSPARK_MODEL_ID = "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp" DSPARK_MODEL_REVISION = "e46e16bf6035c6f317eb2ac7458eb0362926d402" SERVED_MODEL_NAME = "deepseek-v4-vision" GPU_MEMORY_UTILIZATION = "0.80" KV_CACHE_MEMORY_BYTES = "12884901888" MAX_MODEL_LEN = "393216" MAX_NUM_SEQS = "8" MAX_NUM_BATCHED_TOKENS = "8192" MAX_CUDAGRAPH_CAPTURE_SIZE = "56" ENABLE_PREFIX_CACHING = "1" VLLM_ENABLE_DSPARK = "1" VLLM_ENABLE_MTP = "0" NUM_SPECULATIVE_TOKENS = "6" DSPARK_DRAFT_SAMPLE_METHOD = "greedy" DSPARK_SPS_CURVE = "auto" VLLM_CUDAGRAPH_MODE = "FULL_AND_PIECEWISE" VISION_MHC = "1" # KDA/CKV gather is a DCP-side lane; DCP1 needs none of the VLLM_DSV4_CKV_* # Weights from per-node NVMe copies (fast path). extra_mounts stay AFTER args. [[extra_mounts]] host = "~/dsv4vision-hf" container = "/opt/local-hf" env = "HF_HOME"