Подписывайтесь:

Блог AST-SoftPro

DeepInfer: инференс-движок DeepSeek, который теперь открыт для всех

22.10.2026 20 мин чтения
DeepInfer: инференс-движок DeepSeek, который теперь открыт для всех

Введение

20 октября 2026 года DeepSeek опубликовала в GitHub репозиторий DeepInfer — собственный инференс-фреймворк, на котором работает её продакшн-сервис. Лицензия Apache 2.0, код открыт полностью. Это не «ещё один vLLM» и не замена SGLang: DeepInfer поддерживает ровно одну модель (DeepSeek-V4.1-Flash), только два семейства железа (NVIDIA SM100 Blackwell и Huawei Ascend 950) и нацелен на оффлайн-инференс — батч-API, а не HTTP-сервер.

Зачем это читать: если вы строите инфраструктуру под большие MoE-модели с длинным контекстом, DeepInfer даёт редкий взгляд на то, как крупнейший в мире провайдер дешёвого инференса организует параллельность, кэш и планировщик. Даже если вы не собираетесь запускать V4.1-Flash у себя — архитектура и цифры бенчмарков полезны для оценки того, что реально нужно, чтобы «дешёвый токен» был дешёвым.

В этой статье разберём: что именно открыли, чего не хватает до полноценного сервиса, как устроена параллельность (EP/DP) в prefill и decode, какие ядра и оптимизации внутри, что показывают бенчмарки DeepSeek и SemiAnalysis, и где здесь подводные камни для тех, кто хочет развернуть.

Что такое DeepInfer и почему это важно

DeepInfer — production-движок DeepSeek: тот же код, который обслуживает API DeepSeek в масштабе. В README прямо сказано, что фреймворк питает large-scale production services компании. Публикация под Apache 2.0 означает, что ядра (attention, MoE dispatch/combine), планировщик и runtime для модели доступны любому — без ограничений лицензии.

Важно понимать масштаб: по данным Q&A, опубликованным вместе с релизом, один кластер DeepSeek на этом движке выдаёт порядка 155 триллионов токенов в день, а выручка при off-peak ценах составляет около $38 за GPU-час. Это редкий публичный срез экономики инференса: обычно провайдеры не раскрывают ни throughput кластера, ни маржу на GPU.

💡 Для бизнеса это сигнал: «дешёвый токен» — это не магия модели, а инженерия вокруг неё. Если вы платите за инференс по облачным ставкам ($6–14/GPU-час за B200/H200 в публичных облаках), разрыв с $38 выручки на GPU-час объясняется именно тем, что движок и параллельность заточены под максимальную плотность.

Но DeepInfer — не drop-in замена vLLM/SGLang. Это ядро инференса: кастомные CUDA/CANN-ядра, MoE-параллельность, спекулятивное декодирование (MTP), структурированный вывод по JSON-схемам, batch-invariant inference и детерминированный sampling. Обвязка — KV-кэш, disaggregation prefill/decode, балансировка нагрузки — не входит в релиз.

Что открыли и чего не хватает

Состав публичного релиза сформулирован в README чётко. Включено:

  • оптимизированные ядра attention (MLA) и MoE dispatch/combine для SM100 и Ascend 950;

  • runtime модели и sampler: детерминированный sampling, batch-invariant inference (результат не зависит от состава батча — важно для воспроизводимости);

  • спекулятивное декодирование на draft-токенах с верификацией (MTP — Multi-Token Prediction, встроенный в архитектуру V4.1-Flash механизм);

  • структурированный вывод: JSON Schema и другие форматы;

  • планировщик, перекрывающий CPU-работу с выполнением на акселераторе;

  • пример оффлайн-инференса: python examples/offline_inference.py (батч-API, не HTTP);

  • входная точка для воспроизведения бенчмарков: examples/sweep/run_sweep.sh.

Не включено (в README отдельным разделом вынесено, что для полного инференс-сервиса требуется):

  • система KV-кэша — вы должны принести свою;

  • VE/Prefill/Decode disaggregation — часть логики движка уже реализована, но обвязка ваша;

  • балансировка нагрузки между data-parallel репликами (для prefill и decode).

