Журнал · Rit.work

CMC сжимает длинный контекст без изменения весов LLM

Метод превращает документы в выбираемые по вопросу векторы памяти и сокращает расходы на генерацию, но пока зависит от локализации фрагмента с ответом.

Rit.work
Студия разработки
23 сентября 2026 г.3 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

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

Как документ превращается в память для замороженной модели

CMC сначала удаляет токены, которые слабо связаны с соседними по косинусному сходству. Оставшийся текст делится на фрагменты, к каждому добавляются специальные позиции памяти. Обучаемый ContextEncoder записывает содержание фрагмента в скрытые состояния этих позиций, и вместо исходных токенов получается короткая последовательность плотных векторов.

ContextEncoder и целевая LLM могут принадлежать к разным семействам и использовать пространства разной размерности. MemoryBridge, небольшая двухслойная нейросеть, переводит векторы в пространство входных представлений декодера и ограничивает их норму, чтобы они по масштабу не отличались от обычных токенов. Веса самого декодера при этом не меняются.

Обучение идёт в две фазы. Сначала компрессор учится сохранять достаточно сведений для восстановления исходного текста. Затем замороженная LLM выступает моделью-учителем: компрессор получает сигнал от правильных ответов, повторяет распределение вероятностей учителя и приближает память к представлению фрагмента ответа.

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

Экономия возникает в декодере: он обрабатывает меньше входных позиций, тратит меньше операций внимания и хранит более короткий KV-кеш. Само сжатие добавляет отдельный этап, поэтому выигрыш появляется лишь тогда, когда сокращение подготовки и генерации перекрывает работу ContextEncoder.

Экономия памяти сопровождается неравномерной точностью

Метод проверили на всех сочетаниях GPT2-Large, OPT-1.3B и OPT-2.7B с Llama-3-8B-Instruct, Mistral-7B-Instruct-v0.3 и Gemma-2-9B-IT. Тесты охватывают SQuAD, AdversarialQA, HotpotQA и CovidQA: это английские задачи, где ответ извлекается из текста. Все замеры эффективности проводили на одной NVIDIA A100.

На SQuAD максимальный прирост составил 7,3 пункта по точному совпадению ответа с эталоном и 4,0 пункта F1, который учитывает совпавшие слова. При длинной генерации время и энергопотребление снижались до 20%. Абстракт и заключение расходятся в максимальной экономии зарезервированной памяти GPU, поэтому для планирования разумнее брать консервативное значение из абстракта — 50%.

Результат зависит от декодера и режима обучения. Llama и Gemma чаще выигрывали у базового варианта, который получал только локальное окно, а Mistral на полном наборе SQuAD и HotpotQA оказался хуже него. Работа связывает этот провал с тем, что длительность второй фазы не увеличили вместе с объёмом обучающих данных.

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

Планы стоит менять только после проверки локализации ответа

CMC подходит как кандидат для систем, где декодер уже выбран и его веса нельзя или невыгодно менять. Команда может обучать отдельные ContextEncoder и MemoryBridge, а затем подключать их перед существующей LLM. Это полезнее всего при длинном входе и продолжительной генерации, когда KV-кеш становится заметной частью потребления GPU.

Главная практическая граница находится не в компрессоре, а в локальном окне. В основных опытах его центр брали из известной позиции правильного ответа. В рабочей системе такой позиции нет, поэтому перед CMC понадобится поиск подходящего фрагмента через отдельный модуль извлечения; без проверки всей цепочки переносить заявленную экономию и точность в расчёт инфраструктуры рано.

Компрессор обучали отдельно внутри каждого набора данных. Проверки ограничены английскими извлекаемыми ответами: перенос между наборами, суммаризация, свободная генерация и RAG не входили в основные эксперименты. Для продукта это означает пилот на собственных документах, вопросах и способе локализации, а не замену текущей схемы работы с контекстом по результатам одной таблицы.

Работа меняет архитектурный выбор в одном конкретном месте: сжатие можно вынести перед замороженной LLM, не переделывая механизм внимания и не дообучая декодер. Но метод пока следует рассматривать как обучаемый слой поверх поиска, а не как самостоятельную замену ему.

Источники

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

Собираем мобильные приложения и помогаем командам получать от AI реальную пользу. Основатель и команда, работаем удалённо — с клиентами в России и за рубежом.

Ко всем материалам
Понравилось? Обсудим вашу задачу