Миллион токенов без краха: как DeepSeek-V4 перепридумала память
Ты когда-нибудь пытался скормить AI-агенту код всей кодовой базы, а он через 20 минут начинал тупить, забывая, с чего начался диалог? Я — да. И если ты читал мою статью про контекстную амнезию в LangChain Deep Agents, то знаешь, как это бесит. DeepSeek-V4 приходит, чтобы переписать правила игры. Не просто увеличить окно до 1 млн токенов — а сделать это с умом, не убив GPU по памяти и времени.
В этой статье разберем, как устроен под капотом этот зверь: почему KV cache не схлопывается при миллионном контексте, как Multi-head Latent Attention (MLA) экономит 90% места, и за счёт каких трюков с FLOPs модель не тормозит, обрабатывая 1000 страниц текста. Без воды — только архитектура, цифры и практика для разработчиков агентов.
DeepSeek-V4 доступен как открытая модель — веса лежат на Hugging Face, лицензия MIT. Запускать можно локально или через API. Для продакшен-агентов это означает полный контроль и никаких сюрпризов с ценами.
Проклятие KV cache: почему раньше 128K было потолком
Любая transformer-модель хранит Key и Value матрицы для каждого слоя и каждого предыдущего токена. При длине контекста N и скрытой размерности d, KV cache занимает 2 * N * d * num_layers байт (FP16). Для 7B модели с 32 слоями и d=4096 на 128K токенов это ~32 ГБ — уже eat all VRAM даже на A100. При 1M токенов — 256 ГБ, физически невозможно.
До недавнего времени все решали это так: сжимали латентность через поиск или делали бинарный KV cache, теряя качество. DeepSeek-V4 пошла другим путём — переписала механизм attention так, чтобы не хранить полный KV cache вообще.
Multi-head Latent Attention (MLA): магия сжатия в 10 раз
Вместо того чтобы держать отдельные K и V для каждой головы, MLA проецирует их в низкоранговое латентное пространство. На входе — hidden states, на выходе — компактный латентный вектор размером d_latent (обычно 256 против 4096). Этот вектор и кешируется. При аттеншене он разворачивается обратно в полные K и V через learnable projection.
Эффект: размер KV cache уменьшается с O(d) до O(d_latent) — примерно в 16 раз для 7B модели. На 1M токенов это 16 ГБ вместо 256. Уже влезает в один A100. А если добавить FP8 квантование — получаем 8 ГБ.
В официальном блоге Hugging Face DeepSeek заявляют, что MLA даёт 90-95% сжатия с потерями качества менее 0.1% на бенчмарках вроде RULER и LongBench. То есть практически без даунгрейда.
Кстати, мы уже обсуждали тонкости KV-cache в долговременной памяти — там разбирали другие подходы (квантование, offloading). MLA делает их почти ненужными, но комбинировать с offloading тоже можно, если надо влезть на 24 ГБ.
Оптимизация FLOPs: как не сжечь дата-центр
Даже если KV cache сжат, вычислительная сложность self-attention всё ещё квадратична от длины контекста — O(N^2). На 1M токенов это 10^12 операций на один слой. DeepSeek-V4 использует гибрид sparse + sliding window attention, вдохновляясь собственными наработками из DeepSeek-V3.2.
| Тип attention | Сложность | Когда используется |
|---|---|---|
| Sliding window (локальный) | O(N * W) | Базовый слой |
| Дальний sparse (глобальный) | O(N * sqrt(N)) | Каждый 4-й слой |
| Attention сжатие (retention heads) | O(N * K) | Суммирование дальних контекстов |
Благодаря такой иерархии FLOPs для 1M токенов снижаются примерно на порядок — до уровня ~1.5 * 10^14 против ~10^15 у полного attention. Это значит, что один проход forward + backward занимает не минуты, а секунды даже на 8xH100.
И да, оптимизация DeepSeek-V3.2 на llama.cpp показывает, что community уже адаптирует предыдущие версии под ограниченное железо. V4 официально поддерживает offloading слоёв на CPU — можно запускать агента с 1M контекстом даже на одной RTX 4090 (24 GB), хоть и медленно.
Сравнение с конкурентами: кто кого?
| Модель | Max контекст | Архитектура KV | Открытый код | Цена за 1M токенов |
|---|---|---|---|---|
| DeepSeek-V4 (апрель 2026) | 1 048 576 | MLA + Sparse | Да (MIT) | ~$0.15 (self-hosted — почти бесплатно) |
| Gemini 1.5 Pro | 1 048 576 | Flash Attention + MoE | Нет | $2.50 |
| GPT-4o (128K) | 131 072 | Full attention | Нет | $5.00 |
| Claude 3 Opus (200K) | 204 800 | Anthropic custom | Нет | $15.00 |
| Qwen3 (128K) | 131 072 | Full + MQA | Да (Apache 2.0) | бесплатно (self-host) |
DeepSeek-V4 выигрывает не только по длине контекста, но и по эффективности. Gemini тоже умеет миллион, но он проприетарный, и за каждый миллион токенов придётся платить $2.5 — для агента, который перерабатывает 10 000 документов в день, это разорительно. С V4 можно поднять свой инстанс на 8xH100 и не думать о счетах.
Кстати, если сравнивать с Qwen3 и другими открытыми моделями, то в битве за контекст на 16 ГБ VRAM Qwen3 показывает достойные 32K, но до миллиона им далеко.
AI-агент с миллионным контекстом: сценарии, о которых ты мечтал
Теперь к практике. Как использовать DeepSeek-V4 для реальных агентов? Вот три сценария, где миллионный контекст — game changer.
1. Анализ кодовой базы целиком
Загружаешь весь репозиторий (все файлы, историю коммитов, issue) — модель может держать это в активной памяти. Агент получает вопрос вроде «найди все баги, связанные с race condition в обработчике платежей» и отвечает, просмотрев весь код. Без RAG, без поиска — просто контекст. Раньше для этого приходилось строить сложные пайплайны с контекстным движком и компрессией токенов. DeepSeek-V4 делает это нативно.
2. Долгие диалоги и персональные ассистенты
Агент, который помнит каждое твоё слово за месяц общения. Не «мы это уже обсуждали, дай я перечитаю лог», а прямо в памяти. Если ты когда-нибудь боролся с нехваткой контекста через файловую систему, то оценишь: V4 не нужно подгружать историю — она уже активна.
3. Обработка юридических и научных документов
Контракты на 500 страниц, диссертации, патенты — закидываешь целиком, задаёшь вопросы, модель ищет инсайты. Для корпоративных агентов, вроде тех, что описывались в статье про DeepResearch от Яндекса, это означает, что RAG уже не обязателен. Но я бы не спешил хоронить RAG — на маленьких контекстах он быстрее.
Как запустить и не облажаться с железом
DeepSeek-V4 доступна в двух версиях: 7B (int4) и 67B (int8). Для self-hosted агентов рекомендую 7B:
- Минимальные требования (медленно): RTX 4090 24 ГБ + 32 ГБ RAM, offloading половины слоёв на CPU. 1M токенов — примерно 5 секунд на первый токен, потом ~20 токенов/сек.
- Комфорт: 2x A100 80 ГБ, full GPU. Весь контекст в памяти, скорость >100 токенов/сек.
Настройка через llama.cpp (ветка deepseek-v4-fix) или официальный инференс на базе vLLM. Пример параметров:
./llama-server -m DeepSeek-V4-7B-int4.gguf --ctx-size 1048576 --mla --no-kv-offload --tensor-split 1,1Флаг --mla включает оптимизированный аттеншен для латентных кешей. Без него не получится использовать контекст больше 128K — проверено.
Важно: не пытайся запустить 67B на одной карте даже с offloading — я попробовал, вылетело при 600K. DeepSeek-V4 67B требует как минимум 2x A100.
Так ли гладко, как кажется?
Не буду притворяться, что всё идеально. Есть нюансы. Во-первых, speed на первом токене (prefill) всё ещё высок — около 1-2 секунд на 100K токенов. При 1M это 10-20 секунд до первого ответа. Для чат-бота в реальном времени — не годится. Но для фоновых агентов, которые перерабатывают документы, — ок. Во-вторых, качество на дальних позициях (после 800K) чуть падает — потеря 2-3% в точности на задаче Needle-in-a-Haystack. DeepSeek обещают исправить в micro-версии V4.1 через month, но сейчас так.
И последнее: открытый код — это круто, но не все кастомизированные операторы (Flash MLA) хорошо оптимизированы под AMD или Apple Silicon. На M4 Ultra V4 работает в 3-4 раза медленнее, чем на H100. Так что выбор железа критичен.
Как неочевидный совет: не пытайтесь использовать V4 как замену RAG для всех случаев. Для маленьких контекстов (до 50K) обычный full attention + RAG будут быстрее и дешевле. V4 — это про сценарии, где контекст реально нужен целиком. Остальное — оверкилл.
DeepSeek-V4 задала новую планку. Какая модель сможет прыгнуть до 10M токенов? Ставлю на Qwen4 с их прогрессом в соревновании контекстов. Но пока — V4 король.