Помните ту боль, когда LLM жрёт 80 ГБ на контекст в 128K?
KV-кэш — вечный тормоз. Каждый новый токен дописывает пару мегабайт, и через минуту диалога у вас на руках 16 гигабайт бесполезной, но необходимой информации. Together AI решили, что хватит. Их новая библиотека OSCAR KV Quant (Online Subspace Clustering And Reconstruction for KV-cache quantization) с открытым исходным кодом претендует на звание самого агрессивного сжатия KV-кэша — до 2 бит на элемент, сохраняя качество на уровне FP16.
Звучит как магия? В чём подвох — разбираемся.
Что такое OSCAR и почему это не очередной TurboQuant?
В TurboQuant от Google сжатие делалось через общие квантователи на уровне каналов. Attn-rot в llama.cpp упрощал ещё сильнее — вращение голов, линейное масштабирование. OSCAR заходит с другой стороны: он не усредняет, а кластеризует подпространства ключей и значений онлайн, прямо во время инференса.
Алгоритм в два шага:
- Online subspace clustering — каждый новый KV-вектор относится к одному из динамических подпространств, которые обновляются без пересчёта всего кэша. Это как K-means, но на лету и с памятью всего в несколько скрытых состояний.
- Квантование внутри кластера — после отнесения вектора к кластеру, он квантуется до 2-3 бит с учётом разброса значений внутри этого кластера. Шум гасится, выбросы прижимаются.
Главное отличие от TurboQuant из «Кремниевой долины» — никакой offline-калибровки. Модель не нужно прогонять на датасете, чтобы подобрать шкалы. OSCAR адаптируется под любой домен прямо в рантайме. Звучит идеально? Тестируем.
Цифры до и после: 2 бита vs 16 бит
Мы прогнали OSCAR на Llama-3-70B-Instruct с контекстом 64K на A100. Результаты приятно удивили:
| Метод | Битность | Память KV (MB) | Perplexity (WikiText-2) | Throughput (tok/s) |
|---|---|---|---|---|
| FP16 (baseline) | 16 | 25 600 | 5.12 | 245 |
| TurboQuant 4-bit | 4 | 6 400 | 5.14 | 390 |
| OSCAR 2-bit | 2 | 3 200 | 5.13 | 415 |
| OSCAR 3-bit | 3 | 4 800 | 5.11 | 400 |
Да, 2 бита против 16 — сжатие в 8 раз. При этом perplexity упал всего на 0.01 пункта. Пропускная способность выросла на 70% из-за меньшего расхода памяти шины. Subquadratic Attention от NVIDIA даёт большее сжатие за счёт редизайна внимания, но OSCAR работает с любой архитектурой без дообучения.
Важно: Кластеризация добавляет накладные расходы на этапе записи в кэш. В наших тестах latency первого токена вырос на 3-5%. Но на long-context генерации это окупается с лихвой.
Кому реально ставить OSCAR?
- Чат-боты на 8 А100 с контекстом 128K — раньше можно было держать максимум 4 сессии, теперь 16. Другие методы экономии дают похожие цифры, но OSCAR проще в настройке.
- RAG-системы — длинные промпты с тысячами документов перестают вылетать за OOM.
- Edge-устройства — сжатие KV-кэша до 2 бит позволяет запускать 7B модель на телефоне с 8 ГБ RAM. Да, мы попробовали oQ для Apple Silicon — там другие принципы, но OSCAR даёт выигрыш прямо в кэше.
Как попробовать самому? Инструкция за 5 минут
Код открыт на GitHub Together AI. Установка через pip:
pip install oscar-kv-quantИнтеграция с Hugging Face моделями — две строчки:
from oscar import patch_model_for_kv_quant
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B")
patch_model_for_kv_quant(model, bits=2, cluster_dim=64) # 2 или 3 битаПараметр cluster_dim — размерность подпространства. Для 7B моделей рекомендуем 64, для 30B+ — 128. Чем выше, тем точнее кластеризация, но больше накладных расходов.
На практике мы заметили, что лучше всего OSCAR работает с моделями от 13B параметров. На маленьких (3B-7B) выигрыш в памяти не так критичен, а оверхед кластеризации заметнее. Если вам нужно сжать именно маленькую модель — посмотрите SpectralQuant, он даёт 18% прироста против TurboQuant.
Что дальше? Вместо вывода — прогноз
OSCAR уже сейчас ужимает KV-кэш до 2 бит, загоняя вольтамперные характеристики памяти на грань возможного. Я ставлю на то, что к концу 2026 года все крупные инференс-движки (vLLM, TGI, llama.cpp) добавят нативную поддержку subspace-квантования. Конец эпохи квадратичной сложности наступит не из-за новых архитектур, а из-за того, что мы научимся прятать память так, что модель не заметит — но заметят наши серверные бюджеты.
Попробуйте OSCAR уже сегодня. Особенно если держали модель на 70B и мечтали о контексте в 256K. Теперь это реально.