ML Fundamentals

RoPE

Rotary Position Embedding — метод позиционного кодирования LLM, обеспечивающий длинный контекст.

Что такое RoPE

RoPE (Rotary Position Embedding) — метод позиционного кодирования в трансформерах, предложенный Su et al. (2021). Вместо явного добавления позиционного вектора к эмбеддингу, RoPE вращает векторы Q и K в механизме attention на угол, зависящий от позиции токена.

Ключевое свойство: скалярное произведение Q_i · K_j зависит только от относительного расстояния (i - j), а не от абсолютных позиций. Это обеспечивает лучшую обобщаемость на длинные контексты.

Почему RoPE используется в LLM

Длинный контекст: RoPE с масштабированием (RoPE scaling) позволяет расширить контекст модели за пределы обучения без значительной деградации. Llama 3 с 8K контекстом при обучении поддерживает 128K через RoPE scaling.

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

Где используется

Модель Позиционное кодирование
Llama 2/3 RoPE
Mistral RoPE
Qwen 2.5 RoPE (YaRN)
GPT-2 Learned positional embeddings
BERT Learned positional embeddings
T5 Relative position bias

RoPE scaling

Несколько вариантов расширения контекста через изменение базы RoPE:

  • Linear scaling: масштабировать угол поворота
  • NTK (Neural Tangent Kernel) aware scaling: изменить базу θ
  • YaRN: адаптивное масштабирование, лучшие результаты на длинном контексте
# Llama 3.1 с rope_scaling={"type": "llama3", "factor": 8}
# Расширяет 8K → 128K контекст

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер