Prechádzať zdrojové kódy

night-shift plan 2026-10-16: DGPP w2 finish, Ling-3.1-flash + Step-5-Preview tests, forum/repo mining, end-of-shift 8x power-off

Alexander Korolev 1 týždeň pred
rodič
commit
7e0fefcbb2
1 zmenil súbory, kde vykonal 177 pridanie a 0 odobranie
  1. 177 0
      history/night-shifts/2026-10-16-night-plan.md

+ 177 - 0
history/night-shifts/2026-10-16-night-plan.md

@@ -0,0 +1,177 @@
+# Ночная смена 2026-10-15 → 16 — план (автономный режим)
+
+**Режим:** полная автономия, супервизор спит. Оператор авторизовал power off в
+конце смены. Язык отчётов — русский/английский. Все действия через `sm121`
+(никакого ручного docker/scp — см. AGENTS «All builds must go through sm121»).
+
+## Текущее состояние (снимок на начало смены)
+
+| Кластер | Состояние |
+|---|---|
+| `dgx58-switch` (dgx5–8) | ✅ online, **MiMo 4x serves** (`sm121_mimo26-flash-mopd-4x-sparkring_0..3`, sparkring, Up 2h). API `http://192.168.88.43:30000` |
+| `2nodes-dac` (dgx1,2) | ✅ online, **свободен** — идёт provisioning DGPP w2 (см. Task 1) |
+| `8nodes-switch` (dgx1–8) | 7 online (dgx4 off), cluster «offline» (блокирующий entity off) |
+| dgx3 | online, простой (с Nemotron-прогона, ничего не крутится) |
+| dgx4 | **выключен** |
+
+On-узлы сейчас: **dgx1, dgx2, dgx3, dgx5, dgx6, dgx7, dgx8** (dgx4 off).
+
+## Guardrails (без супервизора)
+
+- Перед любым `stop`/`power off` — сначала `health`, убедиться, что не роняем
+  живой трафик. В конце смены обесточивание авторизовано — но сначала чисто
+  остановить сервы.
+- Никогда не трогать чужие контейнеры; только sm121-меченые.
+- Первый/необкатанный запуск — detached `--keep --no-wait` (serve-boot-triage),
+  чтобы логи упавшего ранга выжили.
+- Тяжёлые HF-перемещения — node-to-node по 200G fabric, не через Mac.
+- Harness `tool-eval-bench` v2.8.0 (97 сценариев), bench с **pluto.lan**
+  (`--ssh-host pluto.lan`), из scratch-cwd, `--json-file` рядом с лейном.
+- Ночью не резать базовые образы kindling (v0.31.0) — это отдельная задача с
+  bench-гейтом, не ночная.
+
+---
+
+## Task 1 — Довести DGPP w2 (в процессе, end-to-end тест provisioning)
+
+Билд DGPP (`git clone 3ad63d6b… → scripts/release.sh → dgpp-cluster install`)
+идёт в tmux на dgx1/dgx2 (CMake ~78%, ~4 мин на момент снимка; CUDA-часть
+долгая, cap 90 мин). serve pid в `/tmp/dgpp-w2-serve.log`.
+
+**Дальше:**
+1. Дождаться конца билда на обеих нодах → serve сам зальёт cluster-JSON+`.env`
+   и запустит `dgpp-cluster up` на rank 0 (dgx2).
+2. Readiness: `curl http://192.168.88.14:30000`? — НЕТ, DGPP API на `:18080`:
+   `curl http://192.168.88.14:18080/v1/models` (head = dgx2, mgmt .14).
+3. Если `dgpp-cluster install` требует `--config` или путь `dist/*.tar.zst`
+   не совпал — чинить `src/native/provision.rs::build_script` по живому логу
+   (pane: `tmux capture-pane -p -t sm121-dgpp-glm53-flash-nvfp4-fp8-dgpp-2x`).
+4. **Известный баг (Task 1b):** `tmux ... '<script> 2>&1 | tee log'` — пайп
+   `2>&1 | tee` привязывается только к последнему `&&`-команду (финальный
+   `echo DONE`), поэтому tee-лог пуст во время билда (успех всё равно
+   детектируется по DONE-маркеру). **Fix:** писать build-скрипт в файл на ноде
+   (heredoc через `write_remote`) и гонять `bash <file> 2>&1 | tee <log>`.
+   Обновить тесты `provision.rs`, `make check`, коммит.
+5. Если w2 взлетел — прогнать quality-bench (`sm121 bench --recipe
+   glm53-flash-nvfp4-fp8-dgpp-2x --cluster 2nodes-dac --label dgpp-w2
+   --ssh-host pluto.lan`), отчёт в `recipes/glm53-flash-nvfp4-fp8-dgpp-2x/reports/`.
+   Это первый DGPP-lane datapoint (сверить с glm53-flash 2x vLLM 93–95/100).
+
+**Стоп w2:** `sm121 stop --recipe glm53-flash-nvfp4-fp8-dgpp-2x --cluster 2nodes-dac`
+(→ `dgpp-cluster down` на rank 0).
+
+---
+
+## Task 2 — Ling-3.1-flash (inclusionAI)
+
+Две дороги, обе через sm121-рецепт:
+
+**2a. NVFP4-lossless8 (предпочтительно, дёшево):** `cbfight/Ling-3.1-flash-NVFP4-lossless8`
+(day-0 cut) — класс размера GLM-5.3-Flash (~200 GB) → **4x-лейн** (dgx58-switch
+после остановки MiMo, либо dgx1/2/3 + ещё одна). Не требует 8 Sparks.
+- Движок: vLLM. Проверить поддержку архитектуры Ling (Mixtral-подобный MoE?) в
+  v0.31.0; если нет — нужен более свежий base (v0.32.0rc? nightly) → тогда это
+  упирается в Task «bleeding-edge base», см. риск.
+- Рецепт: скопировать скелет с `glm53-flash-*` (docker_image kindling или
+  свежий base), model = cbfight-репо, required_nodes=4, TP=4, порт 30000.
+- `validate` + dry-run, потом detached serve, bench.
+
+**2b. Block-FP8 оригинал (572B, ~689 GB):** TP8+EP8 = **все 8 Sparks**. Нужен
+весь 8x включённым + nightly vLLM (block-FP8 MoE + Mamba-2?). Тяжело и рискованно
+ночью; делать только если 2a прошла и есть время/ёмкость.
+
+**Риск:** Ling может требовать vLLM свежее v0.31.0 (архитектура/эксперты). Если
+dry-run/serve падает на загрузке весов/архитектуре — это сигнал, что нужен
+отдельный base-образ (не трогаем kindling). Зафиксировать в findings, не резать
+базу ночью.
+
+---
+
+## Task 3 — Step-5-Preview-NVFP4 (stepfun-ai)
+
+- Модель: `stepfun-ai/Step-5-Preview-NVFP4`, 604B, NVFP4, ~473 GB.
+- **Dedicated-образ:** `vllm/vllm-openai:step-5-preview` (не наш base). Рецепт
+  с `docker_image = "vllm/vllm-openai:step-5-preview"`, без `docker_image_dir`
+  (prebuilt external, как sparkring/gr8).
+- Размер ~473 GB → **8 Sparks** (TP8) или 6x. Нужен включённый 8x.
+- ⚠️ **Не верифицировано на DGX Spark/GB10** (sm_121a). Ожидать проблем:
+  kernels/arch, unified-memory gate (vLLM #48140 MemFree), GMU. Это разведка:
+  цель — понять, встаёт ли вообще на GB10, а не бенч-кампания.
+- Рецепт + dry-run + detached serve (`--keep --no-wait`) + health. Если встал —
+  короткий smoke + опц. perf. Если нет — findings (что именно отвалилось).
+- HF-кэш: 473 GB — скачать на самый ёмкий узел (dgx4 выключен; dgx5 после
+  чистки 307G free — может не хватить; проверить `df`), потом node-to-node pull.
+
+---
+
+## Task 4 — Форумы (NVIDIA Developer Forums, Discourse)
+
+Читать через skill `nvidia-forum-reading` (JSON API по постам — web_extract
+отказывается, слишком большие треды). Что искать: новые image tags, vLLM
+commits, YAML-рецепты, флаги, известные фиксы, отчёты по GB10/Spark.
+
+| Thread | Тема | Что выуживать |
+|---|---|---|
+| 381350 | GLM-5.3-Flash (большой) | новые кванты/рецепты, GMU/KV фиксы, MTP |
+| 383406 | DGPP | конфиг-профили, w-шейпы, известные баги install/release |
+| 385731 | Qwen3.8-Flash-Next (MiaAI) | recipe, флаги, Spark-заметки |
+| 384789 | TensorFold | статус CUDA PR 804 (python-ветка заморожена) |
+| 385042 | full GLM-5.3 EXL3 TP4 | EXL3 на Spark, TP4-рецепты |
+| 381032 | switchless | ring-топология без свитча (для gr8/2nodes-dac) |
+| 385776 | CRS812 | (резолвн) — проверить апдейты |
+| 385803 | dsgx10 | новые наблюдения |
+
+Финдинги → `specs/tech-architecture/upstream-watch-2026-10-16.md` (новый файл).
+
+## Task 5 — Репозитории (GitHub + Docker/ghcr)
+
+**GitHub (проверить коммиты/теги/issues с прошлой смены):**
+- `vllm-project/vllm` — v0.32.0 stable вышел? (rc2 = 7960eeb9de29). Если stable —
+  НЕ ре-пинить ночью, только зафиксировать (отдельная задача с bench-гейтом).
+- `sgl-project/sglang` — релизы/фиксы.
+- `kindlingai/gr8` — активен ежедневно (S2 scheduler); новые профили/шейпы.
+- `HawkBearPig/dgpp` — новый HEAD после 3ad63d6b? (наш пин) — changelog, фиксы install.
+- `SeraphimSerapis/tool-eval-bench` — новая версия после v2.8.0? (не апгрейдить
+  ночью — harness pin, пере-базировать якоря).
+- Модельные репо: `inclusionAI/Ling-3.1-flash`, `cbfight/Ling-3.1-flash-NVFP4-lossless8`,
+  `stepfun-ai/Step-5-Preview-NVFP4`, `local-inference-lab/*`, `unsloth/*`.
+
+**Docker/ghcr (новые образы/теги):**
+- `vllm/vllm-openai` — тег `step-5-preview` (для Task 3), v0.32.0.
+- `ghcr.io/kindlingai/gr8` — свежий тег.
+- `ghcr.io/fujitsupolycom/sparkring` — новее `dev-20261013-…-sircl-tp6`?
+- Наш `ghcr.io/kilork/sm121-addon` — не трогаем (CI-зона).
+
+Финдинги → тот же `upstream-watch-2026-10-16.md`.
+
+---
+
+## Task 6 — Конец смены: обесточить 8x
+
+Порядок (чисто, перед power off):
+1. `sm121 stop --recipe mimo26-flash-mopd-4x-sparkring --cluster dgx58-switch`
+   (остановит dgx5–8, закроет ledger).
+2. `sm121 stop --recipe glm53-flash-nvfp4-fp8-dgpp-2x --cluster 2nodes-dac`
+   (если w2 ещё стоит → `dgpp-cluster down`).
+3. Остановить всё, что подняли в Task 2/3 (Ling/Step-5 лейны).
+4. `sm121 power off --cluster 8nodes-switch` — обесточит dgx1–8 + блокирующие
+   extra_entities (свитч `sw6_mt`, вентилятор `sw7_fan`). Проверить, что dgx4
+   уже off. `health` после — все узлы offline.
+5. Закрыть висящие ledger-записи: `sm121 runlock list` → `runlock close <recipe>`
+   для незакрытых.
+
+## Deliverables смены
+
+- Отчёты бенчей рядом с лейнами (`recipes/<lane>/reports/…`).
+- `specs/tech-architecture/upstream-watch-2026-10-16.md` — форумы + репо.
+- Коммиты (launcher/recipes) с внятными сообщениями.
+- Shift-лог `history/night-shifts/2026-10-16.md` — что сделано/найдено/упало,
+  состояние кластера в конце (все off).
+
+## Приоритет по времени (если не всё влезет)
+
+1. Task 1 (DGPP w2) — довести обязательно (уже идёт).
+2. Task 4/5 (форумы/репо) — безопасно, всегда успевается, ценно.
+3. Task 2a (Ling NVFP4 4x) — если 8x/4x свободен и base подходит.
+4. Task 3 (Step-5) — разведка, только если есть ёмкость и время.
+5. Task 2b (Ling block-FP8 8x) — в последнюю очередь.