Режим: полная автономия, супервизор спит. Оператор авторизовал 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).
stop/power off — сначала health; не роняем живой трафик.
dgx1/dgx2 kindling 2x — не трогать всю смену (unless оператор скажет).docker
--memory не кажет cudaMalloc; при исчерпании пула стабится хост. Тяжёлые
задачи (конвертация, большая загрузка) — только на чистой ноде, никогда
рядом с live serve. (Так и сделали: конвертер уехал с dgx1 на dgx5.)nvidia-smi ждёт ~2000–2400, не ~660; throttle 0x0).
Лечится полным power-cycle (unplug AC+USB + держать power 10s), reboot не helps.--keep --no-wait (serve-boot-triage).tool-eval-bench v2.8.0 (97 сценариев), bench с pluto.lan
(--ssh-host pluto.lan), scratch-cwd, --json-file рядом с лейном.
A/B только внутри одной версии harness.Конвертер (fp8-block experts → MXFP4, «even» scale, byte-exact vs vLLM
reference_mxfp4.py) — 38/54 шардов готово на NAS
models--inclusionAI--Ling-3.1-flash-fp4 (snapshot 9144477b…, refs/main стоит).
Готовы: 1-14, 19-30, 37-48. Остались: 15-18, 31-36, 49-54 (16).
БЛОКИРОВКА (внешняя): cold-read throughput NAS nas.lan коллапсировал с
~83 MB/s (22:xx) до ~1.3 MB/s (23:1x) — dd, mmap и Python-read одинаково
виснут в D-state на холодных шардах; warm (page cache) 564MB/s. Это НЕ наш
кластер (dgx1 kindling RX = 0; NAS не SSH-ится). Скраб/бэкап/диск на NAS.
Возобновлять когда dd if=<cold shard> of=/dev/null bs=4M > 30 MB/s.
Найденные фиксы конвертера (/home/kilork/ling_fp4_full.py, /tmp/… на Mac):
shutil.copyfile на NFS = copy_file_range возвращает 0 → бесконечный
D-state цикл. Уже убран (copy-подход откатан — он ещё и удваивает NAS-трафик).dequant_fp8_block/quant_mxfp4 — миллисекунды, НЕ узкое место (GPU не нужен,
но и не вредит). Узкое место — только чтение шарда с NAS.Возобновление (когда NAS здоров, 1 воркер, mmap):
ssh dgx5; tmux new -d -s fp4S "/home/kilork/relaunch.sh 15-18 31-36 49-54"
(relaunch.sh = 1 docker-run за раз, --device cuda --no-finalize, идемпотентно
по шардам.) Затем finalize:
python3 ~/ling_fp4_full.py --src <SRC> --dst <DST> --finalize-only — index+config
(total_size ≈ 110 GB, 54 шарда, routed_experts_*).
fp4_1-18/fp4_19-36/fp4_37-54). Если воркер
завис — перезапустить только его диапазон (--shards A-B --no-finalize),
конвертер идемпотентен по шардам.python3 ~/ling_fp4_full.py --src <SRC> --dst <DST>
--finalize-only — собрать index+config из готовых шардов (проверить
total_size ≈ 110 GB, 54 шарда, config с routed_experts_*).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./v1/models, chat) → tool-eval-bench --no-think (Ling default
thinking вылезает за 120s/turn) с pluto. Цель: валидный скор против fp8
8x-якоря; померить quality-delta fp4. Отчёт рядом с лейном.Рецепт 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 (у него есть).
Рецепт 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-образ.
Рецепты 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.
3ad63d6b… → d9311e72…) — после supervised re-bench.runlock list → закрыть висячие.sm121 power off --cluster 8nodes-switch
(обесточить всё; dgx1/2 kindling — решить с оператором, по умолчанию оставить).history/night-shifts/2026-10-17.md (что сделано, скоры, якоря).