YaRN: Yet Another RoPE Extensionn Method

6 minute read

Published:

TL;DR: YaRN (Peng et al., 2023) divides RoPE dimensions into three groups — low-frequency dims get linear interpolation, high-frequency dims get no modification, mid-frequency dims get NTK-style scaling — and then applies an attention temperature correction. The result is significantly better long-context performance than either method alone, with only ~400 fine-tuning steps needed.
Paper: "YaRN: Efficient Context Window Extension of Large Language Models"  ·  arXiv:2309.00071
Authors: Bowen Peng, Jeffrey Quesnelle, Honglu Fan, Enrico Shippole
Venue: arXiv 2023  ·  📄 Read the paper
First page of the YaRN paper
Paper preview — YaRN: Efficient Context Window Extension of Large Language Models (Peng et al., 2023).
YaRN context extension
YaRN: efficient context window extension (Peng et al., 2023)

The Problem YaRN Solves

Both linear interpolation and NTK scaling are global — they apply the same transformation to all RoPE frequency dimensions. But different dimensions encode different kinds of positional information:

  • High-frequency dims (small wavelength): encode fine-grained local position. They should not be interpolated — compressing their cycles destroys local structure.
  • Low-frequency dims (large wavelength): encode long-range position. They can be linearly interpolated without harm.
  • Mid-frequency dims: need something in between.

YaRN handles each group differently.

Visual: How YaRN Treats Different Frequency Bands

YaRN: Three-Zone Treatment of RoPE Frequency Dimensions RoPE dimension index (0 = lowest freq / longest wavelength → d/2 = highest freq) Low-freq linear interpolation r(i) = 1 → θᵢ / s i = 0 dim α Mid-freq NTK-style ramp blend 0 < r(i) < 1 dim α dim β High-freq no change (extrapolate) r(i) = 0 → θᵢ unchanged dim β d/2 + attention temperature correction: t = 0.1·ln(s) + 1 applied globally
YaRN's three-zone scheme. Low-frequency dimensions (long wavelengths) get linear interpolation — they can be safely compressed. High-frequency dimensions (local structure) are left unchanged. Mid-frequency dimensions receive a smooth NTK-style blend. The temperature correction (purple bar) is applied on top for all dimensions to keep softmax calibrated at long context.

The Three Zones

