Robocikowo>ROBOCIKOWO
Architektura

RoPE

2021AktywnyAktualizacja: 24 sierpnia 2026Opublikowany
Mechanizm pozycyjny uzywany w Transformerach: koduje wzgledna pozycje tokenow przez rotacje wektorow Q i K. Stosowany w LLaMA, Mistral, DBRX, Qwen i wielu innych modelach.
Kluczowa innowacja
Koduje pozycję tokenu przez rotację wektorów zapytań i kluczy o kąt proporcjonalny do pozycji, dzięki czemu iloczyn skalarny w mechanizmie uwagi zależy od względnej odległości tokenów i naturalnie ekstrapoluje na dłuższe sekwencje.
Kategoria
Architektura
Poziom abstrakcji
Primitive
Poziom operacji
WarstwaElement architektury
Zastosowania
Modele z długim kontekstem (LLaMA, Mistral, Gemma)Ekstrapolacja na sekwencje dłuższe niż treningoweStandardowy komponent nowoczesnych LLMPrzetwarzanie długich dokumentów i koduModele do analizy całych repozytoriów kodu

Jak działa

Wektory zapytań i kluczy w mechanizmie uwagi są rotowane o kąt proporcjonalny do pozycji tokenu przed obliczeniem iloczynu skalarnego. Dzięki temu uwaga między tokenami zależy od ich względnych odległości, a nie pozycji bezwzględnych.

Rozwiązany problem

Standardowe kodowanie pozycyjne (addytywne lub sinusoidalne) słabo generalizuje na sekwencje dłuższe niż widoczne w treningu. RoPE koduje pozycje przez rotację macierzy, co naturalnie przenosi się na dłuższe sekwencje.

Komponenty

Harmonogram częstotliwości (theta)Wyznacza kąt obrotu w funkcji pozycji i indeksu wymiaru.

Zbiór częstotliwości θ_i = base^(-2i/d) (base domyślnie 10000) definiujący kąt rotacji dla każdej pary wymiarów. Niskie wymiary rotują szybko, wysokie wolno, tworząc wielorozdzielczą reprezentację pozycji.

Oficjalna

Macierz rotacjiWprowadza informację o pozycji bezwzględnej przez obrót.

Blokowo-diagonalna macierz obrotu, która obraca pary sąsiednich wymiarów wektora o kąt m·θ_i, gdzie m to pozycja tokenu. Implementowana wydajnie jako operacje element-wise na parach (x, y) → (x·cos − y·sin, x·sin + y·cos).

INWektory zapytań/kluczy przed rotacją.
OUTObrócone wektory Q/K o tym samym kształcie.
Zastosowanie do Q i KZapewnia zależność uwagi od pozycji względnej.

RoPE jest stosowany wyłącznie do wektorów zapytań i kluczy (nie do wartości V) przed obliczeniem iloczynu skalarnego uwagi. Dzięki temu wynik uwagi zależy od względnej pozycji m−n dwóch tokenów.

Implementacja

Pułapki implementacyjne
Degradacja przy ekstrapolacji poza kontekst treningowyWysoka

RoPE trenowany na sekwencjach do N tokenów degraduje się dla sekwencji >N bez technik ekstrapolacji (Position Interpolation, NTK-aware scaling, YaRN, LongRoPE). Naiwne rozszerzenie kontekstu prowadzi do chaotycznych rozkładów uwagi.

Rozwiązanie:Zastosuj Position Interpolation, NTK-aware base scaling, YaRN lub LongRoPE do rozszerzenia kontekstu z krótkim dostrajaniem.
Wymagana precyzja float32 dla małych kątówŚrednia

Przy dużych pozycjach kąty rotacji stają się bardzo małe — obliczenia w float16/bfloat16 mogą powodować błędy numeryczne i utratę informacji pozycyjnej.

Rozwiązanie:Obliczaj tablice cos/sin i samą rotację w float32, a wynik rzutuj do bf16 po zastosowaniu.
Wymóg parzystego wymiaru głowyNiska

