惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
量子位
罗磊的独立博客
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
小众软件
小众软件
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
大猫的无限游戏
大猫的无限游戏
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
Simon Willison's Weblog
Simon Willison's Weblog
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园_首页
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
T
Tailwind CSS Blog
IT之家
IT之家
博客园 - 聂微东
Spread Privacy
Spread Privacy
V2EX - 技术
V2EX - 技术
S
Security Affairs
宝玉的分享
宝玉的分享
V
V2EX
C
Cisco Blogs
博客园 - Franky
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
S
Securelist
J
Java Code Geeks
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
WordPress大学
WordPress大学
W
WeLiveSecurity
T
Threatpost
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Скрытая цена LLM: как KV-cache увеличивает стоимость инференса и как эту проблему решает Google TurboQuant
konstantin_k · 2026-05-04 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение5 мин

Охват и читатели9

Обзор

При инференсе LLM общее потребление памяти определяется не только размером самой модели, но и промежуточными данными, накапливаемыми в процессе ее работы. С ростом контекста объем этих данных растет почти линейно и может стать сопоставимым или даже превышать размер самой модели.

В основе этой проблемы лежит KV-cache. Пример: у LLaMA 2 7B веса занимают около 14 ГБ но при контексте 8K токенов KV-cache весит уже примерно 4 ГБ. Всего при четырех параллельных запросах это около 16 ГБ.

Это и есть скрытая цена инференса, которая не так очевидна на первый взгляд.

Содержание:

Что такое KV-cache

Чтобы понять, что такое KV-cache, посмотрим на главный механизм LLM, который называется вниманием (attention).

Модель генерирует текст по одному токену за раз, и каждый новый токен зависит от всех предыдущих. Например, если уже есть «Я люблю», то, чтобы сгенерировать следующее слово, модели нужно учесть и «Я», и «люблю».

Схематично вычисление внимания выглядит так:

Для каждого токена заранее вычисляются векторы Q, K и V. Далее они комбинируются следующим образом:

  • Q каждого токена сравнивается с K всех токенов (через скалярное произведение);

  • результат масштабируется (деление на√d_k);

  • полученные значения нормализуются с помощью softmax;

  • затем они умножаются на V.

В результате каждый токен учитывает все остальные токены (включая токены из предыдущего контекста). Это и есть механизм внимания.

Обратите внимание на размерность seq_len на схеме — это длина всей последовательности, то есть количество токенов в контексте. Очевидно, что это долго и дорого.

Но K и V нет необходимости пересчитывать каждый раз (А вот Q нужно вычислять заново, потому что он относится к текущему токену и меняется на каждом шаге генерации), потому что они зависят только от уже обработанных токенов и не меняются на следующих шагах. Поэтому их можно сохранить и использовать снова на следующем токене — это и есть KV-cache.

 Дополним предыдущую схему:

На первом шаге вычисляются Q, K и V для всей последовательности, и K с V сохраняются в кеш. На следующих шагах считается только новый Q, а K и V берутся из кеша и дополняются значениями для нового токена.

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

Но, как уже говорилось выше, решение одной проблемы привело к появлению другой: экономия вычислений обернулась ростом потребления памяти.

Почему KV-cache сложнее сжать, чем веса модели

Во-первых, KV-cache динамический и появляется прямо во время инференса. Обычно методы квантования весов модели применяются заранее и аккуратно, чтобы не потерять качество. Эти методы здесь не подходят.

Во-вторых, при сжатии неизбежно появляются ошибки, которые в случае KV-cache напрямую влияют на механизм внимания. Из-за этого искажения в KV-cache сильнее сказываются на качестве генерации.

В-третьих, для KV-cache важно сохранять взаимное расположение векторов. Здесь опять вычисления опираются на сравнение Q и K. Если при сжатии изменить эти расположения, меняется распределение внимания. В результате модель начинает иначе интерпретировать контекст, что может ухудшить качество генерации.

Именно поэтому сжатие KV-cache — это отдельная и более сложная задача. Здесь важно не просто уменьшить объем данных, но и сделать это быстро, точно, а также не разрушить структуру этих представлений.

