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 контекст
Связанные термины
- контекстное окно — ограничение, расширяемое RoPE scaling
- attention — где применяется RoPE к Q и K
- эмбеддинг — позиционное кодирование как альтернатива RoPE
- трансформер — архитектура с RoPE
Готовы запустить GPU-задачу?
Запустить GPU-сервер