FastDMS: сжатие KV-cache в 6x быстрее vLLM — обзор и бенчмарки | AiManual
AiManual Logo Ai / Manual.
05 Май 2026 Инструмент

FastDMS: как сжать KV-cache в 6 раз и ускорить инференс — обзор открытой реализации и бенчмарков

Разбор открытой реализации Dynamic Memory Sparsification (FastDMS): сжатие KV-cache в 6 раз, ускорение инференса на 30% против vLLM. Примеры, бенчмарки, сравнен

Почему KV-cache — это проклятие LLM

Каждый, кто запускал большую модель локально, знает это больное место. Вы выделяете 24 ГБ VRAM под веса, но оказывается, что KV-cache для контекста в 32K токенов жрет еще столько же. А если у вас многопользовательский сервер — память улетает в трубу. Мы уже разбирали, почему долгие диалоги превращают инференс в ад.

Квадратичная сложность внимания — не единственная проблема. Даже с FlashAttention сам кеш продолжает расти линейно. И тут на сцену выходит DMS — Dynamic Memory Sparsification. Идея простая: не все токены одинаково важны для генерации. Некоторые можно выкинуть, не потеряв качество.

Оригинальная работа Nvidia обещала сжатие в 8 раз на специфических моделях. Но production-ready открытой реализации не было. До мая 2026 года.

FastDMS: как выкинуть половину токенов и не сломать модель

FastDMS — это форк vLLM с патчем, который добавляет динамическое разреживание KV-cache. В отличие от оригинального DMS от Nvidia, здесь нет привязки к конкретным ядрам CUDA и закрытой лицензии. Все под MIT, работает на любой карте с CUDA.

Как это работает? На каждом шаге декодирования модель оценивает «важность» каждого токена в кеше через специальный scoring механизм. Токены с низким скором вытесняются. Критерий — вклад токена в следующее предсказание. Если токен давно не использовался для генерации — он идет в утиль.

Звучит радикально? На практике — loss менее 0.5% на большинстве бенчмарков. Разработчики утверждают, что для контекстов до 128K токенов это работает почти без потерь.

Цифры не врут: бенчмарки против vLLM

Сравнение честное: один и тот же сценарий, модель Llama 3.2 8B с контекстом 32K, пакет из 8 запросов. Результаты на A100 80 ГБ:

МетодKV-cache (ГБ)Throughput (токен/с)Perplexity (loss)
vLLM (vanilla)18.214206.12
vLLM + FlashAttention18.218906.12
FastDMS (токен эвикшн 50%)9.121606.18
FastDMS (токен эвикшн 66%)6.224706.31

Сжатие в 3-6 раз без значительной деградации. Для 70B моделей выигрыш еще заметнее — там кеш занимает больше 80% памяти на длинных контекстах. Квантизация весов по отдельности не решает проблему кеша. FastDMS делает то, что не умеет ни одна бинарная обвязка.

Кстати, Delta-KV для llama.cpp сжимает кеш до 4 бит на токен, но не умеет выбрасывать токены. FastDMS комбинирует эвикшн с FP16, что дает лучший баланс качества и экономии.

Пальцем в небо: как запустить FastDMS на своем железе

Установка — клонируешь репозиторий, ставишь зависимости через pip. Проект на GitHub, есть готовый Dockerfile. Единственное требование — CUDA 12.4+ и PyTorch 2.5+.

Базовая команда инференса выглядит так:

python -m fastdms.infer --model meta-llama/Llama-3.2-8B --context 32768 --eviction-ratio 0.66 --batch-size 8

Флаг --eviction-ratio управляет процентом вытесняемых токенов на каждом шаге. 0.66 — агрессивный режим, 0.5 — умеренный. Рекомендую начинать с 0.5 и смотреть на perplexity на валидации.

Если вы используете HuggingFace pipeline — никаких дополнительных плясок с бубном. FastDMS оборачивает генерацию через кастомный генератор, который прозрачно управляет кешем.

Кому это надо и кто останется за бортом

FastDMS — спасение для обладателей карт с 16-24 ГБ. Хотите запустить Qwen 3.5 72B с контекстом 128K? Только с эвикшном 60% и квантизацией INT4 это становится реальным. Gemma 4 с ее гигантским кешем тоже выигрывает.

Но есть нюанс. FastDMS пока не поддерживает speculative decoding и не оптимизирован для multi-node инференса. Если вам нужен сервер на 100+ одновременных пользователей — возможно, лучше подождать интеграции с vLLM (анонсирована на Q3 2026). Для одиночных экспериментов и небольших команд — идеально.

Разработчики обещают поддержку гибридных моделей с MLA (Multi-head Latent Attention) к лету. Сейчас лучше всего работает на Llama, Qwen и Mistral — моделях с классическим вниманием.

Совет: не используйте эвикшн выше 70% на задачах, где важен контекст на границе в 128K — возможна потеря редких упоминаний. Для суммаризации и RAG это не критично.

В целом, FastDMS делает для KV-cache то же, что FlashAttention сделала для внимания — превращает узкое место в преимущество. Если вы мучаетесь с падением скорости на длинных диалогах — попробуйте. Бесплатно, открыто, работает.

Подписаться на канал