Rotary Position Embedding (RoPE)
Döner konum gömmesi (RoPE), dikkat puanlarının göreli uzaklığa bağlı olması için sorgu ve anahtar vektörlerini belirteç konumuna göre döndürür. Çoğu açık LLM'de kullanılır.
Döner Konum Gömmesi (RoPE), her sorgu ve anahtar vektörünü belirtecin konumuyla orantılı bir açı kadar döndürerek Transformer'a belirteç sıralaması bilgisini verir. Öz dikkat tek başına sözcüklerin sırasını ayırt edemez; bu nedenle modellerin konum bilgisini bir şekilde eklemesi gerekir. RoPE'de m konumundaki sorgu ile n konumundaki anahtar arasındaki dikkat puarı yalnızca m − n farkına bağlıdır. 2021'de RoFormer modeliyle tanıtılan ve EleutherAI'nin GPT-J ve GPT-NeoX modelleriyle yaygınlaşan RoPE, artık Llama, Mistral, Qwen, Gemma ve DeepSeek dahil olmak üzere açık büyük dil modellerinde (LLM) standart konum kodlamasıdır.
RoPE Nasıl Çalışır?#
RoPE, d boyutlu her sorgu ve anahtar vektörünü d/2 özellik çiftine böler ve her çifti bir düzlemdeki nokta olarak ele alır. m konumunda i. çift, m·θᵢ açısı kadar döndürülür; θᵢ = base^(−2i/d) olur ve özgün makalede base değeri 10.000'dir. İlk çiftler hızlı dönerek yakındaki sıraları ayırt ederken son çiftler yavaş döner ve binlerce konum uzaktaki belirteçleri bile ayırır. Bir sorguyu mθ, bir anahtarı nθ kadar döndürmek, iç çarpımlarının yalnızca (m − n)θ farkına bağlı olmasını sağlar; döndürme vektörün uzunluğunu değiştirmez. Döndürme, sorgu ve anahtar izdüşümlerinden sonra her dikkat katmanında uygulanır; değer vektörleri döndürülmez ve girdi konumundaki belirteç gömmelerine hiçbir şey eklenmez:
Aşağıdaki kod parçası, Meta'nın Llama referans kodundaki gibi karmaşık sayılarla döndürme işlemini uygular ve göreli konum özelliğini denetler:
import torch
torch.manual_seed(0)
dim = 64
freqs = 10000 ** (-torch.arange(0, dim, 2) / dim) # one rotation frequency per pair of features
def rope(x, pos):
"""Rotate each consecutive feature pair of x by the angle pos * frequency."""
pairs = torch.view_as_complex(x.reshape(-1, 2))
return torch.view_as_real(pairs * torch.polar(torch.ones_like(freqs), pos * freqs)).flatten()
q, k = torch.randn(2, dim)
# The same query and key, three tokens apart, at two different places in the sequence
print(f"positions 5 and 2: {rope(q, 5) @ rope(k, 2):.4f}")
print(f"positions 105 and 102: {rope(q, 105) @ rope(k, 102):.4f}")
print(f"positions 5 and 4: {rope(q, 5) @ rope(k, 4):.4f}") # one token apart
print(f"Vector length kept: {rope(q, 5).norm():.4f} vs {q.norm():.4f}")Her iki çiftin de arasında üç belirteç bulunduğu için, bu çiftler 5 ve 2 ya da 105 ve 102 konumlarında olsa da -8.2811 değerini yazdırır. Aynı vektörler arasında bir belirteç olduğunda sonuç -11.4563 olur. Döndürülmüş sorgunun uzunluğu 8.3705 olarak kalır.
RoPE ve Diğer Konum Kodlamaları#
- Sinüzoidal mutlak kodlama: Özgün Transformer, ilk katmandan önce sabit sinüs ve kosinüs vektörlerini girdi gömmelerine bir kez ekler. Göreli uzaklığın bu karışık sinyalden çıkarılması gerekir.
- Öğrenilebilir mutlak gömmeler: BERT ve GPT-2, sırasıyla 512 ve 1.024 konuma kadar her konum için bir vektör öğrenir; bu sınırların ötesindeki konumlar için gömmeleri yoktur.
- Göreli konum yanlılıkları: T5 ve ALiBi, dikkat puanlarına öğrenilmiş veya sabit bir uzaklık yanlılığı ekler. RoPE ise göreli uzaklığı döndürmenin kendisiyle kodlar ve parametre eklemez.
Bağlam Penceresini Genişletme#
RoPE ile L uzunluğunda diziler üzerinde eğitilmiş bir model, L'nin ötesindeki konumların döndürme açılarını hiç görmemiştir; bu konumlarla karşılaşınca dikkat performansı düşer. Bağlam genişletme yöntemleri, sıfırdan yeniden eğitim yapmak yerine açıları yeniden ölçeklendirir. Konum Enterpolasyonu, yeni konumları eğitilmiş aralığa sığdırır ve Llama modellerinin bağlam penceresini 1.000 ince ayar adımında 32.768 belirtece genişletir. NTK duyarlı ölçekleme ve YaRN, yavaş ve düşük frekanslı çiftleri hızlı çiftlerden daha fazla genişletir. YaRN, Llama 2'yi önceki yöntemlere göre 10 kat daha az eğitim belirteciyle 128K belirtece genişletti. Llama 3, ön eğitim sırasında taban değerini 10.000'den 500.000'e çıkardı; böylece en yavaş çiftler belirteç başına daha az döner ve uzak konumlar ayırt edilebilir kalır.
Görsel Modellerde RoPE#
Görüntüler iki koordinat gerektirdiğinden Görsel Transformer'lar, 2B veya eksenel RoPE kullanır: Her başlığın özellik çiftlerinin yarısı yamanın sütununa, diğer yarısı satırına göre döner. Qwen2-VL, çok kipli M-RoPE yönteminde video için üçüncü bir zaman ekseni ekler. Ultralytics paketinde çalışan Meta'nın SAM 2 modeli, mevcut video karesinin özelliklerinin önceki karelerden saklanan özelliklere dikkat ettiği bellek dikkatinin dört katmanında eksenel RoPE uygular. Saklanan her karenin anahtarlarına, mevcut karenin sorgularıyla aynı açı ızgarası uygulanır; bu nedenle ikisi arasındaki dikkat, yamalar arasındaki uzamsal farka bağlıdır.










