axiom

Прогон на железе: полный конвейер A4 на DGX Spark / GB10

29.09.2026. Первый полный прогон скелета L3 на собственном стенде. Результат: гейт A4 закрыт — 5/5 стадий executed, --verify PASS, pipeline_complete=true. Живая диаграмма: a4-gate-flow.html.

Хроника прогона

Шаг Результат Время
SFT-смок l3-full (полный конфиг) OOM: запрос 956,76 ГиБ активаций на пуле 64×8192 без grad-checkpointing падение через ~20 мин
SFT-смок l3-full, пул 4×2048 ресурс-вердикт ok (11,4 ГиБ состояние, 91 ГиБ свободно) — цикл пошёл упал молча: segfault на jit-компиляции полного loss+QAT+MoE
KDA-проекция одиночно OK — Pallas/кернелы на GB10 компилируются и исполняются изоляция дефекта
SFT-смок small (200 шагов) executed, 540,1 с (0,150 GPU-ч), loss 7.66→4.75, tree_hash=72577be6… ~9 мин
Оркестратор A4 (a4-gb10) 5/5 стадий executed, verify PASS ~20 мин

Что вытащили из падений

l3-full OOM (956,76 ГиБ). Не дефект сети — арифметика активаций: полный конфиг без gradient-checkpointing на батче 64×8192 запрашивает память, которой нет ни у одной карты. Два следствия: (а) для «полной катушки» на GB10 нужен grad-checkpointing или пул ≤4×2048; (б) на аренде H800 (80 ГБ) та же математика — претрейн-луп обязан строиться вокруг checkpointing’а, не «повезёт».

Молчаливый segfault на jit-компиляции. Полный loss+QAT+MoE-граф l3-full убивал процесс без traceback (лог обрыв на «[sft] цикл»), при том что KDA-проекция одиночно — OK. Это первый кандидат на отладку: изоляция фаз компиляции, подозрение на пересечение QAT-фикстуры и Pallas-кернелов под sm_121 (GB10). Зафиксировано в OPEN-QUESTIONS (D-8).

arch-ml на aarch64. Стенду нужен верификатор среды — собрали rust 1.98.1 на месте (cargo build 1м11с), бинарь в ~/.cargo/bin. Урок: стендовые прогоны требуют полного тулчейна, rsync «только кода» недостаточно.

Подпись стенда. device_kind в журнале инференса теперь машинно детектируется (GB10/DGX → executed), и hostname стенда пишется в журнал — подделка «стенда» заменой файла отсечена hostname-стражем (дельта spark-детекции, ADR-014 K11–K12).

Стражи после прогона

Страж Статус Где
C-038 / AD-4 (манифест A4 полный) PASS — --verify код 0 хост + стенд
C-041 / AD-8 (сметы 5 прогонов) PASS хост
C-040 / AD-7 (одна нагрузка на GB10) OK — 0 модельных нагрузок после прогона стенд (gb10-single-load-20260929.txt)
Процессное нарушение признано: прогон a4-gb10 стартовал до сметы; смета добавлена пост-фактум с пометкой в approved_by evidence/budget/a4-gb10.json

Манифест (финал)

run_ref: a4-gb10 · pipeline_complete: true
pretrain_checkpoint: executed   checkpoint=run-a4-gb10/checkpoints/pretrain
spark_inference:    executed    journal=…/inference/journal.json (device_kind=NVIDIA GB10)
rl_environment:     executed    run_manifest=…/env/summary.json
sft:                executed    stage_journal=evidence/a4-run-wire/sft/stage-journal.json
rl_base_scheme:     executed    stage_journal=evidence/a4-run-wire/rl/stage-journal.json

Дальше

  1. A5 (drift): повтор прогона по манифесту — сверка хешей и вердиктов (смета a5-rerun готова).
  2. Претрейн 20B на аренде: шард W готов (52 шарда), C качается, Q после; нужен луп (grad-checkpointing обязателен — см. выше) и смета C-041.
  3. Замер 64K для block-merge — теперь на GB10 можно честно (стенд обкатан).