Когда sparse attention тормозит ваш DeepSeek-V3.2
Вы только что запустили DeepSeek-V3.2 с контекстом в 128K токенов, и prefill этап съедает секунды. А ведь в модели используется sparse attention - он должен быть быстрым. Но нет: вычисление индексов внимания для каждого слоя заново превращается в узкое место.
IndexCache - это патч для vLLM и SGLang, который кеширует индексы sparse attention между слоями. Результат: ускорение prefill до 1.82x для DeepSeek-V3.2, и до 1.5x для GLM-5 с DSA.
Проблема в том, что sparse attention (как в DeepSeek-V3.2 или GLM-5) требует вычисления индексов - какие токены с какими взаимодействуют. Эти индексы часто одинаковы для всех слоев трансформера, но почему-то каждый слой вычисляет их заново. IndexCache исправляет это безумие.
Как работает кеширование индексов
Вместо того чтобы для каждого слоя запускать алгоритм определения sparse pattern, IndexCache сохраняет вычисленные индексы после первого слоя и повторно использует их для всех последующих. Это звучит очевидно, но до марта 2026 года никто не реализовал это в популярных инференс-движках.
Технически, патч добавляет новый кеш в архитектуру внимания. При prefill, для sparse attention layers, индексы кешируются в GPU memory и переиспользуются. Это уменьшает вычисления и ускоряет процесс.
Цифры: на что способен IndexCache
Тесты на NVIDIA A100 с контекстом 64K токенов показали:
| Модель | Без IndexCache | С IndexCache | Ускорение |
|---|---|---|---|
| DeepSeek-V3.2 (128K context) | 420 ms | 230 ms | 1.82x |
| GLM-5 DSA (64K context) | 380 ms | 250 ms | 1.52x |
| MiniMax-M2.5 sparse layers | 310 ms | 210 ms | 1.48x |
Ускорение заметно именно на этапе prefill - когда модель обрабатывает промпт впервые. Для декодирования (генерации токенов) эффект минимален, так как там sparse attention работает с фиксированным окном.
Какие модели поддерживаются
IndexCache работает с любыми моделями, которые используют sparse attention в vLLM или SGLang. На март 2026 года это:
- DeepSeek-V3.2 (последняя версия, выпущенная в начале 2026) - все варианты контекста до 128K
- GLM-5 с Deep Sparse Architecture (DSA) - контекст до 64K
- MiniMax-M2.5 в sparse режиме
- Любые другие модели с имплементацией sparse attention в vLLM/SGLang
Если вы используете dense attention, как в большинстве моделей, IndexCache не даст прироста. Но для sparse моделей - это must-have.
Как установить и использовать
Патч доступен как отдельный модуль для vLLM и SGLang. Установка через pip:
pip install index-cache-patch
Затем, при запуске сервера, нужно активировать флаг --use-index-cache:
# Для vLLM
python -m vllm.entrypoints.api_server \
--model deepseek-ai/DeepSeek-V3.2 \
--use-index-cache \
--tensor-parallel-size 2
# Для SGLang
sglang launch --model deepseek-ai/DeepSeek-V3.2 --use-index-cache
В коде Python, можно включить кеширование через параметр:
from vllm import LLM
llm = LLM(model="deepseek-ai/DeepSeek-V3.2", enable_index_cache=True)
Внимание: IndexCache увеличивает потребление памяти GPU, так как хранит индексы для всех слоев. Для контекста 128K это примерно 50-100 MB дополнительно. Но выигрыш в скорости того стоит.
Сравнение с альтернативами
Почему просто не использовать обычный sparse attention? Потому что он медленнее. IndexCache - это оптимизация поверх существующей реализации.
Другие подходы к ускорению sparse attention:
- FlashAttention для sparse матриц: все еще в разработке на март 2026, и не интегрирован в vLLM.
- Аппаратные ускорители: как DeepSeek DeepGEMM, но они требуют специфического железа.
- Квантование: уменьшает вес моделей, но не ускоряет вычисление индексов.
IndexCache - это программная оптимизация, которая работает на любом GPU и не требует изменений в модели.
Если вы выбираете между vLLM и SGLang, оба поддерживают IndexCache. Но для sparse attention, SGLang может быть быстрее из-за своей архитектуры - подробнее в нашей статье SGLang против vLLM: битва за миллисекунды в инференсе LLM.
Кому нужен IndexCache
Этот патч для вас, если:
- Вы запускаете DeepSeek-V3.2, GLM-5 или другие sparse модели в продакшене.
- Работаете с длинными контекстами (от 32K токенов).
- Хотите снизить задержки при prefill, особенно для интерактивных приложений.
- Используете vLLM или SGLang для инференса.
Если же вы работаете с короткими контекстами или dense моделями, IndexCache не даст заметного эффекта. Для локального запуска на ноутбуке, как описано в DeepSeek-V3.2 локально, ускорение может быть менее значимым из-за ограничений CPU.
Что дальше для оптимизации sparse attention
IndexCache - только первый шаг. К марту 2026, сообщество работает над:
- Интеграцией с FlashAttention для sparse матриц.
- Аппаратными ускорителями, как упоминалось в DeepSeek DeepGEMM.
- Динамическим кешированием индексов для адаптивных sparse patterns.
Мой совет: установите IndexCache сейчас, если используете sparse модели. Это бесплатный прирост производительности без потерь в качестве. И следите за обновлениями vLLM и SGLang - они быстро внедряют такие оптимизации.
А если вы все еще сомневаетесь между движками, посмотрите наш разбор vLLM или SGLang? Разрубаем гордиев узел выбора движка для LLM в 2026 году.