Explorar el Código

dsv41-flare: prod lane on orbit prod4b + patched FLARE runtime (Engram stall)

The 3/3 'transport is poisoned' failures on long first-touch prefill were
an Engram disk stall on dgx4 (KingSpec XG7000-2TB): ~24K random reads/s
against a ~29K IOPS ceiling starved the GPU in 10-20s bursts until a peer
hit the ~20s collective spin limit.

- prod4 NOTE: current configuration (orbit prod4b, rank 0 = dgx1, dgx4 =
  rank 3, 'main + PR #184' runtime via --executable), the metrics that
  identify the stall, the A/B numbers, and the firmware verdict (KingSpec
  ships no tool; our GT0d9d63 is not in the public database).
- prod4 recipe header: point at the new arrangement and the spec.
- sparks NOTE: same package/failure class, triage order (disk wait before
  cabling).
Alexander Korolev hace 2 días
padre
commit
b27bf07f81

+ 32 - 0
recipes/dsv41-flash-1017-4x-flare-gb10-prod4/NOTE.md

@@ -4,12 +4,44 @@
 (прод dgx1–4) — это два разных лейна с разными ledger'ами, поэтому рецепт
 отдельный. Пакет, образ и флаги идентичны `dsv41-flash-1017-4x-flare-gb10`.
 
+## Состояние на 2026-11-03: орбита `prod4b` + патченный runtime (рабочая конфигурация)
+
+Лейн переведён на орбитальный кластер **`prod4b`** (`dgx1 → dgx2 → dgx3 → dgx4`,
+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`, автор
+  Josh Cartu) — ветка `pr184-on-main` на dgx5, релиз aarch64. На ранги
+  заливается через `orbit run --executable /home/kilork/flare-patched/flare`
+  (поле `executable` в `[flare.clusters."4nodes-switch"]` приватного config
+  launcher'а); агентская установка `/usr/bin/flare` не трогается, откат —
+  убрать строку. Файл должен лежать на **контроллере** (dgx4).
+- **Почему:** 2026-11-03 прод-лейн три раза умер на длинном prefill с
+  `RoCE collective on rank 2 timed out waiting for rank 0, HCA 0 … the
+  transport is poisoned`. Метрики ранга 0 показали stop-and-go prefill:
+  GPU стоял пачками по 10–20 с, `engram_disk_wait` прыгал на +10 с за 2 с
+  (≈24K рандомных чтений/с при потолке диска ~29K IOPS) — пир выходил за
+  ~20-секундный spin-limit коллектива и травил транспорт. Диск dgx4 —
+  **KingSpec XG7000-2TB 2242** (единственная нода флота с другой моделью).
+  Прошивки для него нет (KingSpec не выпускает ни утилиту, ни образы; наш
+  `GT0d9d63` отсутствует в публичной базе).
+- **Результат A/B** (тот же 157K first-touch префикс, те же флаги):
+  без патча 3/3 прогонов — wedge + poison (93K/61K/70K токенов, т.е. 1–66 с
+  до смерти); с патчем — чистый prefill 0→157,086 за ~60 с (~2,600 t/s),
+  `engram_disk_wait` 48.7 с суммарно — как у здорового dgx5 (48.4 с).
+  Контроль: `prod5` (dgx1+dgx2+dgx3+dgx8, без dgx4) без патча тоже чистый —
+  подтверждает, что виноват диск dgx4, а не роль rank 0 и не фабрика.
+- Полный разбор, цифры и текст для upstream: `specs/tech-architecture/flare-roce-poison.md`
+  в launcher-репо.
+
 ## Состояние на 2026-11-02 (NAS мёртв — работает без сетевого диска)
 
 - Пакет: свежий `gb10` из `local-inference-lab/DeepSeek-V4.1-Flash-1017-FLARE`
   (`format 2`, blob store), 488 GB, version `gb10-tp4-202611021809`.
 - **rank 0 = dgx4** (2 TB): единственная нода, где влезают и CLI-store 488 GB,
   и agent-cache 488 GB. Ранги: dgx4, dgx1, dgx2, dgx3.
+  (С 2026-11-03 rank 0 = dgx1, см. выше; диск dgx4 под нагрузкой не тянет.)
 - Орбит пере-спарен 2026-11-02 без dgx5 (тот был выключен): контроллер —
   `gx10-dgx4`, `[cluster.prod4]` в `~/.config/flare/orbit.toml` на dgx4.
   Авторизация dgx5 на dgx1–4 сброшена: когда вернётся NAS и понадобится

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

@@ -5,7 +5,16 @@
 # запроса, 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)
+# Запуск: `sm121 serve --recipe dsv41-flash-1017-4x-flare-gb10-prod4 --cluster 4nodes-switch`
+# (прод-ноды dgx1–4; отдельный рецепт/ledger — сам лейн dgx5–8 держит свой открытый run)
+#
+# С 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).
+# Разбор и доказательства: `specs/tech-architecture/flare-roce-poison.md` в
+# launcher-репо, заметки ниже.
 # Лаунчер сам: preflight агентов на всех нодах, `flare download` на контроллере
 # (идемпотентно, ~525 GB один раз), `flare orbit run --detach`, затем ждёт
 # /health + /v1/models. `sm121 stop` → `flare orbit stop`, `sm121 logs` →

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

@@ -10,6 +10,17 @@ adaptive verification, prefill чанками 4096, **1,048,576** токенов
 файл + 17 шардов ≈ 511.3 GB (12 весовых + 5 графовых/вспомогательных), каждый
 < 64 GB. `gb202` — отдельный пакет под четыре дискретные GPU на одной машине.
 
+> **2026-11-03 — тот же пакет, тот же класс отказа.** Лейн `prod4` трижды
+> умер на длинном first-touch prefill с `RoCE collective … timed out … the
+> transport is poisoned`: пир ждал строки Engram, диск одной ноды не успевал
+> (≈24K чтений/с при потолке ≈29K IOPS), GPU стоял пачками 10–20 с и выходил
+> за ~20-секундный spin-limit коллектива. Лечится патченным runtime (`main` +
+> PR #184, io_uring-полосы Engram-диска), который для прод-лейна включён через
+> `orbit run --executable`. Если этот стенд (dgx5–8) снова начнёт падать на
+> таких же сообщениях — сначала смотреть `flare_engram_disk_wait_nanoseconds_total`
+> на ранге 0 и IOPS его диска, а не кабель. Разбор:
+> `specs/tech-architecture/flare-roce-poison.md` в launcher-репо.
+
 ## Что делает лаунчер
 
 1. **preflight** на всех нодах кластера: `flare --version`,