C.W.K.
Stream
Lesson 09 of 12 · published

컨텍스트 확장 — 왜 어렵고, 뭐가 통하나

~14 min · long-context, extension

Level 0Token
0 XP0/94 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

모던 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 컨텍스트도 비슷한 트릭에 의존.

Code

Position Interpolation — the core idea·python
# Original: positions 0..L-1 give rotation angles θ_p = p * inv_freq
# Position interpolation: rescale so that effective position is p * (L_old / L_new)
def rope_with_pi(x, L_old, L_new, base=10000.0):
    seq_len, d_head = x.shape[1], x.shape[-1]
    inv_freq = 1.0 / (base ** (torch.arange(0, d_head, 2).float() / d_head))
    scale = L_old / L_new
    t = torch.arange(seq_len, dtype=inv_freq.dtype) * scale
    # ... rest is identical to standard RoPE
    # The key change is multiplying positions by scale < 1
    # so that 'position L_new' in the new range maps to
    # 'position L_old' in the original RoPE range.

External links

Exercise

긴 컨텍스트 지원하는 모델(예: Llama 3.1 8B Instruct 128K)로 needle-in-a-haystack 벤치마크 돌려. 깊이 1K, 8K, 32K, 64K, 128K에 unique 문자열 삽입. 모델이 올바르게 검색하는지 측정. 검색 정확도 vs. 깊이 플롯.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.