YaRN divides the \(d/2\) frequency dimensions into three groups based on their wavelength \(\lambda_i = 2\pi/\theta_i\) relative to the training length \(L\) and target length \(L'\):

\[ \begin{aligned} &\text{Low frequency:} &&\lambda_i > L' \cdot \beta &&\longrightarrow\ \text{linear interpolation} \\ &\text{High frequency:} &&\lambda_i < L \cdot \alpha &&\longrightarrow\ \text{no change (extrapolation)} \\ &\text{Mid frequency:} &&L \cdot \alpha \le \lambda_i \le L' \cdot \beta &&\longrightarrow\ \text{NTK-like ramp} \end{aligned} \]

Default hyperparameters: \(\alpha = 1\), \(\beta = 32\) (tuned empirically). The ramp function smoothly interpolates between the two strategies across the mid-frequency range.

The Ramp Function

For each dimension \(i\), YaRN defines a blending factor \(r(i)\):

r(i) = 0   if high-frequency (no change)
r(i) = 1   if low-frequency (full interpolation)
r(i) = smooth ramp  otherwise

The effective frequency for dimension \(i\) becomes:

\[ \theta_i^{\mathrm{new}} = \big(1 - r(i)\big) \cdot \theta_i + r(i) \cdot \frac{\theta_i}{s} \]

Where \(s = L'/L\) is the scale factor. When \(r(i) = 0\): \(\theta_i\) unchanged (high-freq). When \(r(i) = 1\): \(\theta_i / s\) (full interpolation). In between: a blend.

This gives each dimension group the treatment it needs, rather than applying a single global rule.

The Attention Temperature Fix

A subtlety that NTK scaling ignores: when you change RoPE frequencies, the distribution of attention logits shifts. Longer contexts naturally produce larger dot products, and the softmax temperature becomes miscalibrated.

YaRN addresses this with a learned attention temperature correction:

\[ \operatorname{Attention}(Q, K, V) = \operatorname{softmax}\!\left( \frac{Q K^{\top}}{\sqrt{d_k} \cdot t} \right) \cdot V \]

Where \(t = 0.1 \cdot \ln(s) + 1\) (with \(s = L'/L\)). For \(s = 4\) (4× context extension), \(t \approx 1.138\).

This dampens attention logits slightly, keeping the softmax distribution well-calibrated at longer contexts. Without this correction, models tend to “spread” attention too uniformly at long range — a well-known failure mode.

Why temperature matters: At long context, if attention entropy grows unchecked, the model attends roughly equally to all tokens — losing the ability to focus on relevant information. The temperature correction counteracts this, maintaining sharp attention even over thousands of tokens.

Worked Example: YaRN on LLaMA-2 (4k → 32k)

Model: LLaMA-2 7B, \(L = 4096\), \(L' = 32768\), scale \(s = 8\). Head dim \(d = 128\), so \(d/2 = 64\) frequency pairs. Default \(\alpha = 1\), \(\beta = 32\).

Wavelength for dimension \(i\):

\[ \lambda_i = \frac{2\pi}{\theta_i} = 2\pi \cdot \mathrm{base}^{2i/d} = 2\pi \cdot 10000^{i/64} \]

Classify each dimension:

  • \(\lambda_i < L \cdot \alpha = 4096\) → high-freq, no change (\(r = 0\))
  • \(\lambda_i > L' \cdot \beta = 32768 \times 32 = 1{,}048{,}576\) → low-freq, full interpolation (\(r = 1\))
  • Otherwise → mid-freq ramp

For \(i = 60\) (near highest freq): \(\lambda_{60} = 2\pi \cdot 10000^{60/64} \approx 42{,}000\). Since \(42{,}000 > 4096\) but \(< 1{,}048{,}576\) → mid-freq ramp.

For \(i = 10\) (low-freq): \(\lambda_{10} = 2\pi \cdot 10000^{10/64} \approx 590\). Since \(590 < 4096\) → high-freq, unchanged.

For \(i = 0\) (lowest freq): \(\lambda_0 = 2\pi \cdot 10000^{0} = 6.28\). Since \(6.28 < 4096\) → high-freq, unchanged.

Temperature correction for \(s = 8\):

\[ t = 0.1 \cdot \ln(8) + 1 = 0.1 \cdot 2.08 + 1 \approx \mathbf{1.208} \]

All attention logits are divided by an extra factor of \(1.208\) on top of \(\sqrt{d_k}\), keeping softmax sharper at 32k context than without the correction.

It hits a practical sweet spot: much better than naive interpolation, easier to deploy than fully model-specific search, and cheap enough that many RoPE-based LLMs adopted it as the default long-context extension recipe.

Training Recipe

YaRN requires minimal fine-tuning:

  1. Modify RoPE with the three-zone frequency scheme
  2. Apply attention temperature correction
  3. Fine-tune for ~400 steps on long-context data (compared to thousands for full context extension training)

This makes YaRN practical: you can take an existing model (e.g., LLaMA-2 7B trained at 4096 tokens) and extend it to 128k context with a short fine-tuning run.

Results vs Other Methods

Method2k→8k quality2k→32k qualityFine-tuning steps
Linear interpolationGoodDegrades~1000
NTK scalingGoodModerate0 (but better with some)
YaRNBestBest~400

YaRN consistently outperforms both methods on long-context benchmarks (SCROLLS, LongBench) at the same scale, with less fine-tuning than linear interpolation.

Models Using YaRN

  • Mistral 7B v0.2 (context extension from 8k to 32k)
  • Qwen2 series (various context lengths)
  • LLaMA-2 fine-tuned variants (community-produced 32k/64k/128k models)

YaRN is the standard method for context extension in the open-source community.

Comparison of Context Extension Methods

MethodHigh-freqLow-freqTemperatureFine-tuneQuality
Linear interpBrokenGoodNo~1000 stepsModerate
NTK scalingGoodGoodNo0Good
NTK (dynamic)GoodGoodNo0Good
YaRNPreservedGoodYes~400Best

Summary

YaRN improves on earlier RoPE extension methods by:

  1. Treating different frequency bands differently (local, transitional, long-range)
  2. Correcting attention temperature to maintain focus at long context
  3. Requiring minimal fine-tuning (~400 steps)

It is the current community standard for extending the context of open-weight models, used in Mistral and many LLaMA derivatives.

References