2026-10-22.md 5.9 KB

Night shift 2026-10-21 → 22 — отчёт

Стенд dgx5–8 (по указанию оператора), прод dgx1–4 не трогали.

1. Баги из дашборда — исправлены и выпущены

Панель рецептов держала лейны «активными» после остановки. Причина: строки пересобирались только по событиям файлов в reports/ и recipe.toml, а serve/stop пишут .lock (леджер) — он не считался релевантным. Плюс флаги stale/fleet_up выставлялись навсегда.

  • .lock теперь триггерит пересборку; 30-секундный тик сверяет «up»-множество строк с леджером и пересобирает при расхождении;
  • флаги пересчитываются каждый проход (в т.ч. fleet_up на аддоне, где леджера нет вообще — раньше он замирал после первого прохода).
  • Проверено вживую: подсунутый открытый run → оранжевый stale; runlock close → строка исчезает на следующем тике. Релиз 1.3.3.

Ресайз окна лога. Жест умирал при пересечении iframe-панели рецептов (iframe становится целью pointer-событий). drag() теперь берёт pointer capture — работает и рост, и перенос. Релиз 1.3.1.

Host-скрипты переехали в репозиторий рецептов. before_serve/after_stop принимают { script = "scripts/prepare.sh" } — путь относительно каталога рецепта (абсолютные и .. запрещены). tensorfold_1017_prepare стал recipes/dsv41-flash-1017-2x-tensorfold/scripts/prepare.sh. Попутно: хуки получают serve-local NODE_RANK (на subset-запуске отдавали конфиг-ранг — паки строились для ранга 2/3 в 2-ранговом движке), bench понимает TensorFold-овский --name.

Чейнджлог аддона — sm121/CHANGELOG.md (HA показывает секцию установленной версии); правило «каждый бамп = своя секция» в AGENTS.md. Релизы 1.3.0 → 1.3.3.

Дисциплина мониторинга (по замечанию оператора) — раздел в AGENTS.md: не sleep 600; check, а фоновый запуск + короткий поллинг в том же вызове с выходом на первом Error:/FATAL.

2. Дневной ресерч — главное

TensorFold ушёл далеко вперёд. Наш рецепт пинит TF 0.6.0; публичная семья — 1.0.12 / 1.2.4 (нативный Zig-движок) с 2- и 4-нодовыми рецептами, kept-prompt reuse, wide copy windows, точным DSpark.

RedHatAI/GLM-5.3-MXFP4xFP8 (21-е): полный GLM-5.3 (не Flash), 78 слоёв, GlmMoeDsaForCausalLM, ~4.5 бита/пар, 415.4 GB, 1M окно. В карточке — TP8; у нас TP4 = ~97 GiB весов на ранк.

local-inference-lab открыл GitHub: blackwell-llm-docker (образы voipmonitor/sglang:cu130|cu132, voipmonitor/vllm:vllm-b12x-cu132, voipmonitor/vllm:lucifer — b12x + FlashInfer из исходников, CUDA 13.2), форк flashinfer, llm-inference-bench.

Форум, новое: 386130 «RAIDFLASH: 2.5× decode on 2×GB10 GLM-5.3-Flash (TensorFold)» — слой параллельных страйпов поверх TF 0.6.0 (разбивает длинный ответ на k полос, собирает): 49 → 110–200 tok/s на одном пользователе, но это про длинную генерацию, не про агентский ход (целостность между полосами под вопросом — см. #4 в треде). 386108 (GLM-5.3-Flash-FP4-Local + 2M FP8 KV), 386098 (1017), 386285 (4×China OEM без свитча, 90 tok/s).

Полный план: 2026-10-21-night-plan.md.

3. TensorFold 1.0.12 (Zig) TP4 — собран, но не поднялся

Подробно: specs/tech-architecture/tensorfold-1.0.12-bringup.md.

Сделано: движок собран (Zig 0.17.0 + CUDA 13, -Dsm=121), kit проверен (362/362 файлов MANIFEST; RoPE-таблицы и vision-биas добраны из HF), веса EXL3 4.0bpw (288 GB) на NAS, rank-cache 75.6 GiB/нода (tf-dsv41-check: 189 610 записей, 0 расхождений), token map.

Блокер: the native CUDA engine cannot load /model … glue kernels (FileNotFound), а tf-dsv41-load → MissingEntry — движок и 4.0bpw-чекпойнт на этом коммите расходятся по какой-то записи (не шард, не kit-файл). Попутно выяснено и записано: HF-симлинки рвут bind-mount (лечится каталогом жёстких ссылок), entrypoint образа надо гасить (--entrypoint ""), token map на хосте падает (нет tokenizers).

4. GLM-5.3 (full) MXFP4×FP8 на 4 нодах — в работе

Рецепт glm53-mxfp4-fp8-4x (TP4, 32K окно, MTP k=5, glm47-парсеры, образ spark-glm53:v10, у которого в реестре уже есть GlmMoeDsaForCausalLM). Веса (415 GB) качаются на NAS (~123 MB/s). Образ разложен на все 4 ноды заранее.

Дальше: boot (чтение 415 GB с NAS на каждый ранк), probe, tool-eval-bench.