모던 LLM은 눈 튀어나오는 컨텍스트 윈도우 광고해 — 128K, 1M, 10M. 그 중 거의 없는 게 원래 그 길이로 사전학습돼 있어. 마케팅 뒤엔 진지한 엔지니어링이 있어 — 컨텍스트 확장 — 8K 같은 데서 학습된 모델을 처음부터 재학습 없이 128K로 밀어 올리는 작업.
왜 어렵나
위치 인코딩은 학습 중 모델이 본 범위에 맞춰 보정돼 있어. 위치 0-8191 사이 RoPE 회전을 배운 모델은 위치 100,000이 어떻게 보여야 하는지에 대한 실제 신호가 없어. 위치 스킴을 단순 확장하면 헛소리 나와 — 익숙치 않은 상대 거리에서 attention 패턴이 잡음 같아지고, 모델이 멀리 있는 토큰을 안정적으로 참조 못 하게 돼.
뭐가 통하나
- Position Interpolation(Chen et al. 2023): RoPE에서 회전 주파수를 보간 — 확장 모델의 "위치 100,000"이 원래 모델의 "위치 8,191"에 정렬되도록. 그 다음 긴 시퀀스로 짧게 fine-tune.
- NTK-aware scaling(Reddit/EleutherAI): RoPE의 다른 주파수 차원을 다르게 스케일. 고주파 차원은 그대로(local 패턴 보존), 저주파 차원은 재스케일(새 범위 수용).
- YaRN(Peng et al. 2023): NTK-aware 스케일링을 attention temperature 조정으로 정제. Llama 3가 YaRN 스타일로 8K → 128K 확장하는 데 비교적 저렴한 fine-tuning 사용.
- Sliding window + global tokens: 아키텍처 설계 단계에서 attention을 local window + 소수 global token으로 제한. Mixtral, Gemma 3가 이걸 쓰고, LLaMA 4 Scout의 10M 컨텍스트도 비슷한 트릭에 의존.