2026-10-17-night-plan.md 6.5 KB

Ночная смена 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 (что сделано, скоры, якоря).