Преглед на файлове

recipes: solar-open2-nvfp4

Alexander Korolev преди 1 седмица
родител
ревизия
bedea1c6c4
променени са 1 файла, в които са добавени 86 реда и са изтрити 0 реда
  1. 86 0
      recipes/solar-open2-nvfp4/recipe.toml

+ 86 - 0
recipes/solar-open2-nvfp4/recipe.toml

@@ -0,0 +1,86 @@
+# Solar Open2 250B — Nota NVFP4 (compressed-tensors, W4A4)
+# 2× DGX Spark (GB10, aarch64/sm_121a), TP=2 over RoCE.
+#
+# Model: nota-ai/Solar-Open2-250B-Nota-NVFP4
+#   → https://huggingface.co/nota-ai/Solar-Open2-250B-Nota-NVFP4
+#   145B params (MoE), 153.3 GB NVFP4 weights (vs 500.6 GB BF16).
+#   NVFP4 is auto-detected from config (compressed-tensors) — no --quantization.
+#
+# Image: solar-open2-nvfp4:probe (built locally from the UpstageAI vLLM fork
+#   v0.22.0-solar-open2 — carries the solar_open2 reasoning/tool parsers and
+#   the SolarOpen2TemplateLogitsProcessor). cu130 / aarch64 / sm_121a, same
+#   pinned base stack as glm52-nf3-hybrid (no b12x suite — stock vLLM serve).
+#
+# Memory: GB10 ≈ 121 GB usable (128 GB advertised − 4 GB OS). TP=2 →
+#   ~77 GB weights/node, ~40 GB/node for KV cache + activations.
+#
+# PREREQUISITES:
+#   - Weights cached on every node:
+#       huggingface-cli download nota-ai/Solar-Open2-250B-Nota-NVFP4
+#     (153 GB, NVFP4 compressed-tensors shards)
+#   - Image built (sm121 serve builds it automatically on the build node):
+#       cd docker-images/solar-open2-nvfp4 && bash build.sh
+
+engine = "vllm"
+name = "Solar Open2 250B Nota NVFP4 (vLLM)"
+docker_image = "solar-open2-nvfp4:probe"
+model = "nota-ai/Solar-Open2-250B-Nota-NVFP4"
+parent_model = "upstage/Solar-Open2-250B"
+required_nodes = 2
+tensor_parallel_size = 2
+pipeline_parallel_size = 1
+distributed_backend = "mp"
+shm_size = "32gb"
+docker_image_dir = "solar-open2-nvfp4"
+
+entrypoint = ["vllm", "serve"]
+
+args = [
+    # KV cache & memory
+    "--kv-cache-dtype", "fp8",
+    "--load-format", "auto",
+    # Context length (128K; model supports up to 131584)
+    "--max-model-len", "131072",
+    # Batch & memory
+    "--max-num-seqs", "8",
+    "--max-num-batched-tokens", "4096",
+    "--max-cudagraph-capture-size", "16",
+    "--gpu-memory-utilization", "0.88",
+    # Scheduling
+    "--async-scheduling",
+    "--enable-chunked-prefill",
+    "--enable-prefix-caching",
+    # Solar Open2 parsers + logits processor (ships in the UpstageAI fork)
+    "--reasoning-parser", "solar_open2",
+    "--tool-call-parser", "solar_open2",
+    "--enable-auto-tool-choice",
+    "--logits-processors", "vllm.v1.sample.logits_processor.solar_open2:SolarOpen2TemplateLogitsProcessor",
+    "--default-chat-template-kwargs", """
+'{"think_render_option":"preserved"}'""",
+    # General
+    "--trust-remote-code",
+    "--served-model-name", "solar",
+]
+
+[env]
+# ── Architecture (aarch64/sm_121a DGX Spark) ──────────────────────────────
+TORCH_CUDA_ARCH_LIST = "12.1a"
+CUTE_DSL_ARCH = "sm_121a"
+FLASHINFER_CUDA_ARCH_LIST = "12.1a"
+
+# ── Offline mode (weights must be cached on each node) ────────────────────
+HF_HOME = "/root/.cache/huggingface"
+HF_HUB_OFFLINE = "1"
+TRANSFORMERS_OFFLINE = "1"
+
+# ── Timeout safety net (cold boot: cudagraph + JIT) ───────────────────────
+VLLM_EXECUTE_MODEL_TIMEOUT_SECONDS = "3600"
+
+# ── NCCL / RoCE (cluster config ib_hca/socket_ifname used for most) ──────
+NCCL_CROSS_NIC = "1"
+NCCL_CUMEM_ENABLE = "0"
+NCCL_IGNORE_CPU_AFFINITY = "1"
+NCCL_DEBUG = "WARN"
+
+# ── Compute ────────────────────────────────────────────────────────────────
+OMP_NUM_THREADS = "4"