Почти все современные LLM кодируют позицию токена поворотом векторов в слое внимания. Этот подход называется RoPE (Rotary Position Embedding) и лежит в основе многих архитектур, включая GPT-4o, Claude 3.5 Sonnet и Llama 3.1. Механизм работает так: вектор запроса и вектор ключа состоят из пар координат, каждую из которых RoPE поворачивает на угол, зависящий от позиции токена. Разные пары вращаются с разной скоростью: быстрые различают соседние слова, медленные отвечают за дальние связи. Вместе они образуют набор часов с разным шагом — от секундной до часовой стрелки.
Главное свойство RoPE — относительность: при сравнении запроса и ключа важна не абсолютная позиция, а расстояние между ними. Модель учится распознавать паттерны вида «что-то похожее встречалось примерно N токенов назад». Однако при инференсе на последовательности длиннее обученного окна возникают проблемы: модель встречает невиданные углы поворота, медленные компоненты слипаются, а энтропия внимания растет, размазывая softmax по большему числу позиций.
| Метод | Принцип | Преимущества | Недостатки |
|---|---|---|---|
| Position Interpolation | Сжатие всех позиций пропорционально | Простота реализации | Падает локальное разрешение |
| NTK-aware scaling | Изменение базы частот с учетом размерности | Сохраняет точность на коротких дистанциях | Сложнее в настройке |
Дополнительно, независимо от RoPE, у моделей есть особенность, похожая на человеческую память: качество обработки данных зависит от их места в тексте. Исследования показывают, что модели хорошо воспринимают начало и конец документа, но теряют середину, и с ростом объема текста это ухудшается. Поэтому часто в рассуждениях моделей встречается шаг «now read in the middle» — попытка обойти эту проблему.
Для борьбы с ограничением окна есть два подхода: дообучение на длинных последовательностях (дорого и долго) и модификация частот RoPE на лету (дешево и сердито). Второй подход включает два основных метода. Position Interpolation (PI) пересчитывает позиции так, чтобы они уместились в обученный диапазон: каждую позицию домножают на дробь, где числитель — исходный максимум, знаменатель — новая длина. Это сжимает и быстрые, и медленные частоты одинаково, из-за чего падает локальное разрешение: соседние токены становятся почти неразличимы.
NTK-aware scaling работает иначе: меняется база частот, причем не линейно, а в степени, зависящей от размерности головы внимания. Быстрые компоненты почти не меняются, сохраняя точность на коротких дистанциях, а медленные сжимаются сильнее, позволяя дальним расстояниям влезать в обученный диапазон. Это перераспределение углов поворота между измерениями дает лучший баланс.
Выбор между методами зависит от задачи: если нужна работа с очень длинными текстами и важна точность на локальном уровне, NTK предпочтительнее. PI проще в реализации, но может потребовать дообучения для восстановления качества. В любом случае, расширение контекста без регистрации и СМС — это практический инструмент для разработчиков, работающих с большими документами, кодом или аналитикой.

