Отчёт

DeepSeek-V4-Flash 0731 на двух DGX Spark: рецепт с размеченными ловушками

Точный серверный рецепт за нашими опубликованными цифрами на GB10: пиненные веса и образ, порядок запуска head-first против зависания TCPStore, MoE-флаг, который пропускает автовыбор, что мониторить, когда NVML молчит — и какие цифры ждать.

lab_single_run internal research 16 августа 2026 г. · Финансирование: Собственное финансирование, внутреннее исследование

Это ранбук за нашими опубликованными цифрами DeepSeek-V4-Flash-0731 на паре DGX Spark (GB10, TP=2 по 200G RoCE) — каждый шаг так, как мы реально запускаем, с ловушками, стоившими нам времени, размеченными как ловушки. Авторитетная версионируемая копия живёт в публичном репозитории вместе с манифестом прогонов и сырыми выводами; эта страница — аннотированная экскурсия.

Пять шагов

1. Веса на ОБА узла — ~156 ГиБ на диске на узел . Мы бенчмаркали community-чекпоинт FP8, пиненный ревизией; официальный чекпоинт в репо упомянут, но наши цифры описывают не его. Пиньте ревизию — main едет.

2. Образ рантайма по digest, на оба узла. Теги двигаются; digest в репо — нет. Каждая опубликованная цифра называет digest, под которым бежала, — именно это делает будущее расхождение диагностируемым.

3. Сначала HEAD, потом peer. Rank 0 держит TCPStore; peer, подключившийся до того, как head начал слушать, виснет на broken pipe без внятной ошибки. Запустите head, дождитесь порта стора в ss -tln, только потом запускайте peer. Записанным этот баг порядка читается очевидным — вживую он стоил нам часов.

4. Готово, когда отвечает /v1/models. Загрузка весов занимает ≈6–7 минут ; настройки фабрики (IP head/peer, HCA, GID index) — переменные окружения в шапке launch-скрипта.

5. Проверьте, что MoE-бэкенд реально взялся. Движок везёт ядро, специально собранное под MXFP4-экспертов этой модели на GB10, и сознательно исключает его из auto:

docker logs vllm_dsv4 2>&1 | grep "Mxfp4 MoE backend"
# нужно: Using 'B12X_MXFP4'     не: Using 'DEEPGEMM_MXFP4'

Пропуск этой проверки — самая частая причина, по которой опубликованная цифра Spark’а оказывается в высоких пятидесятых вместо высоких шестидесятых: auto дал нам 59.7 tok/s клиентского декода там, где flashinfer_b12x дал 67.6 , движковый замер — 9–12% по частоте шагов верификации.

Какие цифры ждать

Финальная конфигурация, медианы по повторным запросам, из публичных результатов :

Ячейкаtok/s
card-like короткий вывод, c=167.6
code-профиль, c=165.5
тяжёлая проза с 4K-контекстом, c=143.7
code-профиль, c=12 агрегат260.4

Разброс по профилям больше большинства конфигурационных изменений — цифра без профиля нефальсифицируема. Почему гуляющие по форумам числа не сходятся друг с другом — отдельная страница.

Считайте токены по usage.completion_tokens, никогда по числу SSE-событий. Под спекулятивным декодингом одно событие может нести несколько принятых токенов; счёт по событиям молча раздувает throughput.

Ловушка мониторинга

На unified memory GB10 dcgm-exporter не работает совсем, а NVML отдаёт N/A на заметную долю запросов — ваша Grafana будет зелёной и пустой. Мы парсим nvidia-smi собственным textfile-коллектором в метрики node-exporter; разбор — на Habr. Заложите это в бюджет: серверная коробка, которую нельзя наблюдать, — коробка, которую нельзя эксплуатировать.

Секция честности

Связанное: кривая глубины до 1M · отчёт про MoE-бэкенд · стоит ли Spark вообще.

Как цитировать

AGmind Systems Lab (2026-08-16). DeepSeek-V4-Flash 0731 на двух DGX Spark: рецепт с размеченными ловушками. Evidence level: lab_single_run. https://agmind.ai/ru/reports/deepseek-v4-flash-0731-dgx-spark-recipe/
← Отчёты