Как TurboQuant сжимает KV-cache

И тут самое время рассказать о новом решении исследователей из Google — TurboQuant. Их метод как раз позволяет одновременно эффективно и точно сжимать KV-cache. Работает он в два этапа:

Сначала TurboQuant случайно поворачивает векторы. После такого поворота координаты в высоких размерностях становятся почти независимыми и получают удобное распределение. Благодаря этому каждую координату можно квантовать отдельно почти оптимально. В результате большая часть сжатия достигается уже на этом этапе, но точность представления все-таки немного уменьшается.

После этого применяется метод QJL (Quantized Johnson–Lindenstrauss), который работает с ошибкой после сжатия. Он запоминает ошибку в существенно упрощенном виде — не через сами значения ошибки, а через набор знаков +1 и −1 после случайного преобразования. Такой способ дешев по памяти и позволяет при вычислении скалярных произведений во внимании учитывать эту ошибку — не идеально, но без систематического перекоса.

TurboQuant решает проблему с ограничением по памяти не через уменьшение самой модели, а через оптимизацию KV-cache, то есть тех данных, которые модель хранит во время инференса.

И вот что это дает, по заявлению авторов:

  • представления сжимаются примерно с 16 бит до ~3–4 бит;

  • в экспериментах KV-cache сжимается минимум примерно в 4,5 раза, а при 2,5 битах теоретическая экономия по представлению может приближаться к 6-кратной;

  • снижается объем данных, которые нужно хранить и передавать, что потенциально может ускорять инференс.

При этом KV-cache сжимается на лету во время работы модели.

Почему это важно

После всего описанного логично задать вопрос: окей, мы научились сжимать KV-cache, и что дальше? На самом деле последствия тут довольно заметные.

Раньше модели в основном сравнивали по размеру: 7B, 13B, 70B и так далее. Но на практике быстро оказывается, что на стоимость влияет не только сама модель, но и KV-cache, который она держит в памяти во время работы.

Начинают появляться другие вопросы: сколько памяти уходит на один токен, сколько стоит один запрос, сколько пользователей можно посадить на один GPU? То есть фокус постепенно смещается с размера модели на стоимость ее работы в смысле потребления памяти.

Если KV-cache уменьшается в несколько раз, это напрямую влияет на инфраструктуру. На том же железе можно обслуживать больше пользователей и держать более длинные сессии.

И здесь важный момент, который часто неправильно интерпретируют. Кажется, что если модель стала потреблять меньше памяти, значит спрос на железо должен упасть. Но на практике обычно происходит обратное. Когда что-то становится дешевле, его начинают использовать чаще. Поэтому снижение стоимости инференса чаще приводит не к снижению нагрузки, а к ее росту.

Еще один эффект — это длинные контексты. Обычно кажется, что ограничение здесь в вычислениях. Но на практике основная проблема — это память. KV-cache растет с каждым токеном, и именно он ограничивает длину диалога. Если его удается сжать, то можно держать больше контекста в той же памяти, становится проще строить сложные сценарии и работать с агентными системами.

Что в итоге

При этом важно не переоценивать эффект TurboQuant. Пока что он показывает хорошие результаты в контролируемых условиях. В реальных условиях эффект может быть ниже. Кроме того, он не устраняет KV-cache, а только делает его компактнее. То есть сама проблема никуда не исчезает.

Также есть альтернативные подходы — например, вместо хранения KV-cache можно пытаться частично пересчитывать его заново. Это другой компромисс, при котором требуется уже больше вычислительных ресурсов, чем памяти. Поэтому TurboQuant — это скорее начало новой ветки оптимизаций, связанной с инференсом и управлением памятью.

Мы привыкли оценивать LLM по размеру модели. Но в реальности ключевую роль играет стоимость ее работы, где и значительную часть этой стоимости формирует KV-cache.

TurboQuant показывает довольно неплохие результаты по оптимизации памяти. И это, скорее всего, отдельное направление развития, которое в ближайшие годы будет только усиливаться.