⚠️ Это ключевая оговорка релиза: DeepInfer — «serving core», а не managed inference cloud. Если вам нужен готовый эндпоинт с кэшем, ретраями и балансировкой — вы строите инфраструктуру вокруг ядра. Для команд без опыта в распределённом инференсе это означает месяцы работы на обвязку; для тех, кто уже держит vLLM/SGLang-кластеры, DeepInfer интересен прежде всего как референс-архитектура и источник ядер.

Требования к окружению жёсткие: Linux, GCC 13+, Python 3.12, либо CUDA 13 на NVIDIA SM100, либо CANN 9.2 на Ascend 950. Поддерживаемая модель — одна: DeepSeek-V4.1-Flash (чекпоинт deepseek-ai/DeepSeek-V4.1-Flash-1017, подгружается в Hugging Face кэш при первом запуске). DeepSeek заявила, что код инференса для будущих моделей будет добавляться по мере их выхода.

Модель V4.1-Flash: контекст для бенчмарков

Без понимания модели цифры DeepInfer не имеют смысла. DeepSeek-V4.1-Flash — мультимодальная MoE-модель с 552B параметрами в бэкероне (около 763B суммарно с доп. модулями), активирующая 8B параметров на токен в prefill и 16B в decode. Контекст — до 1M токенов (1 048 576), сервинг в FP8 с полным окном контекста. Модель нативно обрабатывает текст и изображения, генерация автотрегрессивная; архитектура заточена под input-heavy агентные нагрузки — длинные промпты, агенты с большим рабочим контекстом.

Это важно для экономики: 1M-контекст в FP8 на MoE с малой активацией — именно тот сценарий, где стоимость токена у DeepSeek радикально ниже конкурентов. API-цены V4.1-Flash (по данным публичных обсуждений релиза) порядка $0.30 за миллион входных и $1.20 за миллион выходных токенов — на порядок дешевле аналогов с сопоставляемым качеством, и DeepInfer объясняет, откуда берётся этот разрыв.

💡 Если ваш workload — длинные документы, репозитории целиком в контекст, агентные сессии с историей — модель с 1M-окном и дешёвым prefill меняет экономику продукта. Но учтите: запуск V4.1-Flash локально требует серьёзного железа (см. ниже), а не одной GPU.

Как устроена параллельность: EP в decode, EP+DP в prefill

DeepSeek применяет разную стратегию параллельности для разных фаз инференса — это центральная идея движка.

  • Decode (генерация): сверхкрупномасштабный expert parallelism — EP64–EP128 внутри суперноды. Эксперты MoE-модели распределены по десяткам GPU, и каждый токен «рассыпается» к своим активным экспертам через коммуникационную библиотеку (наследие DeepEP). Decode — memory-bound фаза: KV-кэш и веса экспертов живут в памяти GPU, и параллельность по экспертам позволяет уместить 552B-модель и пропускать батчи.

  • Prefill (обработка входа): лёгкий EP2–EP8 + data parallelism (в бенчмарках — EP4/DP4 на 4 GPU). Prefill — compute-bound: здесь важна вычислительная плотность, а не распределение экспертов по всему кластеру.

  • VE (vision encoder) тоже выделяется отдельно в disaggregation-схеме.

Почему так: decode ограничен пропускной способностью памяти и коммуникацией dispatch/combine — отсюда EP на весь домен scale-up; prefill ограничен FLOPS — отсюда компактный EP плюс DP для загрузки GPU батчами. Одни и те же GPU в кластере могут играть разные роли в зависимости от фазы запроса, а disaggregation разделяет prefill- и decode-реплики физически.

⚠️ Типичная ошибка при чтении таких систем: переносить конфигурации vLLM/SGLang (TP8 на ноде) на MoE с 1M контекстом. При EP64+ «нода» — уже не 8 GPU, а домен scale-up целиком; планирование ресурсов и отладка коммуникаций совсем другие. Команды, которые пытаются поднять подобную модель «как обычно», упираются в NCCL/комм-библиотеку и KV-кэш раньше, чем в вычисления.

Ядра, MTP и структурированный вывод

Внутри DeepInfer — оптимизированные ядра под MLA (Multi-head Latent Attention) для prefill и decode с FP8/FP4 KV-кэшем, fused-ядра нормализации/RoPE/attention/cast, и MoE dispatch/combine в FP8. Это та же линия, что открытые ранее FlashMLA-ядра DeepSeek, но уже как часть полного движка.

