2026-10-20.md 8.1 KB

Ночная смена 2026-10-20 → 21 — отчёт

Автономный режим. Прод 4nodes-switch (dgx1–4, 1017 SGLang EP2/1M) не трогал всю смену — работа только на dgx58-switch (dgx5–8).

Итоговая таблица 4x/2x лейнов 1017-семейства и Beam

лейн качество (v2.8.0, seed 42) resp / ход pp c1 tg c1 / c2 / c4 KV-пул
1017 SGLang 4x (прод, EP2/1M) 87/100 75 / 1.4 s 3,019 45.6 / 67.8 / — 9.30M
1017 TensorFold 2x (EXL3) 89/100 23 / 6.7 s ~380 (2K) 50.4 / — 26.6M (FLARE)
1017 FLARE 4x (native Rust) не измерим — падает — ~2.4k 22–27 26.6M
Beam NVFP4 4x (новый) 90/100 34 / 4.7 s 2,501 26.2 / 41.1 / 62.3 6.81M

Вывод: прод-конфиг остаётся лучшим по задержке, Beam — лучший по качеству, TensorFold — лучший однопоточный декод среди 1017-вариантов, FLARE — не готов.

1. FLARE (local-inference-lab) — проверен, не подходит

Находка: у них есть официальный gb10-пакет «DeepSeek V4.1 Flash 1017 on four DGX Sparks» (local-inference-lab/DeepSeek-V4.1-Flash-1017-FLARE@gb10, 511 GB = 12 весовых + 5 графовых шардов), рантайм — нативный Rust, образ multi-arch (arm64 есть), APT-репозиторий доступен.

Что сделано: поставил flare 0.1.0 на все 4 ноды, поднял орбиту (flare orbit pair, агенты на systemd --user — требуется loginctl enable-linger + XDG_RUNTIME_DIR, иначе systemd --user не стартует по SSH), скачал пакет на NAS, прошёл orbit run TP4 по dgx5–8.

Результаты:

  • пакет валиден: architecture sm_121, 1,048,576 ctx, 16 конкурентных, MTP 1–6, по 74.7 GiB/ранг, 130 графов, KV-пул 26.6M токенов (22.3 GiB/ранг);
  • коллективы по RoCE, 2 рельса на пира (roceP2p1s0f0,rocep1s0f0) — то есть сеть не при чём;
  • декод 22–27 tok/s (probe: 26.8 с драфтами, 22.8 без, 23.8 с кэшем 4 GiB) — в 1.8 раза медленнее нашего SGLang;
  • падает под агентской нагрузкой: tensor-parallel peer failed: RoCE proxy failed: two-shot op N abandoned: kernel timed out at seq N — воспроизводимо на первом же запросе с 52 тулами (короткие чат-запросы работают). Полный tool-eval-bench дал 0/100 (все сценарии — 500/connection closed);
  • TTFT при этом хороший (0.95–1.07 s), prefill ~2.4k tok/s.

Итого: FLARE 1017 на нашем железе — медленнее и нестабильнее; для нас закрыт. Отдельно проверил FLARE на Qwen3.8-Flash-Next gb10 (tp1, одна Spark, 107 GB): работает, загрузка ~1 с (графы в пакете), decode 43.3 tok/s, TTFT 1.30 s, tool calls и json_schema — ок, а tool_choice: "required" отдаёт HTTP 500 («required tool choice was not satisfied»). Это стоит сообщить вендору.

2. Beam-1.0-501B-A23B NVFP4 — новый лучший по качеству лейн

Вендорский стек: vllm/vllm-openai:reflection-beam (Beam пока только в этом образе, min vLLM 0.33.0; arm64 есть), TP4, fp8 KV, парсеры beam.

90/100 (174/194), Hard Mode 47/56 = 84% — лучший результат флота. Декод 26.2 / 41.1 / 62.3 (c1/c2/c4), pp 2,501, KV 6.81M, boot ~17 мин (первый старт автоподбирает FlashInfer MoE-кернелы — вендор сам просит поднять VLLM_ENGINE_READY_TIMEOUT_S).

Грабли (все в recipes/beam-1-0-nvfp4-4x/NOTE.md):

  • пустой entrypoint → launcher делает --entrypoint <model> (известная ловушка) → entrypoint = ["vllm", "serve"];
  • --gpu-memory-utilization 0.90 не проходит boot-gate → 0.85;
  • этот билд отдаёт reasoning в поле reasoning, а content под thinking пустой — probes, которые смотрят только content, видят ноль токенов;
  • DFlash2-спекудяция на GB10 не работает: fp8 KV отвергается FlashAttention (нужен FA3/SM90 или FA4/SM100 — тот же барьер, что у GLM-5.3), а с BF16 KV ломается adaptive verification (конфликт с cudagraph replay); с выключенной адаптивкой — 23.6–27.1 tok/s, то есть ноль выигрыша за половинный KV-пул. Оставлено выключенным.

Отчёт: recipes/beam-1-0-nvfp4-4x/reports/* (quality + perf) и NOTE.md.

3. Прочее

  • Аддон 1.2.0 собран (CI зелёный, ghcr.io/kilork/sm121-addon:1.2.0 + :latest), на ha.lan остаётся нажать Update.
  • Конкуренция: рецепт прода переведён на --max-running-requests 24 + --cuda-graph-max-bs-decode 24 (закоммичено; применится при следующем рестарте прода). Замеры: пул 9.3M, при 24 потоках — ~380K контекста на поток.
  • DeepInfer — DeepSeek выпустил свой движок (vLLM-база + disaggregated prefill, писался под sm100). Кандидат на следующую смену.
  • sparkring: новый тег dev-20261016-sparkcache-4a17f1f5198e (мы на dev-20261013-dcp2prefill-status038-sircl-tp6).
  • glm5.3-flash: у Aiden новых образов нет (vllm 1.2 от 09-04, sglang-dsv41 1.7.1 от 09-29); новых рецептов под GLM-5.3 в тредах не появилось.
  • Aiden 1017-страница: их прогон 55 референсных encoder-тестов через SGLang 1.7.1 — 25 pass / 30 fail; 4 группы: имена reasoning effort (мы уже запатчили), порядок картинок в tool-результатах при параллельных вызовах, namespace::name у тулов, потеря reasoning на tool-результатах без списка тулов. Совет: слать число 1–100 вместо имени.

Состояние на конец смены

dgx1–4 (прод) 1017 SGLang EP2/1M, не тронут, ~30 ч аптайма
dgx5–8 Beam NVFP4 TP4 поднят (финальный конфиг, fp8 KV, без спекуляции), API :30000, 6.55M KV
FLARE орбита остановлена, пакеты закешированы (dgx5–8 по ~120 GB), flare 0.1.0 установлен
Диски dgx5–8 ~120–430 GiB свободно (FLARE-пакеты занимают ~120 GB на ноду)

Что осталось на следующую смену

  1. Beam: reasoning budget — thinking включён по умолчанию, ход 4.7 s. Снизить бюджет и перемерить responsiveness (декод при этом не меняется) — самый вероятный способ сделать Beam пригодным для интерактива.
  2. TensorFold: включить session/continuation-кэш (TF_DSV41_SESSIONS=0 сейчас) — у Elevatormusic-форка с кэшем второй вопрос по 24K-документу стартует за 1.1 s вместо 12.8 s; у нас это и есть главная боль TF.
  3. DeepInfer — попробовать на 4x.
  4. sparkring sparkcache — посмотреть, что даёт (возможно, кэш префиксов).
  5. Обновить аддон на ha.lan (кнопка Update).