瀏覽代碼

dsv41-flash-1017-4x-flare-gb10-prod4: prod half (dgx1-4) of the fresh gb10 FLARE package

Alexander Korolev 1 天之前
父節點
當前提交
d9b0b3b62d
共有 1 個文件被更改,包括 60 次插入 和 0 次删除
  1. 60 0
      recipes/dsv41-flash-1017-4x-flare-gb10-prod4/recipe.toml

+ 60 - 0
recipes/dsv41-flash-1017-4x-flare-gb10-prod4/recipe.toml

@@ -0,0 +1,60 @@
+# DeepSeek-V4.1-Flash-1017 через FLARE — их собственный пакет под четыре Spark.
+#
+# Ветка `gb10` репозитория local-inference-lab/DeepSeek-V4.1-Flash-1017-FLARE —
+# подписанный FLARE-пакет ровно под наш стенд: ~525.5 GB, TP4, 32 одновременных
+# запроса, DSpark до 5 драфтов с adaptive verification, prefill чанками 4096,
+# контекст до 1M на запрос (README ветки gb10, обновлён 2026-10-27).
+#
+# Запуск: `sm121 serve --recipe dsv41-flash-1017-4x-flare-gb10-prod4 --cluster 4nodes-switch` (прод-половина dgx1-4; отдельный рецепт/ledger — сам лейн dgx58 держит свой открытый run)
+# Лаунчер сам: preflight агентов на всех нодах, `flare download` на контроллере
+# (идемпотентно, ~525 GB один раз), `flare orbit run --detach`, затем ждёт
+# /health + /v1/models. `sm121 stop` → `flare orbit stop`, `sm121 logs` →
+# `flare orbit attach`.
+#
+# Креды (ключ издателя, publisher) — в приватном config: [flare] accept_key /
+# accept_publisher / orbit_cluster. В репозиторий рецептов они не попадают.
+
+engine = "flare"
+deploy = "native"
+name = "DeepSeek-V4.1-Flash-1017 (FLARE gb10, 4x TP4, c32, DSpark5)"
+model = "deepseek-ai/DeepSeek-V4.1-Flash-1017"
+parent_model = "deepseek-ai/DeepSeek-V4.1-Flash"
+required_nodes = 4
+cluster = "4nodes-switch"
+
+# адрес модели для клиентов — общий кластерный алиас (FLARE отдаёт его же
+# через --name, но лаунчеру/бенчу нужен явный id в args)
+args = ["--served-model-name", "deepseek-v4.1-flash"]
+
+[flare]
+package = "local-inference-lab/DeepSeek-V4.1-Flash-1017-FLARE"
+revision = "gb10"
+name = "dsv41-flash-1017-4x-flare-gb10-prod4"
+http_port = 30000
+# их же рекомендованный набор (README ветки gb10), verbatim
+serve_flags = [
+    "--served-model-name", "deepseek-v4.1-flash",
+    "--max-concurrency", "32",
+    "--mtp-draft-tokens", "5",
+    "--mtp-adaptive-verification",
+    # Engram = 2 таблицы (слои 1, 14) × 4 шарда: 196.6 GB весов + 6.1 GB
+    # скейлов на пакет ⇒ ~50.7 GB на ранг. Файлами engram не выделить — он
+    # лежит в тех же восьми шардах, что и веса, — поэтому «локальность» делаем
+    # RAM-кэшем строк: 1 GiB горячих строк на ранг (рекомендация README для
+    # unified-memory GB10), промахи идут на диск (пакет на локальном NVMe
+    # контроллера, у пиров — свои срезы в кэше).
+    # (Проба 48 GiB кэша выедала бюджет continuation rows —
+    # «selected concurrency and verification width exceed available memory».)
+    #
+    # --embedding-table-resident-scales НЕ включён: держит E8M0-плоскость
+    # скейлов engram в pinned host RAM (~6.1 GB на пакет ⇒ ~1.5 GB на ранг),
+    # чтобы промахи не читали скейлы с диска вторым заходом. Смысл только при
+    # disk (с ram падает: «RAM storage already retains all planes»).
+    # Кандидат на A/B: +1.5 GB RAM за меньшее число random-read.
+    "--embedding-table-storage", "disk",
+    "--embedding-table-cache-size", "1GiB",
+    # включено 2026-10-24 и подтверждено README: скейлы engram (~1.4 GB/ранг)
+    # резидентно в host RAM, чтобы промахи кэша читали только веса. Пакет
+    # заявляет 13–17 GB available на Spark; следим за continuation rows при c32.
+    "--embedding-table-resident-scales",
+]