MTP (Multi-Token Prediction) — встроенный в V4.1-Flash механизм спекулятивного декодирования: модель сама генерирует draft-токены, которые верифицируются следующим шагом. Эффект виден на данных SemiAnalysis (InferenceX): для DeepSeek R1 на H200 FP8 MTP даёт 1124 tok/s/chip против 711 без MTP при interactivity ~62 tok/s/user, а стоимость токена падает с $0.48 до $0.30 за миллион — минус ~58% стоимости. Для V4.1-Flash DeepSeek в бенчмарках показывает аналогичный паттерн: MTP заметно поднимает throughput при той же интерактивности.

Структурированный вывод (JSON Schema и др.) и batch-invariant inference — то, что редко встречается в open-source движках как базовая встроенная возможность: детерминированный sampling гарантирует, что один и тот же запрос даст один и тот же результат независимо от того, в каком батче он оказался. Для продакшн-пайплайнов (генерация данных, оценка, A/B) это снимает целый класс проблем воспроизводимости.

Бенчмарки: цифры из README и что они означают

Официальные бенчмарки DeepInfer сняты на 4 SM100 GPU для prefill и 64 для decode — каждая группа внутри одного scale-up домена. Ключевые точки (из таблиц README, цитируются в обзорах):

Фаза Конфигурация Нагрузка Результат
Prefill 4× SM100, EP4/DP4, ctx 131K batch 4 096 токенов/ранк ~60 000 tok/s/GPU, шаг ~68 мс
Prefill 4× SM100, EP4/DP4, ctx 131K batch 65 536 токенов/ранк ~89 000 tok/s/GPU, шаг ~730 мс
Decode 64× SM100, EP64/DP64 8 req/ранк ~2 600 output tok/s/GPU, ~325 tok/s/user
Decode 64× SM100, EP64/DP64 256 req/ранк ~26 000 output tok/s/GPU, ~103 tok/s/user
Prefill (по длинам промпта) — 1K / 2K / 4K ~57.7K / 54.5K / 50.3K tok/s/нода

Как читать: prefill-пропускная способность держится на десятках тысяч токенов в секунду на GPU при больших батчах — это и есть «дешёвый вход». Decode при высокой загрузке (256 req/ранк) выдаёт ~26K tok/s/GPU суммарно, но интерактивность падает до ~103 tok/s/user — классический trade-off плотности против latency. При 8 req/ранк наоборот: ~325 tok/s/user, но throughput на GPU ниже.

Для сравнения по кластеру: LMSYS публиковал результаты large-scale EP для DeepSeek-моделей на 96 H100 — decode с MTP давал порядка 22K tok/s/ноду при 2K входах (5.2× над TP16 baseline). Цифры DeepInfer на SM100 того же порядка или выше — эффект нового поколения железа плюс зрелости ядра.

💡 Если вы оцениваете TCO инференса, смотрите не на «tok/s/user» в вакууме, а на пару (загрузка req/ранк, tok/s/GPU): именно она определяет стоимость токена. DeepSeek публично показывает обе точки кривой — это редкость и главный практический вывод релиза.

Где подводные камни: кто должен пропустить DeepInfer

Честный список «кому это не нужно» из обзоров релиза:

  1. Вам нужен официальный API — тогда DeepInfer не нужен вовсе; вы уже платите за его работу.

  2. У вас нет SM100/Ascend 950 — H100/H200/A100 в этом релизе не поддерживаются (поддержка других моделей и железа заявлена на будущее).

  3. Вам нужен агентный фреймворк или протокольный слой — это DSH/DeepSeek-инструменты поверх API, а не DeepInfer.

  4. У вас нет опыта распределённого инференса — KV-кэш, disaggregation и балансировка лежат на вас; без команды с опытом в NCCL/комм-библиотеках это месяцы работы.

Для тех, кому это нужно (инфраструктурные команды, провайдеры инференса, исследовательские кластеры), DeepInfer даёт: открытые ядра MLA/MoE под Blackwell и Ascend, референс по EP/DP-параллельности для MoE с 1M контекстом, MTP как production-паттерн спекулятивного декодирования и детерминированный batch-invariant sampling.

⚠️ Выбор движка — лишь половина задачи. Вторая половина — корректная обвязка: KV-кэш с eviction-политикой под 1M контекст, балансировка между prefill/decode репликами, мониторинг коммуникаций EP64+. Ошибки здесь (утечки памяти в кэше, head-of-line blocking на диспатче экспертов) обнаружатся только под нагрузкой. Команды, которые доверяют критичные инфраструктурные решения опытным инженерам с бэкграундом в распределённых системах, экономят месяцы отладки — это инвестиция, которая окупается предсказуемой стоимостью токена.

