|
@@ -0,0 +1,90 @@
|
|
|
|
|
+# Ночная смена 2026-10-16 → 17 — план (автономный режим)
|
|
|
|
|
+
|
|
|
|
|
+**Режим:** полная автономия, супервизор спит. Оператор авторизовал power off в
|
|
|
|
|
+конце смены (после чистой остановки серв). Все действия через `sm121`
|
|
|
|
|
+(см. AGENTS «All builds must go through sm121»). Язык отчётов — ru/en.
|
|
|
|
|
+
|
|
|
|
|
+## Текущее состояние (снимок на начало смены)
|
|
|
|
|
+
|
|
|
|
|
+| Кластер | Состояние |
|
|
|
|
|
+|---|---|
|
|
|
|
|
+| `8nodes-switch` (dgx1–8) | cluster **offline** (switch off). online: **dgx1, dgx2, dgx5**; offline: dgx3,4,6,7,8 |
|
|
|
|
|
+| dgx1, dgx2 | **живой GLM-5.3 kindling 2x serve** (`sm121_glm53-kindling-2x_0`, Up 12h) — НЕ ТРОГАТЬ (возможно обслуживает этот агент) |
|
|
|
|
|
+| dgx5 | идёт **Ling-3.1-flash fp8→fp4 конвертация** (наш конвертер, 30/54 шардов, tmux `fp4_*`, лог `~/fp4-*.log`) |
|
|
|
|
|
+
|
|
|
|
|
+Свободных Sparks для новых лейнов: **dgx3, dgx4, dgx6, dgx7, dgx8** (выключены;
|
|
|
|
|
+включаются `sm121 power on --cluster 8nodes-switch --node dgxN.lan`).
|
|
|
|
|
+
|
|
|
|
|
+## Guardrails (без супервизора)
|
|
|
|
|
+
|
|
|
|
|
+- Перед любым `stop`/`power off` — сначала `health`; не роняем живой трафик.
|
|
|
|
|
+ **dgx1/dgx2 kindling 2x — не трогать** всю смену (unless оператор скажет).
|
|
|
|
|
+- **GB10: GPU/unified память НЕ ограничена cgroup** (forum 386057) — `docker
|
|
|
|
|
+ --memory` не кажет cudaMalloc; при исчерпании пула стабится хост. Тяжёлые
|
|
|
|
|
+ задачи (конвертация, большая загрузка) — только на **чистой** ноде, никогда
|
|
|
|
|
+ рядом с live serve. (Так и сделали: конвертер уехал с dgx1 на dgx5.)
|
|
|
|
|
+- **GB10 stuck-clock** (forum 386060): если лейн аномально медленный — проверить
|
|
|
|
|
+ SM clock под нагрузкой (`nvidia-smi` ждёт ~2000–2400, не ~660; throttle 0x0).
|
|
|
|
|
+ Лечится полным power-cycle (unplug AC+USB + держать power 10s), reboot не helps.
|
|
|
|
|
+- Первый/необкатанный запуск — detached `--keep --no-wait` (serve-boot-triage).
|
|
|
|
|
+- Harness `tool-eval-bench` **v2.8.0** (97 сценариев), bench с **pluto.lan**
|
|
|
|
|
+ (`--ssh-host pluto.lan`), scratch-cwd, `--json-file` рядом с лейном.
|
|
|
|
|
+ **A/B только внутри одной версии harness.**
|
|
|
|
|
+- Ночью **не резать** базовый образ kindling (v0.31.0) — v0.32.0 ещё rc2, не stable.
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Task 1 — Ling-3.1-flash fp4: доконвертировать → serve на 1 Spark → bench
|
|
|
|
|
+
|
|
|
|
|
+Конвертер (fp8-block experts → MXFP4, «even» scale, byte-exact vs vLLM
|
|
|
|
|
+`reference_mxfp4.py`) идёт на dgx5 → NAS
|
|
|
|
|
+`models--inclusionAI--Ling-3.1-flash-fp4` (snapshot `9144477b…`, refs/main уже
|
|
|
|
|
+стоит). 30/54 шардов.
|
|
|
|
|
+
|
|
|
|
|
+1. Дождаться 54/54 (3 воркера `fp4_1-18`/`fp4_19-36`/`fp4_37-54`). Если воркер
|
|
|
|
|
+ завис — перезапустить только его диапазон (`--shards A-B --no-finalize`),
|
|
|
|
|
+ конвертер идемпотентен по шардам.
|
|
|
|
|
+2. **Finalize**: `python3 ~/ling_fp4_full.py --src <SRC> --dst <DST>
|
|
|
|
|
+ --finalize-only` — собрать index+config из готовых шардов (проверить
|
|
|
|
|
+ `total_size ≈ 110 GB`, 54 шарда, config с `routed_experts_*`).
|
|
|
|
|
+3. Рецепт `ling-31-flash-fp4` (solo/TP1, `model =
|
|
|
|
|
+ inclusionAI/Ling-3.1-flash-fp4`, `--tool-call-parser ling3`, MTP, mxfp4
|
|
|
|
|
+ MoE-backend — конфиг-driven, `--quantization` не нужен). Dry-run → serve на
|
|
|
|
|
+ **одной свободной Spark** (dgx3/4/6/7/8), `--keep --no-wait`.
|
|
|
|
|
+4. Smoke (`/v1/models`, chat) → `tool-eval-bench --no-think` (Ling default
|
|
|
|
|
+ thinking вылезает за 120s/turn) с pluto. **Цель: валидный скор** против fp8
|
|
|
|
|
+ 8x-якоря; померить quality-delta fp4. Отчёт рядом с лейном.
|
|
|
|
|
+
|
|
|
|
|
+## Task 2 — nvidia/GLM-5.3-Flash-FP4-Local (2x, официальный NVFP4)
|
|
|
|
|
+
|
|
|
|
|
+Рецепт `glm53-flash-fp4-local-2x` готов (recipes `d5276db`): TP2, b12x-контейнер
|
|
|
|
|
+(обязателен — новый lossless NVFP4-scale формат не в upstream vLLM), 500K ctx,
|
|
|
|
|
+MTP n5, FP8 KV, `glm45`/`glm47`. Нужны **2 свободные Spark** (не dgx1/2 — там
|
|
|
|
|
+kindling). Включить пару (напр. dgx6+dgx7), serve `--keep --no-wait`, smoke,
|
|
|
|
|
+bench v2.8.0. **A/B против kindling 2x 95/100** (тот же harness). Если b12x-образ
|
|
|
|
|
+не подтянулся на ноды — `sm121` sync с dgx1 (у него есть).
|
|
|
|
|
+
|
|
|
|
|
+## Task 3 — Qwen3.8-Flash-Next-FP4-Local (1x, b12x)
|
|
|
|
|
+
|
|
|
|
|
+Рецепт `qwen38-flash-next-fp4-local` готов. Одна Spark, MTP n4, FP8 KV, 262K,
|
|
|
|
|
+`VLLM_ENGINE_READY_TIMEOUT_S=3600`. Forum hardmode 89/100. Дешёвый 1x лейн —
|
|
|
|
|
+поднять на свободной Spark, smoke, bench. Тот же b12x-образ.
|
|
|
|
|
+
|
|
|
|
|
+## Task 4 — (по остатку времени) Nemotron Super-VL / Bolt 1x
|
|
|
|
|
+
|
|
|
|
|
+Рецепты `nemotron-35-super-vl-120b-nvfp4` (LiLiCorr dflash-7 drafter — второй HF
|
|
|
|
|
+репо, пред-скачать) и `nemotron-35-bolt-74b-24gb` (`ultra_v3` parser-plugin —
|
|
|
|
|
+может не разрешиться, см. комментарий рецепта). Низкий приоритет; VL-модели,
|
|
|
|
|
+наш bench текстовый. Только если Tasks 1–3 закрыты и есть свободная Spark.
|
|
|
|
|
+
|
|
|
|
|
+## Watch (не ночные действия)
|
|
|
|
|
+- v0.32.0 stable → re-pin kindling base + rebase overlays (bench-gate 95/100).
|
|
|
|
|
+- DGPP pin bump (`3ad63d6b…` → `d9311e72…`) — после supervised re-bench.
|
|
|
|
|
+- Официальный Ling-3.1-flash fp4 от inclusionAI (пока есть только 3.0).
|
|
|
|
|
+
|
|
|
|
|
+## В конце смены
|
|
|
|
|
+- Остановить все sm121-сервы, поднятые за смену (кроме kindling 2x на dgx1/2 —
|
|
|
|
|
+ его не трогали). `runlock list` → закрыть висячие.
|
|
|
|
|
+- Конвертацию/serve на dgx5 остановить, `sm121 power off --cluster 8nodes-switch`
|
|
|
|
|
+ (обесточить всё; dgx1/2 kindling — решить с оператором, по умолчанию оставить).
|
|
|
|
|
+- Написать `history/night-shifts/2026-10-17.md` (что сделано, скоры, якоря).
|