Почти все современные большие языковые модели кодируют позицию токена поворотом векторов в слое внимания

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



Почти все современные большие языковые модели кодируют позицию токена поворотом векторов в слое внимания. Этот механизм называется RoPE. Векторы запроса и ключа состоят из пар координат, и каждая пара поворачивается на угол, зависящий от позиции. Причем разные пары вращаются с разной скоростью: одни успевают сделать полный оборот за несколько токенов и хорошо различают соседние слова, другие — только за тысячи токенов и отвечают за дальние связи. Вместе они образуют что-то вроде часов: секундная стрелка различает позиции 1 и 2, а часовая — позиции на расстоянии тысяч токенов.

Главное свойство RoPE: при сравнении запроса и ключа важна не абсолютная позиция, а расстояние между ними. Модель не запоминает «токен на позиции N», она учится узнавать паттерн «что-то похожее встречалось примерно N токенов назад».

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

Во-первых, появляются углы поворота, которых модель никогда не видела на обучении. Позиции за пределами максимума дают комбинации поворотов пар координат, к которым модель не строила внимания и не знает, как их интерпретировать.

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

В-третьих, с ростом длины последовательности растет энтропия внимания: softmax размазывается по все большему числу позиций, и модели становится сложнее фокусироваться на важных токенах.

Независимо от RoPE, у языковых моделей есть особенность, похожая на человеческую память. Качество работы сильно зависит от места данных в тексте: модели отлично воспринимают начало и конец документа, но часто теряют середину. Чем больше объем текста, тем сильнее проседает качество в центре. Отсюда и отдельный шаг «now read in the middle» в рассуждениях моделей — это попытка обойти проблему.

Борьба с ограничением окна идет двумя путями: дообучение на длинных последовательностях (дорого и долго) и модификация частот RoPE на лету (дешево и сердито). Второй путь представлен несколькими методами.

Самый простой — Position Interpolation. Если модель училась на позициях от нуля до максимума, а нужно окно в несколько раз больше, можно пересчитать позиции так, чтобы они снова уместились в знакомый диапазон. Для этого каждую позицию умножают на дробь, где исходный максимум стоит в числителе, а новая длина окна — в знаменателе. Позиции сжимаются пропорционально, все углы поворота остаются в виденном диапазоне. Проблема в том, что сжатие одинаково давит и на быстрые, и на медленные частоты. А ведь именно быстрые осцилляции отвечают за то, чтобы модель различала соседние токены. Когда их сжимают, локальное разрешение падает, соседние токены выглядят почти одинаково, и модель путается в порядке слов, даже если с дальними связями стало лучше.

Вместо того чтобы одинаково сжимать все позиции, меняют базу, из которой считаются частоты поворота. Эта база не просто умножается на коэффициент растяжения, а возводится в степень, зависящую от размерности головы внимания. Так что быстрые компоненты, отвечающие за различение соседних токенов, меняются незначительно, а медленные сжимаются гораздо сильнее. Углы поворота как бы перераспределяются между измерениями: одним достается сохранение точности на коротких дистанциях, другим — растяжение на длинные. Метод называется NTK-аware — по аналогии с NTK-ядром из теории нейросетей.

Dynamic NTK — дальнейшее развитие: масштабирование применяется только когда последовательность действительно превышает нативное окно, и коэффициент растет вместе с фактической длиной. Короткие запросы идут через нетронутые частоты и не теряют в точности.

YaRN объединяет идеи PI и NTK-аware, добавляя два уточнения. Первое: для разных измерений RoPE выбирается свой режим. Коротковолновые измерения оставляют почти без изменений, чтобы не терять локольное разорешение. Длинноволновые сжимают линейно, ибо именно на них лежит нагрузка по расщирению дального контекста. Промежуточные плавно смешивают оба подхода. Второе уточнение — масштабирование логитов внимания переж softmax с помощью специального множителя (температуры, не путать с температурой сэмплирования). Он компенсирует рост энтропии распределения внимания на длинных последовательностях. Благодаря этому YaRN дообучается заметно дешевле предшественников, а в динамическом режиме может работать вообще без дообучения — именно этот сценарий и используется на практике.

LongRoPE подбирает для каждой частоты RoPE свой собственный коэффициент с помощью эволюционного алгоритма, то есть перебора удачных комбинаций. Дообучение проводится ступенчато: сначала модель адаптируют к окну в 131 тысячу токенов, затем к 512 тысячам, и только потом к двум миллионам. В итоге получается модель с контекстом до двух миллионов токенов при относительно небольшом объеме дообучения.

LongRoPE2 упрощает поиск масштабов и придерживается принципа «малых потерь»: качество на коротких контекстах не проседает вообще, а длинное окно расширяется поверх него. Именно такие техники стоят за нативным миллионом токенов в современных флагманских моделях.

Для увеличения контекста на лету без дообучения подходят YaRN и Dynamic NTK. Пересчет частот почти бесплатен по вычислениям — это просто изменение таблицы синусов и косинусов на старте инференса. Но изменение масштаба не проходит бесследно.

KV-


Телеграм: t.me/ainewsline

Источник: vk.com

Комментарии: