Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
У языковых моделей удалось увеличить глубину вычислений без пропорционального роста кэша ключей и значений (KV-кэша), который хранит контекст между шагами генерации. Jiaqi Leng и коллеги перенесли повторяющийся блок в кодировщик и на масштабе DeepSeek-V4.1-Flash сократили объём KV на токен в 36,8 раза. Схема позволяет обслуживать больше длинных запросов на тех же GPU, хотя работа пока не рецензирована, а все числа получили сами авторы.
Почему повторять нужно слои кодировщика
Работа опирается на архитектуру CED — каузальный кодировщик-декодировщик. Каждый слой хранит локальный контекст в скользящем окне, но полный контекст записывают только отдельные слои кодировщика. Декодировщик читает общую глобальную запись, построенную из последнего состояния кодировщика.
Такое устройство экономит память и вычисления при первичной обработке промпта. Модель пропускает декодировщик для большей части входных токенов, поскольку нужная ему глобальная запись уже сформирована на границе двух частей.
Повторяющийся блок можно поставить в кодировщик или декодировщик, но эти варианты решают разные задачи. Цикл в декодировщике несколько раз читает один и тот же глобальный контекст. Его локальное состояние меняется, однако источник информации о ранних токенах остаётся прежним.
Цикл в кодировщике на каждом проходе заново строит глобальное представление. Следующий проход получает уже уточнённые ключи и значения, поэтому модель может последовательно улучшать представление всего промпта, а не только перечитывать его неизменную проекцию. В экспериментах именно этот вариант приблизился к обычному Transformer с полным вниманием.
Цена такого размещения — дополнительные вычисления на входе. Декодировщик можно пропустить при обработке промпта, а повторяющийся кодировщик должен выполнить все проходы до начала генерации. Метод переносит узкое место из памяти в вычисления, а не устраняет стоимость рекуррентной глубины.
Как несколько проходов делят один кэш
При обычном обучении каждый проход создаёт собственные ключи и значения. Если сохранить их все при обслуживании модели, потребление памяти растёт вместе с числом повторов и быстро съедает преимущество CED.
Авторы обучали модель со случайным числом проходов. Декодирующие слои поэтому не могли рассчитывать на состояние с заранее известной глубиной, а повторяющийся блок учился сходиться к устойчивому представлению. При обслуживании система оставляет только ключи и значения последнего прохода; следующие токены используют это конечное состояние вместо отдельных версий для каждого раунда.
На моделях, обученных с нуля, Looped CED сохранил 86–93% выигрыша от повторяющегося Transformer, но использовал одну шестую его глобального KV-кэша. Совместно работают два вида экономии: декодирующие слои читают общую глобальную запись, а повторные проходы делят её конечную версию.
Расчёт обслуживания провели на модели с 552 млрд параметров. Вариант с отдельным кэшем для слоёв и проходов не помещал один запрос длиной 128K токенов на выбранном узле, тогда как Looped CED помещал 38 запросов одновременно — столько же, сколько исходная модель без повторяющегося блока.
Когда это меняет архитектурный план
Работа касается команд, которые проектируют собственную LLM, обучают её или контролируют серверный стек. Потребитель готового API не сможет применить схему отдельно: она меняет расположение слоёв, режим обучения и правила хранения KV-кэша.
Проверку качества провели на моделях нескольких размеров до 340 млн параметров, обученных на FineWeb-Edu. Длинные зависимости проверяли на PG19, FinePDFs и GovReport. Эти опыты сравнивают цикл в кодировщике, цикл в декодировщике и Transformer с полным вниманием при согласованных размерах и данных.
Опыт с DeepSeek-V4.1-Flash отвечает только на вопрос о стоимости обслуживания. Для него использовали исходные или фиктивные веса, которые не обучались работе с циклами, а сохранение качества при общем конечном кэше перенесли из экспериментов на меньших моделях. Поэтому измерения памяти показывают, что схема технически помещается на сервере, но не подтверждают качество такой крупной модели после переобучения.
Для систем с длинным контекстом и высокой параллельностью результат меняет выбор между обычным Transformer и рекуррентной моделью. Если пакет ограничивает память под KV-кэш, Looped CED позволяет добавить вычислительную глубину, не уменьшая число одновременных запросов. Особенно заметен эффект при длинных сохранённых контекстах и многошаговых сценариях, где один и тот же префикс используется повторно.
Для нагрузки с длинными новыми промптами вывод осторожнее. Кодировщик обрабатывает каждый входной токен на каждом проходе, поэтому задержка до первого сгенерированного токена растёт. Команде придётся сравнить стоимость дополнительной обработки промпта с экономией памяти и ростом пакетной обработки на своей структуре запросов.
Источники
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



