| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- # 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"
- 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 the SHARED NAS HF cache (all 4 nodes mount nas.lan:/sna as
- # /mnt/nas; dgx4 got a /mnt/nas -> /mnt symlink). The Vision-Exp snapshot AND
- # the DSpark draft repo live there — the local NVMe copy lacked the draft
- # (LocalEntryNotFound). One shared source of truth beats a per-node copy.
- [[extra_mounts]]
- host = "/mnt/nas/ai/huggingface"
- container = "/opt/local-hf"
- env = "HF_HOME"
|