Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
Черновую генерацию LLM на длинных входах удалось ускорить без переобучения черновой модели и без изменения проверки основной моделью. FOLD предложили Shuxuan Li и коллеги в препринте, который не прошёл рецензирование и опирается на их собственные замеры: в лучшем случае ускорение относительно обычной последовательной генерации выросло с 2,08 до 4,22 раза. Команда может адаптировать уже готовую связку моделей на этапе выполнения, а не собирать данные и заново обучать черновик на длинных последовательностях.
Дальние позиции ломают черновик, даже если содержание не меняется
При спекулятивном декодировании лёгкая черновая модель предлагает сразу блок следующих токенов, а основная модель проверяет их параллельно. Чем больше предложений проходит проверку, тем реже приходится запускать дорогую основную модель. FOLD не вмешивается в эту проверку и меняет только то, как черновик читает предыдущий контекст.
Проблема возникает потому, что черновики обычно обучают на последовательностях заметно короче рабочих запросов. Механизм внимания начинает видеть относительные расстояния, которых не было при обучении, и предлагает меньше подходящих токенов.
Авторы отделили влияние расстояния от содержания: сдвинули черновой блок относительно уже обработанных токенов, но сохранили сами токены и расстояния внутри блока. У Llama-3.1-8B доля принятых предложений упала с 0,351 до уровня не выше 0,014. Значит, качество черновика может разрушить сама непривычная позиция, даже когда модель получает прежнее содержание.
При этом черновик читает не исходные токены, а скрытые состояния основной модели. Они уже учитывают весь предшествующий текст и несут приблизительную информацию о порядке. Из этого следует разделение ролей: рядом с продолжением важны точные расстояния между токенами, а далёкие фрагменты можно использовать как память с поиском по содержанию.
FOLD оставляет точный порядок рядом и сворачивает дальний контекст
FOLD делит историю на локальное окно и дальнюю память. Токены в окне сохраняют настоящие относительные позиции, поэтому черновик продолжает видеть привычную структуру фразы, стиля и ближайшего рассуждения. Все более ранние записи получают одну общую виртуальную позицию, но ни одна из них не удаляется.
Простого объединения дальних записей недостаточно. По мере роста контекста множество слабо подходящих фрагментов может забрать слишком большую долю внимания у локального окна. FOLD поэтому отдельно нормализует внимание для окна и памяти.
Параметр концентрации решает сразу две задачи. Он усиливает различия между записями внутри памяти, чтобы черновик сосредоточился на наиболее подходящих фрагментах, и ограничивает общий вес памяти относительно недавних токенов. При коротком входе, который целиком помещается в локальное окно, метод сводится к исходному механизму черновика.
Такой подход читает всю историю и не запускает отдельный поиск по блокам. Это увеличивает объём работы механизма внимания, но для лёгкого черновика она остаётся небольшой частью полного цикла: основную стоимость по-прежнему создаёт проверяющая модель и чтение её кеша ключей и значений.
FOLD снимает переобучение, но добавляет расход памяти
Метод проверили на шести связках основной и черновой моделей, включая Llama-3.1-8B, Qwen3.5-9B, Gemma-4-12B и Qwen3-8B с DFlash и DSpark. Набор охватывал семь испытаний для длинных документов, вопросов по контексту и работы с кодовыми репозиториями; входы доходили до 256 тысяч токенов. Для исходных черновиков средний прирост ускорения составил от 9 до 61 процента в зависимости от модели.
Замеры проводили на H100 при одиночной обработке и жадном выборе следующего токена. FOLD сравнивали с обрезанием истории, масштабированием позиций и извлечением отдельных дальних блоков. На коротких запросах, где исходный черновик почти не терял качество, метод давал мало пользы и иногда немного замедлял генерацию.
Для команды с готовым DFlash или DSpark это повод сначала проверить FOLD как изменение слоя выполнения, а не планировать длинноконтекстное дообучение. Особенно уместен такой тест, если доля принятых черновых токенов падает вместе с длиной запроса, а основная модель сама справляется с этим контекстом.
Метод не исправляет ухудшение самой основной модели: он помогает только черновику читать её скрытые состояния. Кроме того, FOLD хранит дополнительную не повёрнутую копию ключей и значений черновика. Её размер растёт линейно с контекстом, поэтому выигрыш по задержке придётся сопоставить с доступной памятью GPU и требуемой параллельностью.
Размер локального окна и концентрацию памяти задают вручную и не меняют во время генерации. Работа охватывает блочно-параллельные черновики, поэтому перенос результата на авторегрессионные черновые модели вроде EAGLE-3 потребует отдельной проверки.
Источники
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



