Răsfoiți Sursa

dsv41-flare: prod-no4 lane (no dgx4) is production; prod4b is post-swap

New recipe dsv41-flash-1017-4x-flare-gb10-nodgx4: dgx1+dgx2+dgx3+dgx8 on
orbit prod5, controller dgx4 (outside the launch cluster), patched runtime
via --executable. Clean on the 157K prompts that killed the dgx1-4 lane
3/3; prod4 NOTE gains the 2026-11-04 cold-boot wedge (seq 93, prefill=1:
~350 MB of first-chunk Engram rows cannot cross the spin window on the
KingSpec drive even with the PR-184 reader) and points production at the
no-dgx4 lane until the NVMe is replaced.
Alexander Korolev 2 zile în urmă
părinte
comite
0da28a0f2f

+ 63 - 0
recipes/dsv41-flash-1017-4x-flare-gb10-nodgx4/NOTE.md

@@ -0,0 +1,63 @@
+# FLARE gb10 — прод-лейн без dgx4 (dgx1 + dgx2 + dgx3 + dgx8)
+
+ТЕКУЩИЙ продакшен-лейн DeepSeek-V4.1-Flash-1017 (с 2026-11-04). Тот же
+подписанный пакет `gb10` (`local-inference-lab/DeepSeek-V4.1-Flash-1017-FLARE`,
+format 2, 488 GB, version `gb10-tp4-202611021809`), те же флаги и ранг-срезы,
+что у `dsv41-flash-1017-4x-flare-gb10-prod4`, но **dgx4 исключён** — его место
+занимает dgx8.
+
+## Почему без dgx4
+
+Диск dgx4 — **KingSpec XG7000-2TB 2242** (единственная нода флота не с
+ESL01TBTLCZ). На длинных first-touch префоллах он не успевает отдавать строки
+Engram: GPU стоял пачками 10–20 с, пир ловил
+`RoCE collective on rank 2 timed out waiting for rank 0, HCA 0 … the
+transport is poisoned` — 3/3 прогонов 2026-11-03 на 157K-префиксе. Патченный
+runtime (main + PR #184) спас тёплый стенд, но холодный старт после ребута
+клинит на первом же чанке (2026-11-04: seq 93, prefill=1 — ~350 MB строк
+первого чанка не приходят в ~8-секундное спин-окно). Прошивки у KingSpec нет.
+
+Убирание dgx4 снимает проблему целиком: два полных 157K-прогрона чисто
+(157,086 токенов за ~61 с, ~2,600 t/s), плюс реплика на пост-ребутном стенде.
+
+## Топология и запуск
+
+- Наш кластер `prod-no4` (config launcher'а) → орбитальный `prod5`
+  (`[cluster.prod5]` в `~/.config/flare/orbit.toml` на dgx4):
+  dgx1 = rank 0 (HTTP API, :30000), dgx2, dgx3, dgx8 = rank 3.
+- Контроллер — dgx4 (2 ТБ: CLI-store 488 GB + патченный бинарь
+  `~/flare-patched/flare`); ранги получают runtime через
+  `orbit run --executable`.
+- Ранги: dgx1 держит полный пакет в agent-cache (477 GB), dgx2/dgx3 — срезы
+  rank 1/2, dgx8 — срез rank 3 (перенесён из лейна dgx5–8). Старт ~30 с
+  (верификация кэшей, без перекачивания).
+- Патченный FLARE (main + PR #184, io_uring-полосы Engram-ридера) включён
+  через `executable` в `[flare.clusters."prod-no4"]` приватного config;
+  агентская установка не трогается.
+- Хуки `[before_serve."prod-no4"]`: гасятся легаси-порты CX7 (та же причина,
+  что у 4nodes-switch — несимметричная матрица линков).
+
+```bash
+sm121 serve --recipe dsv41-flash-1017-4x-flare-gb10-nodgx4 --cluster prod-no4
+sm121 logs --recipe dsv41-flash-1017-4x-flare-gb10-nodgx4   # orbit attach
+sm121 stop --recipe dsv41-flash-1017-4x-flare-gb10-nodgx4
+```
+
+## Замечание про первый длинный префолл после ребута
+
+Лейн чист, но память о поведении диска dgx4 полезна для ЛЮБОЙ ноды этого
+стенда: первый длинный префолл после холодного ребута нагружает диск
+максимально (кэши пустые). Если появятся новые `transport is poisoned` —
+сначала смотреть `flare_engram_disk_wait_nanoseconds_total` ранга 0 и IOPS
+диска поздней ноды, а не кабель. Разбор и все цифры:
+`specs/tech-architecture/flare-roce-poison.md` в launcher-репо.
+
+## Возврат dgx4 в прод (после замены диска)
+
+1. Заменить диск (Samsung PM9A3/PM9E1 M.2 2242 или Corsair MP700 Micro —
+   enterprise/8-канальный класс с DRAM; НЕ KingSpec-класс). Перед
+   переустановкой DGX OS — сохранить `~/.config/flare/orbit/controller.key`
+   (восстановление = без пере-спаривания всех восьми агентов).
+2. Перегнать A/B из `specs/tech-architecture/flare-roce-poison.md`
+   (157K-префикс на лейне с dgx4) — только после этого вернуть
+   `4nodes-switch`/`prod4b` как прод.

+ 70 - 0
recipes/dsv41-flash-1017-4x-flare-gb10-nodgx4/recipe.toml

@@ -0,0 +1,70 @@
+# 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-nodgx4 --cluster prod-no4`
+# (ТЕКУЩИЙ прод-лейн с 2026-11-04: dgx1+dgx2+dgx3+dgx8, БЕЗ dgx4 — его
+# KingSpec XG7000-2TB не тянет Engram-чтение, см. ниже; отдельный
+# рецепт/ledger от лейнов prod4/prod4b и dgx5–8)
+#
+# Лейн без dgx4 чист на тех же 157K-префиксах, на которых лейн dgx1–4 умирал
+# 3/3 с «transport is poisoned». Патченный runtime (main + PR #184,
+# io_uring-полосы Engram-диска) здесь не обязателен, но включён — на
+# холодных стартах он всё равно снижает риск; задаётся в приватном config
+# launcher'а (executable), НЕ в рецепте.
+#
+# Лаунчер сам: 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 = "prod-no4"
+
+# адрес модели для клиентов — общий кластерный алиас (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-nodgx4"
+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",
+]

+ 13 - 3
recipes/dsv41-flash-1017-4x-flare-gb10-prod4/NOTE.md

@@ -4,11 +4,21 @@
 (прод dgx1–4) — это два разных лейна с разными ledger'ами, поэтому рецепт
 отдельный. Пакет, образ и флаги идентичны `dsv41-flash-1017-4x-flare-gb10`.
 
-## Состояние на 2026-11-03: орбита `prod4b` + патченный runtime (рабочая конфигурация)
+## Состояние на 2026-11-04: прод-лейн переведён на `prod-no4`
+
+**Даже с патчем** холодный старт клинит: 2026-11-04 после ребута ноды первый
+длинный префолл умер на `seq 93`, prefill=1 — ~350 MB строк первого чанка не
+успевают прийти по диску dgx4 в ~8-секундное спин-окно (патч поднимает
+пропускную способность, но диск в этом режиме встаёт посреди пачки).
+Прод-лейн теперь **`dsv41-flash-1017-4x-flare-gb10-nodgx4`** на кластере
+`prod-no4` (dgx1+dgx2+dgx3+dgx8, орбит `prod5`) — чист на тех же префиксах.
+Эта конфигурация (`prod4b` + патч) — для ПОСЛЕ замены диска dgx4.
+
+## Состояние на 2026-11-03: орбита `prod4b` + патченный runtime
 
 Лейн переведён на орбитальный кластер **`prod4b`** (`dgx1 → dgx2 → dgx3 → dgx4`,
-rank 0 = dgx1) и на **патченный FLARE** — это и есть текущая рабочая
-конфигурация. `prod4` (rank 0 = dgx4) остаётся в `orbit.toml` только для отката.
+rank 0 = dgx1) и на **патченный FLARE**. `prod4` (rank 0 = dgx4) остаётся в
+`orbit.toml` только для отката.
 
 - **Патч:** `NVIDIA/spark-local-inference` `main` + cherry-pick PR #184
   (`Run parallel Engram disk workers on Linux with io_uring lanes`, автор

+ 10 - 6
recipes/dsv41-flash-1017-4x-flare-gb10-prod4/recipe.toml

@@ -6,13 +6,17 @@
 # контекст до 1M на запрос (README ветки gb10, обновлён 2026-10-27).
 #
 # Запуск: `sm121 serve --recipe dsv41-flash-1017-4x-flare-gb10-prod4 --cluster 4nodes-switch`
-# (прод-ноды dgx1–4; отдельный рецепт/ledger — сам лейн dgx5–8 держит свой открытый run)
+# (прод-ноды dgx1–4). ⚠️ НЕ ТЕКУЩИЙ ПРОДАКШЕН: даже с патчем холодный старт
+# клинит на первом чанке (см. NOTE) — текущий лейн =
+# `dsv41-flash-1017-4x-flare-gb10-nodgx4` (`prod-no4`). Эта конфигурация —
+# для ПОСЛЕ замены диска dgx4.
 #
-# С 2026-11-03 лейн идёт через орбитальный кластер `prod4b` (rank 0 = dgx1,
-# dgx4 = rank 3) и **патченный FLARE runtime** (`--executable`, задаётся в
-# приватном config launcher'а, НЕ в рецепте): main + PR #184, io_uring-полосы
-# Engram-диска. Без патча dgx4 (KingSpec XG7000-2TB) не успевал отдавать строки
-# Engram и лейн умирал на 157K-префиксе с «transport is poisoned» (3/3).
+# Лейн идёт через орбитальный кластер `prod4b` (rank 0 = dgx1, dgx4 = rank 3)
+# и **патченный FLARE runtime** (`--executable`, задаётся в приватном config
+# launcher'а, НЕ в рецепте): main + PR #184, io_uring-полосы Engram-диска.
+# Без патча dgx4 (KingSpec XG7000-2TB) не успевал отдавать строки Engram
+# и лейн умирал на 157K-префиксе с «transport is poisoned» (3/3 на тёплом
+# стенде; холодный старт клинит даже с патчем).
 # Разбор и доказательства: `specs/tech-architecture/flare-roce-poison.md` в
 # launcher-репо, заметки ниже.
 # Лаунчер сам: preflight агентов на всех нодах, `flare download` на контроллере