DeepSeek-V4 с нами уже некоторое время в двух версиях: Pro на 1,6 триллиона параметров (49 миллиардов активных) и Flash на 248 миллиардов параметров (13 миллиардов активных). Разберем технический отчёт моделей — и начнем с архитектурных изменений.
Первое — Manifold-Constrained Hyper-Connections (mHC). Это вариант hyper-connection, в котором спектральная норма всех проекций, — а в DeepSeek их четыре — равна единице. Другое важное изменение — два варианта аттеншена: Compressed Sparse Attention (CSA) и Heavily Compressed Attention (HCA).
CSA (изображение 1) имплементирует MLA и включает в себя Sliding Window Attention (SWA) на определённое число токенов. С шагом m токенов слева от скользящего окна каждые 2m токенов (m=4 в обеих моделях) сжимаются в одно представление. Чтобы «доставать» сжатые токены не полностью, а частично, используется lighting Indexer, как в DeepSeek-V3.2-Exp. В свою очередь HCA (изображение 2) сжимает каждые m’ токенов (m’=128) в один KV. Оба метода, как утверждают авторы, позволяют повысить качество на длинных контекстах, а также сделать утилизацию RAM и диска на инференсе более эффективной.
CSA и HCA позволяют существенно оптимизировать хранение KV-кэша. Для сравнения: в Qwen3.5-379B, где 15 слоёв GQA и 45 слоёв GDN, приходится 15360 байт на токен и 90 мегабайт на стейт. В DeepSeek-V4 Pro, где 30 слоёв CSA, столько же DCA и 60 слоёв SWA — 4924 байта на токен и 4 мегабайта на окно.
Дополнительно делают QK-нормы для стабильности и частичный RoPE — вращают только последние 64 измерения, благодаря чему модель получает возможность пропускать сигнал из очень далёких контекстов. Также применяют вспомогательную ветвь (additional branch) SWA к скрытому представлению и attention sink.
Muon в DeepSeek-V4 в целом стандартный, но любопытные вещи есть и тут. Так, обычно в Muon Ньютон-Шульц считается на пять итераций, а в DeepSeek-V4 — на десять. Это позволяет получить единичные сингулярные значения матрицы. Однако кроме этого в отчёте не говорится, какие конкретно плюсы даёт такой подход.
Ещё одно нововведение четвертой DeepSeek — MegaMoE. Это CUDA-имплементация мега-кернела, который управляет всеми EP-коммуникациями. Есть поддержка метода квантования W4A8, в котором веса в четырёх битах, а активации — в восьми. Это позволяет снизить объёмы занимаемой памяти на GPU, что для MoE-модели особенно важно, а также уменьшает объём ZeRO-коммуникаций. Использование MegaMoE позволяет получить ускорение в 1,5–1,73 раза на инференсе и почти в два раза в тех сценариях, когда важна задержка, например, на RL-роллаутах.
Для разработки MegaMoE использовали TileLang — тайловую модель для программирования кернелов. Она позволила создать набор объединённых кернелов (fused kernels), чтобы добиться «оптимальной производительности с минимальными усилиями». В алгебраическую систему TileLang интегрировали решатель задач целочисленного линейного программирования Z3 SMT Solver, что, в теории, позволило TileLang оптимальнее планировать выполнение коммуникаций и вычислений.
Разработчики много сил вложили в batch-invariance, чтобы батчи работали одинаково в любом месте строки, и детерминизм. В отчёте сообщают, что это помогло с отладкой и экспериментами.
Для хранения весов в DeepSeek-V4 используется формат данных MXFP4. Авторы утверждают, что их вариант весов можно деквантовать до blockwise FP8 без потерь. MXFP4 позволяет избежать их и на инференсе. При этом FP8-схема квантизации осталась такой же, как у DeepSeek-V3 — 1х128 и 128х128.
Применяется контекстный параллелизм. По сути, используется обычный RingAttention: на первой коммуникации отправляются все KV, а затем — только сжатые представления. Благодаря этому, а также использованию CSA с HCA, коммуникации становятся очень дешёвыми. Делают и управляемый чекпоинт активаций: с помощью TorchFX строится граф вычислений, а разработчик получает возможность явно указывать, какие активации нужно дропать для повторного вычисления.
Разбор подготовил
Душный NLP