Когда костыль ломает ногу
Месяц назад мы запустили DeepSeek V3.2 в llama.cpp через патч. Тот самый патч, который игнорирует sparse attention и превращает модель в обычную dense-архитектуру. Работало? Да. Теперь вопрос: а что мы вообще получили на выходе? Просто более медленную модель или что-то сломанное?
Оказалось - сломанное. Причем фундаментально. Sparse attention в DeepSeek V3.2 - не оптимизация для ускорения, а архитектурный костяк. Вырви его - и модель теряет способность рассуждать на сложных задачах. На lineage-бенчмарках разница достигает 30-40%. Это не погрешность. Это провал.
Sparse attention (разреженное внимание) - механизм, при котором модель вычисляет веса внимания не для всех пар токенов, а только для избранных. Экономит вычисления, но главное - позволяет фокусироваться на семантически значимых связях. Dense attention (плотное внимание) - классический подход "каждый с каждым".
Линия падения: от цифр к катастрофе
Мы взяли три lineage-бенчмарка на 10 марта 2026 года: BigBench-Hard (BBH) с цепными рассуждениями, MMLU-Pro для глубокого понимания предметов и новейший Chinese-Legal-Reasoning для проверки контекстного анализа. Оригинальная DeepSeek V3.2 с sparse attention против её же версии с dense attention через патч. Обе модели квантованы до Q4_K_M, запущены на одном железе через SGLang 1.8.2 - самый актуальный фреймворк на дату тестов, который умеет работать со sparse attention из коробки.
| Бенчмарк | Sparse Attention (оригинал) | Dense Attention (патч) | Падение точности |
|---|---|---|---|
| BBH (средняя точность) | 84.7% | 53.2% | -31.5% |
| MMLU-Pro (STEM) | 79.3% | 48.9% | -30.4% |
| Chinese-Legal-Reasoning | 82.1% | 41.7% | -40.4% |
Цифры кричат. На юридическом бенчмарке, где нужно анализировать длинные документы и выявлять скрытые связи, dense attention проваливается полностью. Модель смотрит на все токены сразу, но не видит ни одного по-настоящему. Как шумная толпа, где каждый говорит, но никто не слушает.
Почему sparse - это не про скорость, а про мышление
Здесь все ошибаются. Думают, sparse attention нужен только чтобы быстрее считать. Нет. В DeepSeek V3.2 он нужен чтобы думать.
Архитектура модели обучена избирательному вниманию с рождения. Когда вы даете ей задачу на логическое рассуждение, механизм sparse attention работает как фильтр: отсекает шумовые токены, оставляет только смысловые ядра. Модель строит граф связей между ключевыми понятиями, а не между всеми словами подряд.
Замените это на dense attention - и фильтр исчезает. Модель начинает тупо усреднять все подряд. Вопрос "Если A больше B, а B больше C, то что больше: A или C?" превращается в мешанину из токенов, где "если", "то" и "что" получают одинаковые веса с "A", "B" и "C". Результат предсказуем: модель путается, дает случайный ответ или просто повторяет условие.
1 Как мы тестировали: методология разгрома
Для чистоты эксперимента мы убили все переменные. Одна железка (2x RTX 6000 Ada), один фреймворк, одинаковые промпты. Sparse-версию запускали через SGLang с нативным поддержкой архитектуры DeepSeek. Dense-версию - через тот же SGLang, но с принудительным включением dense attention через флаг --attention dense.
# Для sparse-версии (оригинал)
sglang run --model deepseek-ai/DeepSeek-V3.2 \
--benchmark bbh \
--sparse-attention auto
# Для dense-версии (наш патч)
sglang run --model deepseek-ai/DeepSeek-V3.2-dense-converted \
--benchmark bbh \
--attention dense
Температура 0, семплирование отключено. Хотели увидеть детерминированную работу модели, а не её креативность. Креативность и так была - в виде ошибок.
2 Где больнее всего: анализ провалов
Падение на 40% в Chinese-Legal-Reasoning - не случайность. Юридические тексты построены на сложных отсылках, определениях, исключениях. Sparse attention вычленяет эти связи: "пункт 3.2 ссылается на статью 15, которая противоречит приложению Б". Dense attention видит просто море текста.
В BBH самые интересные провалы в задачах на временную логику и причинно-следственные связи. Модель с dense attention путает порядок событий, не может отследить цепочку "если... то... иначе". Она как будто теряет нить рассуждения после первых двух шагов.
Если вы используете DeepSeek V3.2 через патч для llama.cpp и жалуетесь, что модель "тупит" на сложных задачах - теперь вы знаете почему. Это не модель тупит. Это вы её ослепили, заставив смотреть на всё сразу.
Что делать, если хочется и быстро, и умно
Первое - не использовать dense attention для DeepSeek V3.2. Никогда. Даже если очень хочется запустить её на llama.cpp. Лучше подождать, пока в llama.cpp добавят нативную поддержку sparse attention (разработчики обещают к концу Q2 2026).
Второе - переходить на фреймворки, которые уже умеют работать с архитектурой. SGLang 1.8.2 - отличный вариант, особенно если у вас есть доступ к мощным GPU для полноценного инференса. VLLM 0.5.7 тоже начинает добавлять экспериментальную поддержку.
Третье - если нужно запустить локально на слабом железе, берите DeepSeek-V3.2-Speciale. Эта версия оптимизирована для потребительских GPU и показывает достойные результаты даже без полного sparse attention.
Будущее, где внимание снова станет избирательным
Тренд ясен: sparse attention становится стандартом для reasoning-моделей. Утечки по DeepSeek V4 показывают, что там sparse-механизмы будут ещё сложнее и умнее. Инструменты догонят. Llama.cpp, TensorRT-LLM, MLX - все добавят поддержку в течение года.
А пока - либо ждите, либо используйте правильные фреймворки. Потому что запускать DeepSeek V3.2 с dense attention - это как ехать на Ferrari с включенным ручным тормозом. Машина едет, но зачем тогда Ferrari?
P.S. Если вы всё же решили поэкспериментировать с dense attention, хотя бы не делайте выводов о способностях модели на основе этих тестов. Вы тестируете не модель, а её инвалидную версию.