Сравнение с альтернативами

Критерий DeepInfer (2026) vLLM / SGLang Официальный API DeepSeek
Модели только V4.1-Flash сотни моделей, любые HF-веса V4.1-Flash и линейка DeepSeek
Железо SM100, Ascend 950 широкий спектр (A/H/B, ROCm) не ваше дело
KV-кэш / балансировка нет в релизе есть из коробки есть
MTP спекулятивное декодирование да, production-паттерн частичная поддержка draft-моделей да (внутри сервиса)
Batch-invariant, детерминизм базовая встроенная возможность настраивается не гарантируется публично
Лицензия / стоимость Apache 2.0, бесплатно Apache 2.0 / Apache+BSD микс оплата за токены ($0.30/$1.20 per M)
Когда выбирать своё железо SM100/Ascend + команда infra универсальный self-hosted инференс нужен готовый сервис без инфраструктуры

Вывод таблицы: DeepInfer выигрывает там, где у вас уже есть Blackwell/Ascend и инфраструктурная команда — он даёт максимальную плотность именно под V4.1-Flash. Для остальных vLLM/SGLang остаются рабочим стандартом, а API DeepSeek — самым дешёвым способом получить доступ к модели без своего железа.

Рекомендации по внедрению

  1. Оцените железо до всего остального. SM100 (Blackwell) или Ascend 950 — жёсткое требование; CUDA 13 / CANN 9.2, GCC 13+, Python 3.12. Если у вас H200 — в текущем релизе вы не целевая аудитория, ждите расширения.

  2. Планируйте disaggregation заранее. Prefill (EP2–8 + DP) и decode (EP64–128) — разные пулы GPU с разными требованиями к памяти и коммуникациям; проектируйте сеть scale-up домена под EP-размер, а не под TP8.

  3. KV-кэш — ваш проект. Под 1M контекст в FP8 объём KV на запрос огромен; без продуманной системы кэша (eviction, prefix-caching) вы упрётесь в память раньше, чем в compute.

  4. Используйте MTP по умолчанию для decode-нагрузок: данные показывают ~50–60% прирост throughput на чип и снижение стоимости токена — это не опция, а базовый режим.

  5. Детерминизм включайте там, где он нужен: batch-invariant inference + детерминированный sampling критичны для пайплайнов генерации данных и оценки; для интерактивного чата можно ослабить ради latency.

  6. Не переносите конфиги TP-эры. Планировщик DeepInfer рассчитан на EP/DP-микс; заимствованные флаги vLLM не помогут, а могут сломать коммуникации.

💡 Практический путь: начните с examples/offline_inference.py на одном scale-up домене, снимите baseline по tok/s/GPU и latency под вашей нагрузкой (длина входа, целевая интерактивность), и только потом проектируйте disaggregation-кластер. Бенчмарки DeepSeek — ориентир, а не гарантия: ваши реальные цифры зависят от длины контекста, доли cached-токенов и политики батчинга.

Заключение

DeepInfer — редкий случай, когда провайдер открывает именно тот слой, который обычно остаётся чёрным ящиком: production-инференс-движок с реальными цифрами экономики ($38/GPU-час выручки, 155T токенов/день на кластер). Для индустрии это одновременно референс-архитектура MoE-сервинга и сигнал о том, что «инфраструктура — commodity» работает только при зрелом ядре: MLA-ядра, EP64+ в decode, MTP, batch-invariant sampling.

Но релиз сознательно ограниченный: одна модель, два семейства железа, оффлайн-режим и три недостающих куска до полного сервиса (KV-кэш, disaggregation, балансировка). Это не «установи и работай», а «собери вокруг ядра свой сервис». Тем, у кого есть SM100/Ascend и команда — стоит изучить код как источник ядер и паттернов; тем, кому нужен просто дешёвый токен — проще платить API DeepSeek, где весь этот движок уже работает.

Главный практический вывод: стоимость токена определяется не моделью, а инженерией вокруг неё. Открытый DeepInfer позволяет эту инженерию увидеть, воспроизвести и адаптировать — и это делает его важным релизом независимо от того, будете ли вы запускать V4.1-Flash у себя.

Источники