Эффективные Large Language Models: от линейного attention к гибридным … — Habr

Gated DeltaNet Обновление состояния в процессе генерации у разных вариантов линейного внимания Можем заключить, что Kernel Attention и различные варианты Linear Attention позволяют вывести для механизма внимания рекуррентный вид, что даёт нам следующие преимущества: Константные затраты по памяти на этапе инференса — требуется лишь хранить матрицу и/или вектор состояний. Удобный рекуррентный пересчёт, линейная сложность подсчёта. Обзор Чуть ранее мы познакомились с более эффективными вариантами механизма внимания. Однако обучение такой модели с нуля — долгий и дорогой процесс, к тому же сопряжённый с техническими сложностями, вычислительными нестабильностями, да и положительный результат не гарантирован. Вместо этого попробуем получить модель с линейным вниманием из уже обученного чекпоинта с квадратичным вариантом. Линеаризация LLM — это преобразование предобученного трансформера в линейные или субквадратичные архитектуры с константным потреблением памяти и сохранением исходного качества. Рассмотрим некоторые из работ, вышедших в конце 2024-2025 гг., которые касаются линеаризации и важны для общего контекста. Статья «LoLCATs: On Low-Rank Linearizing of Large Language Models» LoLCATs — это двухэтапный метод для замены квадратичного softmax-внимания на линейный аналог. В статье используется вариант Kernel Attention поверх уже обученных матриц Q, K, V. Пайплайн линеаризации в LoLCATs Рассмотрим предложенный процесс обучения подробнее. Attention Transfer. Оригинальные параметры модели замораживаются. Обучаются лишь добавленные kernel'ы (feature map) поверх , минимизируя MSE между выходами оригинального внимания и линейного, подсчитанного через модифицированные векторы и . По сути, это шаг послойной дистилляции исходного внимания в линейный вариант. Файнтюн через LoRA поверх . Использование LoRA-адаптеров позволяет обучать лишь 0,2 % параметров модели, что сильно экономит вычислительные ресурсы. Вариант замены исходного механизма внимания только на Kernel Attention оказывается неконкурентоспособным. Авторы рекомендуют использовать Linear Attention в комбинации со Sliding Window Attention с небольшим окном (в экспериментах — 64 токена). В статье заявляется о довольно небольшом performance gap'e между получившейся моделью и исходным вариантом. Однако остаётся существенный разрыв на фактологическом бенчмарке MMLU и задачах на retrieval-способности модели типа Needle-in-a-Haystack. Авторы устраняют этот разрыв файнтюном на синтетических датасетах, что вызывает некоторые сомнения относительно обобщающей способности модели, особенно на длинных контекстах. Статья «Liger: Gated Linear Recurrent Conversion without New Parameters» Здесь раскрываются две основные идеи: механизмы гейтинга, которые особенно успешны в RNN/SSM, и переиспользование параметров уже обученной модели. Обучение линейной модели в масштабах, сопоставимых с размерами современных LLM, — это рискованно и дорого, поэтому авт��ры предлагают конвертировать исходный трансформер в вариант Gated Recurrent без добавления новых параметров. В работе сделан выбор в пользу Gated Linear Attention: Для подсчёта GLA используют уже имеющиеся query, key, value. Механизм гейтинга реализован поверх key-векторов. Как и в предыдущей статье, авторы не применяют Linear Attention в чистом виде, а комбинируют его с SWA с небольшим окном. Это позволяет добиться лучшего качества. После преобразования модели применили быстрый файнтюн на небольшом количестве токенов через LoRA-адаптеры. После дообучения адаптеры можно интегрировать в исходные слои, поэтому новых параметров у нас не появляется. К сожалению, в работе не была полноценно исследована эффективность метода на длинных контекстах, хотя именно на длинных контекстах раскрываются все преимущества линейного внимания. Статья «Lizard: An Efficient Linearization Framework for Large Language Models» Ещё один подход к линеаризации, очень напоминающий предыдущие две статьи. В основе — всё те же GLA с kernel'ами, которые обучают поверх исходных . GLA используют вкупе со Sliding Window Attention. Из особенностей хочется отметить, что в реализации задействована механика RoPE-free, при которой позиционное кодирование через RoPE применяется в исходной модели (в учителе), а вот приближение через GLA & SWA вычисляется поверх исходных , без использования RoPE. В статье также раскрывается идея добавления некоторых обучаемых meta-memory-токенов (логитов) — attention sink'ов. Здесь под attention sink'ом подразумевается некоторый специальный токен, стабилизирующий распределение внутри голов внимания после взятия softmax. Оказывается, довольно часто вероятностная масса внутри механизма внимания распределена неравномерно, и очень большие значения получают первые токены, вне зависимости от их семантики. Чтобы стабилизировать подсчёт SWA через softmax, и добавляют такой специальный логит, который может «взять на себя» большую вероятностную массу, при этом никак не влияя на итоговый результат через value-векторы. Для любителей разобраться в деталях оставляем несколько статей про attention sink'и и причины возникновения больших активаций: один , два , три , четыре . Хочется отметить, что такие обучаемые attention sink'и использовались в недавнем релизе OpenAI — gpt-oss, — поскольку там тоже применяют SWA. Схема внимания в Lizard Процесс обучения модели Lizard снова состоит из двух шагов: аппроксимации через дистилляцию и последующего файнтюна. В результате удаётся получить в целом линеаризованные версии моделей с результатами, сопоставимыми по ключевым метрикам с бейзлайном. В качестве бейзлайнов использовались — Mistral-7B и LLaMa-8B. В таблице ниже представлены результаты различных методов, включая вышеупомянутые Liger и LoLCATs. Производительность различных методов линеаризации на популярных бенчмарках Авторы Lizard проверяют полученные модели на retrieval-задаче с помощью классического бенчмарка Needle-in-a-Haystack. Для этого снова используют предварительное обучение на синтетическом датасете, состоящем из примеров на 2 тыс. токенов. Качество оценивали на контекстах вплоть до 8 тыс. В статье приведено сравнение с LoLCATs и демонстрируются хорошие способности полученной модели в InContext Retrieval, однако остаются вопросы относительно необходимости предварительного обучения отдельно именно для этой задачи. Статья «RAttention: Minimal-Window Local-Global Attention» Ещё одна работа на тему использования линейного внимания вместе с SWA. Однако здесь, в отличие от предыдущих статей, модель обучили с нуля. Авторы предлагают уже известную схему с Linear Attention и SWA с маленьким окном и использованием общих весов для матриц . Обучаются модели небольшого размера 3 млрд и 12 млрд на 4 тыс. контекста. В результате удаётся получить неплохих кандидатов, сопоставимых по качеству и даже где-то превосходящих бейзлайн с полным вниманием. Особо пристально авторы изучают оценку качества на контекстах свыше 4 тыс. Эксперименты показывают, что предложенная схема экстраполируется на длинные контексты лучше, чем бейзлайн, в каком-то виде наблюдается zero-shot length generalization. Статья демонстрирует перспективу обучения моделей с линейным вниманием с нуля. Статья «Jet-Nemotron: Efficient Language Model with Post Neural Architecture Search» В работе описан подход к линеаризации на основе Post Neural Architecture Search. Авторы отмечают, что для лучшего восстановления исходного качества модели требуется оставлять несколько слоёв softmax-внимания. При этом авторы показывают, что простое чередование «каждый k-й» даёт неоптимальный результат. Поэтому до полноценной линеаризации они предлагают провести поиск слоёв, которые следует оставить с softmax-вниманием. Для этого на основе предобученного чекпоинта обучают модель, в которой случайным образом в разных слоях переключаются между полноценным и линейным вниманием; так получили модель, которая до какой-то степени устойчива к изменениям текущей конфигурации слоёв внимания. Затем с помощью beam search авторы ищут конфигурации для этой модели, максимизирующие конкретные метрики при фиксированном вычислительном бюджете. Таким образом, они получают информацию о том, в каких слоях следует оставлять softmax-внимание при обучении. Пайплайн линеаризации в Jet-Nemotron После получения финальной конфигурации слоёв внимания авторы линеаризуют модели подобно другим работам через послойную дистилляцию и файнтюн. В качестве базовых моделей используют популярные Qwen2.5-1.5B и Qwen2.5-3B. Для дистилляции применяют 50 млрд токенов из открытого датасета и 350 млрд токенов из закрытого для финального файнтюна. В качестве линейного внимания используют модифицированный Gated DeltaNet. Также авторы приходят к выводу, что ключевой фактор, определяющий скорость генерации токенов, — размер KV cache. Поэтому после фиксации таким образом вычислительного бюджета они перебирают различные гиперпараметры: размеры представлений, количество голов и так далее, чтобы дополнительно улучшить финальное качество без изменения скорости инференса. Общие выводы: Изучив вышеперечисленные работы, можно сделать несколько важных промежуточных выводов, на которые мы опирались в собственных экспериментах и к которым независимо пришли в своих запусках: Получить линеаризованную модель в режиме post-train через дистилляцию более чем реально. При этом можно обучать лишь kernel'ы поверх или полноценный слой через дистилляцию с нуля. Почти всегда линеаризация делается в два этапа: послойная дистилляция и последующий файнтюн. На этапе файнтюна для вычислительной эффективности можно обойтись только LoRA-адаптерами. Какие-то слои могут аппроксимироваться лучше. Самый большой послойный loss обычно наблюдается на последни�� слоях. Linear Attention очень слаб в задачах на in-context retrieval. Возникают проблемы и на MMLU-like бенчмарках, требующих выбора одного из предложенных вариантов ответа. Для устранения проблем из предыдущего пункта можно прибегнуть к чередованию слоёв с полноценным вниманием и линейным. Это всё ещё позволяет сделать инференс более эффективным, но сохранить ключевые метрики исходной модели. Недавний релиз Qwen3-Next иллюстрирует потенциал гибридных моделей, совмещающих в себе полноценный механизм внимания и более эффективные аналоги. Линеаризация В этой части статьи нам бы хотелось рассказать о собственных экспериментах по линеаризации. Мы начали с воспроизведения подхода, предложенного в статье LoLCATs, слегка модифицировав его: взяли один из промежуточных чекпоинтов нашей базовой модели GigaChat-Lite. Добавили обучаемый Hedgehog Kernel: , а также использовали SWA и attention sink. Затем сделали послойную дистилляцию с последующим LoRA-файнтюном. Потратив не так много вычислений, мы смогли получить линеаризованный аналог, немного потеряв в ключевых метриках. Коротко поговорим про используемые метрики. Для оценки качества мы смотрим прежде всего на набор общеизвестных классических бенчмарков: классический MMLU, переведённый на русский язык ruMMLU и усложнённую версию MMLU-Pro; HellaSwag, BoolQ, Winogrande. Помимо стандартной диагностики, мы оцениваем наши модели и на других open-source бенчмарках, а также на некоторых внутренних датасетах. Для демонстрации производительности в этой статье мы ограничимся де-факто стандартным набором, который часто используют в работах по линеаризации. Для предварительной оценки модели на длинных контекстах мы использовали бенчмарк LIBRA ( arxiv , github ) от коллег из соседней команды. Замеры на простейших задачах типа Passkey на длинном контексте показали упомянутую выше проблему in-context retrieval: мы получили там околонулевые значения даже для контекстов, на которых модель обучалась. Метрика Source: https://habr.com/ru/companies/sberbank/articles/967300/