RoPE obraca pary sąsiednich wymiarów, więc wymiar głowy uwagi musi być parzysty; nieparzysty wymiar wymaga specjalnej obsługi lub częściowego RoPE.

Rozwiązanie:Zapewnij parzysty wymiar głowy lub użyj wariantu z częściowym rotary_dim.

Ewolucja

Oryginalny paper · 2021 · arXiv:2104.09864 (cs.CL) · Jianlin Su
RoFormer: Enhanced Transformer with Rotary Position Embedding
Jianlin Su, Yu Lu, Shengfeng Pan, Ahmed Murtadha, Bo Wen, Yunfeng Liu
2021
Wprowadzenie RoPE w pracy RoFormer
Punkt przełomowy

Su i in. proponują kodowanie pozycji przez rotację wektorów Q/K, łącząc pozycję bezwzględną i względną oraz umożliwiając użycie z uwagą liniową.

2021
Popularyzacja przez EleutherAI (GPT-J / GPT-NeoX)

Wpis „Rotary Embeddings: A Relative Revolution” oraz zastosowanie RoPE w GPT-J i GPT-NeoX rozpowszechniają metodę w dekoderowych LLM.

2023
LLaMA czyni RoPE de facto standardem
Punkt przełomowy

Przyjęcie RoPE w LLaMA, a następnie w Mistral, Qwen, Gemma i DBRX, ustanawia je domyślnym kodowaniem pozycji w otwartych LLM.

2023
Position Interpolation rozszerza kontekst RoPE

Chen i in. pokazują, że skalowanie indeksów pozycji (interpolacja) rozszerza okno kontekstu modeli opartych na RoPE przy minimalnym dostrajaniu.

2023
YaRN — wydajne rozszerzanie kontekstu RoPE

YaRN łączy NTK-aware scaling z korektą temperatury uwagi, rozszerzając kontekst modeli RoPE efektywniej niż czysta interpolacja.

2024
LongRoPE rozszerza kontekst do 2M+ tokenów

LongRoPE stosuje ewolucyjne wyszukiwanie niejednorodnych współczynników skalowania RoPE, rozszerzając okno kontekstu do ponad 2 milionów tokenów.

Hiperparametry (konfigurowalne osie)

Rotary base (theta)Krytyczna

Podstawa częstotliwości (domyślnie 10000). Zwiększanie base wydłuża długości fal i jest podstawą NTK-aware scaling do rozszerzania kontekstu.

10000Domyślna wartość z pracy RoFormer i większości LLM.
500000Zwiększona podstawa w modelach z długim kontekstem (np. LLaMA 3).
Rotary dimension / percentageŚrednia

Ułamek wymiaru głowy poddawany rotacji. Pełny RoPE obraca 100% wymiarów; niektóre modele (GPT-NeoX) stosują częściowy RoPE (np. 25%).

1.0Pełny RoPE (LLaMA, Mistral).
0.25Częściowy RoPE w GPT-NeoX.
Head dimension (parzysty)Wysoka

Wymiar głowy uwagi musi być parzysty, ponieważ RoPE obraca pary wymiarów.

Złożoność obliczeniowa

Złożoność czasowa: O(n · d). Złożoność przestrzenna: O(n · d).

Paradygmat wykonania

Tryb główny
Gęsty

RoPE to deterministyczna transformacja bez routingu ani warunkowej aktywacji.

Wzorzec aktywacji
Wszystkie ścieżki aktywne
Mechanizm routingu

Równoległość

Poziom równoległości
W pełni równoległy

Rotacja jest stosowana niezależnie do każdego tokenu i każdej pary wymiarów, więc jest w pełni równoległa.

Zakres
TreningInferencjaPomiędzy tokenami

Wymagania sprzętowe

Podstawowe

RoPE to element-wise operacje trygonometryczne stosowane do każdego wektora Q i K — w pełni akcelerowane na GPU, często fused z kernelami uwagi (FlashAttention wspiera fuzję RoPE).

Dobry fit

RoPE nie wymaga specjalizowanego sprzętu — to tania transformacja działająca na dowolnym akceleratorze i CPU.