상위: 00_00_MOC

00_03 — Transformer 어텐션 메커니즘과 KV 캐시

핵심 명제

컨텍스트 엔지니어링이 필요한 이유는 취향의 문제가 아니다. Transformer 아키텍처가 가진 두 가지 물리적 특성, 곧 n² 어텐션 복잡도와 KV 캐시 비용이 컨텍스트를 본질적인 병목으로 만든다.


1. Self-Attention의 n² 복잡도

LLM은 Transformer 아키텍처(Vaswani et al., Attention is All You Need, 2017)를 기반으로 한다. Self-Attention은 모든 토큰이 다른 모든 토큰을 바라볼 수 있게 하는 메커니즘이다. 토큰이 n개라면 그 사이에서 n² 쌍별 관계(pairwise relationships)가 만들어진다.

실질적 함의:

토큰 수쌍별 관계 수
1,0001,000,000 (1M)
10,000100,000,000 (100M)
100,00010,000,000,000 (10B)
1,000,0001,000,000,000,000 (1T)

이 관계를 빠짐없이 포착하기란 현실적으로 불가능하다. 그래서 컨텍스트가 길어질수록 모델이 각 토큰에 할당하는 어텐션은 점점 얇게 분산된다.


2. 어텐션 예산 (Attention Budget)

Anthropic(2025-09-29)이 이 현상을 “어텐션 예산”으로 개념화했다:

“LLMs have an ‘attention budget’ that they draw on when parsing large volumes of context. Every new token introduced depletes this budget by some amount, increasing the need to carefully curate the tokens available to the LLM.”

짚어둘 점은 세 가지다.

  • 어텐션 예산은 유한하다. 토큰을 더 넣을수록 토큰 하나가 받는 “어텐션 몫”은 줄어든다.
  • 불필요한 토큰은 그냥 무시되고 마는 게 아니다. 예산을 갉아먹으면서 정작 중요한 토큰의 몫까지 빼앗는다.
  • “가장 적은 수의 고신호(high-signal) 토큰”을 찾는 일이 목표가 되는 이유가 여기에 있다.

Drew Breunig(2025)의 표현:

“if you put something in the context the model has to pay attention to it.”


3. KV 캐시 (KV Cache): 비선형 메모리 비용

Transformer의 자동회귀(autoregressive) 디코딩에서는 새 토큰을 하나 생성할 때마다 그 앞에 놓인 모든 토큰의 Key-Value 벡터를 다시 계산해야 한다. 이 재계산을 피하려고 쓰는 것이 KV 캐시다.

KV 캐시 메모리 공식

KV 캐시 메모리 ≈ 2 × S × L × N × D × bytes_per_element
  • S = 시퀀스(컨텍스트) 길이
  • L = Transformer 레이어 수
  • N = 어텐션 헤드 수
  • D = 헤드당 차원 크기
  • 2 = Key + Value 두 행렬
  • bytes_per_element = 보통 2 (float16/bfloat16)

실제 사례 (LLaMA 2 70B, float16)

컨텍스트 길이KV 캐시 메모리
4K 토큰~10 GB
32K 토큰~80 GB
128K 토큰~320 GB

참고: LLaMA 3 70B는 GQA(Grouped Query Attention)를 적용해 KV 캐시를 8배 줄였다. 그래도 컨텍스트가 길어질수록 메모리가 선형 이상으로 불어나는 근본 특성은 그대로 남는다.

시사점

컨텍스트를 늘리면 두 가지 일이 한꺼번에 벌어진다.

  1. 어텐션 품질 저하 (n² 관계의 희박화)
  2. 메모리·비용 증가 (KV 캐시의 선형 증가)

두 효과가 동시에 작용하기 때문에, “1M 토큰 윈도우가 생겼으니 일단 다 넣자”는 접근은 비용은 비용대로 키우면서 품질까지 떨어뜨린다.


4. Flash Attention과 완화 기법들

n² 문제를 완화하는 기술은 여럿 있지만, 어느 것도 근본 한계를 없애지는 못한다.

기법설명한계
Flash Attention (Dao et al., 2022)IO-aware 알고리즘으로 메모리 효율 개선연산 복잡도 O(n²)는 동일
GQA (Grouped Query Attention)KV 헤드 수 감소로 캐시 절약품질 트레이드오프
Sparse Attention일부 쌍만 어텐션중요 관계 누락 위험
Sliding Window Attention로컬 윈도우만 어텐션글로벌 의존성 포착 불가

5. 아키텍처적 함의

graph LR
    TOKEN_IN[토큰 추가] --> N2[n² 쌍별 관계<br/>계산 부담 급증]
    TOKEN_IN --> KV[KV 캐시 증가<br/>메모리 선형↑]
    N2 --> ATT_THIN[어텐션 분산<br/>각 토큰 몫 ↓]
    KV --> COST[추론 비용 ↑<br/>레이턴시 ↑]
    ATT_THIN --> QUALITY[응답 품질 ↓]
    COST --> QUALITY
    QUALITY --> ROT[Context Rot<br/>→ 00_04]

    style TOKEN_IN fill:#cc0000,color:#fff
    style ROT fill:#cc66ff,color:#fff

이것이 00_04-컨텍스트-로트-Context-Rot에서 다루는 Context Rot의 물리적 토대다.


참고문헌


관련 노트: 00_02-정의-수렴과-프롬프트-비교 · 00_04-컨텍스트-로트-Context-Rot · 00_핵심용어집 · 01 오염