어텐션 변형
SWA · GQA · MLA · RoPE / YaRN · SSM Hybrid
어텐션 변형 — SWA, GQA/MQA, MLA, RoPE/YaRN
한 줄 요약: 표준 어텐션의 메모리·속도·길이 한계를 푸는 알고리즘 변형들.
표준 트랜스포머의 어텐션은 두 가지 큰 부담을 안고 있어요. 시퀀스 길이 N에 대해 계산이 O(N²)로 늘고, 토큰마다 헤드별 K·V 벡터를 캐시해 두어야 합니다. 컨텍스트가 4K 정도일 때는 둘 다 견딜 만한데, 128K·1M으로 가면 메모리도 대역폭도 못 버텨요. 이 부록은 그 한계를 우회하는 다섯 갈래 변형 — SWA, GQA/MQA, MLA, RoPE/YaRN, Linear/SSM 하이브리드 — 을 1차 출처(논문) 기준으로 정리합니다.
KV 캐시 부록에서 본 "KV 캐시 = T × L × 2 × H_kv × d × 2 bytes" 수식을 떠올려 주세요. 이 부록의 앞 네 갈래는 그 수식의 어느 인자를 어떻게 줄이느냐의 문제이고, 마지막 한 갈래(Linear/SSM 하이브리드)는 "어텐션 레이어 자체를 다른 시퀀스 모델로 일부 갈아끼우는" 더 공격적 방향이에요.
| 변형 | 줄이는 인자 | 핵심 아이디어 |
|---|---|---|
| SWA | 유효 T를 W로 클램프 | 각 토큰이 최근 W 토큰만 attend |
| GQA/MQA | H_kv | 여러 Q 헤드가 같은 K/V 헤드를 공유 |
| MLA | H_kv × d | K/V 자체를 저차원 잠재 벡터로 압축 |
| RoPE/YaRN | (T 자체는 유지) | 학습 컨텍스트를 넘는 길이로 확장 가능하게 함 |
| Linear/SSM 하이브리드 | L 일부 (어텐션 레이어 수) | 일부 레이어를 Gated DeltaNet·Mamba-2로 대체 |
0. 출발점 — 표준 어텐션의 비용
트랜스포머 추론의 두 단계 부록에서 본 것처럼, 어텐션은 토큰 t의 Query를 모든 이전 K와 곱해 attention score를 만들고 그것으로 V를 가중합해요. 이 한 단계에 두 가지 비용이 들어가요.
- 계산: 시퀀스 길이 N에 대해 O(N²·d). Prefill에서 가장 무거운 부분
- 메모리: 헤드별 K/V를 토큰마다 누적. Decode에서 매 스텝 전체를 다시 읽어야 함 (대역폭 병목)
표준 Multi-Head Attention(MHA)은 H개의 Q 헤드 각각이 자기 K 헤드·V 헤드를 따로 갖습니다. 헤드 수가 32, head_dim이 128, 레이어가 80, 컨텍스트가 128K라면 토큰 1개·레이어 1개당 K·V로만 32 × 128 × 2 × 2 bytes = 16 KiB. 128K 토큰이면 레이어당 2 GiB, 80레이어면 160 GiB가 됩니다. 모델 가중치가 140 GB쯤인 70B 모델에서 캐시 단독으로 가중치를 추월해요.
이 곡선을 평평하게 만드는 네 갈래 길이 아래 절들이에요.
1. Sliding Window Attention (SWA)
1.1 메커니즘
각 토큰이 앞쪽 W개 토큰까지만 attend합니다. 윈도우 밖은 mask로 막아요. 한 레이어에서 보는 거리는 W로 잘리지만, 레이어를 여러 개 쌓으면 receptive field(영향을 받을 수 있는 토큰의 범위)가 누적돼요. Mistral 7B 논문(arxiv 2310.06825 §2 Sliding Window Attention)에 적힌 그대로 옮기면 "each token can attend to at most W tokens from the previous layer" — 한 레이어에서 W, 두 레이어에서 2W, k 레이어에서 k·W까지 거슬러 올라갑니다.
Mistral 7B는 32 레이어 × W=4096이라 이론상 약 131K 토큰까지의 정보가 t에 도달할 수 있어요. 실제 모델 카드는 sliding_window=4096·max_position_embeddings=32,768로만 공개돼 학습 단계의 정확한 시퀀스 길이는 명시되지 않았지만, 이 누적 구조 덕에 SWA가 "윈도우 밖은 완전히 못 본다"가 아닌 거예요.
1.2 등장 모델
| 모델 | 윈도우 W | 패턴 | 출처 |
|---|---|---|---|
| Longformer (2020) | 가변 (작업별 튜닝) | 로컬 SWA + task-driven global | arxiv 2004.05150 |
| Mistral 7B (2023) | 4096 | 전 레이어 SWA | arxiv 2310.06825 |
| Gemma 2 (2024) | 4096 | local/global 1:1 alternating | arxiv 2408.00118 |
Longformer가 SWA의 시초예요. 어텐션 복잡도를 O(n²) → O(n·w)로 떨어뜨려 시퀀스 길이에 선형으로 만든 게 핵심 기여이고(arxiv 2004.05150 §1), text8/enwik8 캐릭터 모델링과 WikiHop·TriviaQA 긴 문서 QA에서 RoBERTa를 일관되게 앞섰어요. Mistral 7B는 이 아이디어를 디코더 LLM 본류에 적용해 W=4096으로 못 박아 두었고, Gemma 2는 그것을 local/global을 매 레이어 번갈아 쌓는 형태로 진화시켰습니다.
Gemma 2의 구체 스펙(arxiv 2408.00118 §2.1):
| 모델 | 레이어 | Q 헤드 | KV 헤드 | head_dim | local SWA |
|---|---|---|---|---|---|
| Gemma 2 2B | 26 | 8 | 4 | 256 | W=4096, 1:1 |
| Gemma 2 9B | 42 | 16 | 8 | 256 | W=4096, 1:1 |
| Gemma 2 27B | 46 | 32 | 16 | 128 | W=4096, 1:1 |
(head_dim 은 SWA 하에서 캐시 크기에 직접 곱해지는 인자라 의미가 있어요 — 같은 W=4096 이라도 2B/9B 가 27B 보다 토큰당 캐시가 두 배예요.)
local 레이어는 캐시 크기가 W에 고정(컨텍스트 길이와 무관), global 레이어만 컨텍스트 T에 비례합니다. KV 캐시 부록에서 다룬 Gemma4의 hybrid attention(SWA 5 + Global 1 패턴)은 이 흐름의 후속 세대예요.
1.3 Rolling Buffer Cache
SWA의 KV 캐시는 더 줄일 수 있어요. 어차피 윈도우 밖 토큰은 안 보니까, 캐시 크기 자체를 W로 고정해 두고 위치 i mod W에 새 K/V를 덮어쓰면 됩니다(Mistral 논문 §2 Rolling Buffer Cache).
| 위치 i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ... |
|---|---|---|---|---|---|---|---|---|---|
버퍼 슬롯 (i mod W, W=4) | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | ... |
위 표에서 i = 0..3이 사이클 1, i = 4..7은 사이클 2로 사이클 1이 쓴 슬롯을 그대로 덮어써요(cycle 2 overwrites cycle 1).
논문이 보고한 이득(§2 Rolling Buffer Cache): 시퀀스 길이 32K, W=4096일 때 캐시 메모리 8배 감소, 품질 손실 없음. 32K/4096 = 8 그대로예요.
1.4 Attention Sinks — StreamingLLM
순수 SWA는 한 가지 함정이 있어요. 컨텍스트가 학습된 윈도우보다 길어지는 순간 perplexity(다음 토큰 확률 분포의 불확실성 척도)가 폭발합니다. StreamingLLM 논문(arxiv 2309.17453)이 보고한 LLaMA-2-13B는 윈도우만 굴리면 PPL 5158, 즉 모델이 사실상 망가져요.
원인은 SoftMax의 구조적 제약이에요. SoftMax는 attention score의 합이 1이 되어야 하므로, 의미상 attend할 곳이 마땅치 않아도 어딘가에는 점수를 부어야 합니다. 학습 중 모든 토큰이 보던 자리 — 시퀀스의 첫 몇 개 토큰 — 이 그 "어딘가" 역할을 떠맡게 돼요. 모델은 처음 몇 토큰을 "쓸 곳 없는 attention의 폐기물장"으로 활용하도록 길러진 것이고, 이를 Attention Sink라고 불러요.
순수 SWA로 윈도우를 굴리면 이 sink 토큰들이 캐시에서 빠집니다. 그 순간 SoftMax는 폐기물장을 잃고 attention score 분포가 망가져요. 해결은 단순해요 — 첫 4개 토큰의 K/V는 절대 버리지 않고, 그 뒤로만 W 크기 윈도우를 굴립니다.
논문 보고 수치(§3·§4):
| 항목 | 수치 |
|---|---|
| 안정 스트리밍 | 최대 4M 토큰 (LLaMA-2 / MPT / Falcon / Pythia 검증) |
| LLaMA-2-13B PG19 PPL | window-only 5158 vs StreamingLLM 5.4 |
| Decode 속도 | sliding-window-recomputation 대비 최대 22.2배 (A6000) |
| 학습 시 dedicated sink token | vanilla 4-sink 필요 → 1-sink 토큰만으로 PPL 18.01 |
22.2배 속도는 단순 SWA가 아니라 "윈도우 밖 토큰을 매번 다시 prefill" 하는 baseline 대비예요. recomputation은 O(T·L²), StreamingLLM은 O(T)라 컨텍스트가 길어질수록 격차가 벌어집니다.
1.5 한계와 트레이드오프
SWA의 본질적 한계는 *"윈도우보다 멀리 떨어진 두 토큰의 직접 상호작용은 없다"*예요. 레이어 누적으로 정보가 흘러가기는 하지만 그것은 hop을 거친 전언이지 직접 연결은 아니죠. 책 한 권 분량에서 1장의 단어와 20장의 단어가 한 번도 같은 어텐션 행렬 안에 있지 않다면, 두 단어를 동시에 비교하며 답해야 하는 질문(예: 책 전체에서 한 번만 등장하는 인물 추적)에서 약해집니다.
Sink는 이 한계를 일부만 완화해요. Sink가 보존하는 건 "처음 몇 토큰의 K/V"이지 "멀리 있는 임의 토큰의 K/V"가 아니라서, 장거리 retrieval(멀리 있는 토큰을 정확히 끄집어 오기) 자체는 여전히 SWA의 약점이에요.
2. KV 헤드 공유 — GQA / MQA
2.1 표준 MHA → MQA → GQA의 그라데이션
MHA는 Q 헤드 H개 각각에 자기 K 헤드·V 헤드를 짝지어 두는 구조예요. MQA(Multi-Query Attention) 는 그 반대 극단으로, K·V 헤드를 딱 1개로 줄여 모든 Q 헤드가 공유합니다. GQA(Grouped-Query Attention, arxiv 2305.13245) 는 그 중간이에요.
GQA 논문(§2)의 정의를 그대로 옮기면 "divides query heads into G groups, each of which shares a single key head and value head" — Q 헤드 H개를 G개 그룹으로 나누고, 각 그룹이 K/V 헤드 하나를 공유합니다. G=H면 MHA, G=1이면 MQA, 그 사이가 GQA-G예요.
KV 캐시는 H_kv에 정확히 비례하므로, GQA-8(G=8)은 H=64인 모델에서 캐시를 8배 줄여요. Q 헤드 수는 그대로라 attention 표현력은 거의 유지됩니다.
2.2 등장 모델
| 모델 | H_q | H_kv | G |
|---|---|---|---|
| LLaMA-2 70B | 64 | 8 | 8 |
| Mistral 7B | 32 | 8 | 8 |
| Gemma 2 27B | 32 | 16 | 16 |
| LLaMA-3 70B | 64 | 8 | 8 |
표기 약속: G = KV head 수 (= 그룹 수). 한 그룹은 H_q/G 개의 Q head 를 묶어요. GQA 논문(arxiv 2305.13245 §2.2) 정의 그대로 — "GQA-G refers to grouped-query with G groups. GQA-1 ... is equivalent to MQA, while GQA-H ... is equivalent to MHA."
LLaMA-2 70B 부터 본격적으로 GQA가 디코더 LLM의 표준이 되었어요. "capacity와 inference speed의 균형" 이라는 GQA 논문 본래 동기가 그대로 산업 채택의 이유였습니다.
2.3 보고된 수치 — 실제 얼마나 빠른가
GQA 논문 §3.2 Table 1, T5-XXL 인퍼런스 시간(샘플당 초):
| 변형 | 시간 | Rouge-1 평균 | 속도 이득 (vs MHA) |
|---|---|---|---|
| MHA-XXL | 1.51 s | 47.2 | 1.0× |
| MQA-XXL | 0.24 s | 46.6 | 6.3× |
| GQA-8-XXL | 0.28 s | 47.1 | 5.4× |
논문이 직접 인용한 결론은 "uptrained GQA achieves quality close to multi-head attention with comparable speed to multi-query"(Abstract) — GQA-8은 MQA 속도 이득의 대부분을 가져오면서 품질은 MHA 쪽에 가깝게 유지해요. MQA 단독은 품질이 0.6 떨어지는데 GQA-8은 0.1만 떨어집니다.
2.4 Uptraining — 이미 학습된 MHA를 GQA로 바꾸는 비용
GQA 논문의 또 다른 기여는 "기존 MHA 체크포인트를 5%의 사전학습 컴퓨트만 들여 GQA로 변환할 수 있다" (§4)는 점이에요. 새 K/V 헤드를 만드는 방식은 mean pooling — 같은 그룹에 속하는 H/G개의 K(또는 V) projection 행렬을 평균 내서 한 행렬로 합칩니다. 그 후 α=0.05만큼의 토큰으로 짧게 추가 학습. 약 600 TPUv3 chip-day로 70B급 모델이 GQA로 변환돼요.
이 절차 덕에 LLaMA-2가 후속 세대에서 일관되게 GQA로 전환될 수 있었고, 산업 전체가 빠르게 GQA로 수렴한 실용적 배경이기도 해요.
2.5 트레이드오프
| 변형 | 캐시 | 속도 | 품질 |
|---|---|---|---|
| MHA | 1 (기준) | 1× | 최고 |
| MQA | 1/H | 6.3× | 약간 ↓ (Rouge -0.6) |
| GQA-8 | 1/8 | 5.4× | ≈ MHA (Rouge -0.1) |
MQA는 G=1이라 K·V 표현력이 너무 좁고, 헤드 사이의 다양성이 사라지면서 긴 시퀀스에서 품질 하락이 두드러져요. 그래서 산업 표준은 G=4~8 범위의 GQA로 수렴했습니다.
3. MLA — 잠재 차원 압축 (DeepSeek)
3.1 메커니즘
MLA(Multi-head Latent Attention, DeepSeek-V2 arxiv 2405.04434 §2.1)는 GQA의 다음 단계예요. GQA가 "K/V 헤드 수를 줄이는" 데 그쳤다면, MLA는 *"K/V 자체를 저차원 잠재 벡터로 압축한 다음 캐시"*합니다.
핵심 식 세 줄(논문 (37)–(40)):
c_t^KV = W^DKV * h_t # down-projection h_t -> c_t (low-rank)
k_t^C = W^UK * c_t^KV # up-projection back to per-head K
v_t^C = W^UV * c_t^KV # up-projection back to per-head V
h_t는 토큰 t의 hidden state, c_t^KV는 새로 도입된 잠재 벡터예요. 캐시에는 c_t^KV 하나만 저장하고, 어텐션 계산이 필요할 때마다 W^UK·W^UV로 다시 풀어 K·V를 만들어 씁니다.
3.2 차원 (DeepSeek-V2 기준)
논문 §2.1.3·Appendix C:
| 기호 | 의미 | DeepSeek-V2 값 |
|---|---|---|
| d_h | 헤드 차원 | 128 |
| n_h | 헤드 수 | 128 |
| d_c | KV 압축 차원 | 512 (= 4·d_h) |
| d_c' | Query 압축 차원 | 1536 |
| d_h^R | decoupled RoPE 차원 | 64 |
토큰 1개·레이어 1개당 캐시 크기:
MLA per-token cache = (d_c + d_h^R) elements per layer
= (512 + 64) = 576 elements
~ 9/2 * d_h elements (논문 §2.1.4)
MHA였다면 같은 자리에 2 × n_h × d_h = 2 × 128 × 128 = 32,768 elements가 들어가요. 절감률은 32,768 / 576 ≈ 57배예요.
캐비어트: 이 57× 는 V2 자체의 헤드 구성(n_h=128, d_h=128)을 MHA 로 두었다고 가정한 산술 비교(논문 §2.1.4 "Comparison of Key-Value Cache"). 뒤이어 나오는 93.3% 수치는 다른 베이스 — 실제로 학습된 DeepSeek 67B(MHA, n_h=64) 와의 비교(Abstract / §1) — 라서 두 수치는 같은 모델 안에서의 같은 비교가 아니에요.
3.3 RoPE와의 충돌 — Decoupled RoPE
MLA의 마법은 "K/V를 W^UK·W^UV로 다시 풀 때, 그 행렬을 Q·O 행렬에 미리 흡수해 두면 inference 시 풀 필요조차 없다"(matrix absorption)는 트릭에 있어요. 그런데 RoPE를 통상 위치마다 K에 곱해 버리면 흡수가 깨집니다. Q·K 사이에 위치 의존 회전이 끼어 들어가서 "K = W^UK · c" 의 분해 구조가 무너져요.
해결은 "위치 정보 부분만 따로 떼어낸다"(§2.1.3 Decoupled RoPE)는 아이디어예요.
k_t = [ W^UK * c_t^KV ; RoPE(W^KR * h_t) ]
|--- 압축 가능 ---| |--- 별도 RoPE ---|
no position info position info
K를 두 부분으로 쪼개서, 한쪽(W^UK * c_t^KV)은 위치 정보 없이 흡수 가능하고, 다른 쪽(RoPE(W^KR * h_t))만 위치 회전을 받아요. 캐시에는 c_t^KV(공유)와 W^KR * h_t의 RoPE 적용본만 저장하면 됩니다. 그래서 총 캐시 = (d_c + d_h^R) × layer가 된 거예요.
3.4 보고된 수치
DeepSeek-V2 논문 Abstract / §1 Introduction (요약 수치는 §3.2.3 Training and Inference Efficiency 와 Figure 1(b) 에도 동일하게 보고):
| 항목 | DeepSeek 67B (MHA) | DeepSeek-V2 (MLA) |
|---|---|---|
| KV 캐시 (per token) | 기준 | -93.3% |
| Generation throughput | 기준 | 5.76× |
| 활성 파라미터 / 총 파라미터 | 67B / 67B (dense) | 21B / 236B (MoE) |
KV 캐시 93.3% 절감, 처리량 5.76배. MoE와 묶이면서 같은 GPU에서 들고 있을 수 있는 컨텍스트가 자릿수로 바뀌는 효과예요. KV 캐시 부록에서 본 GLM-5.1의 "1.5 TB 모델인데 캐시는 약 17.0 GiB" 가 같은 메커니즘의 결과입니다.
3.5 GQA·MQA·MLA 비교
| 변형 | 토큰당 캐시 (개념) | DeepSeek-V2 환산 (elements) | 압축률 (vs MHA) |
|---|---|---|---|
| MHA | 2 · n_h · d_h | 32,768 | 1× |
| GQA-G | 2 · G · d_h | 2,048 (G=8) | 16× |
| MQA | 2 · 1 · d_h | 256 | 128× |
| MLA | d_c + d_h^R | 576 | 57× (논문 보고 93.3%) |
MQA가 산술적으로는 MLA보다 작아 보이지만, MLA는 "d_c가 표현력 있는 잠재 차원이라 Q 표현 다양성이 살아 있다" 는 차이가 있어요. MQA는 H_kv=1이라 K/V가 모든 Q 헤드에 동일하게 보이는데, MLA는 c에서 W^UK·W^UV로 헤드별로 다른 K·V를 복원하므로 헤드 다양성이 보존됩니다. 그래서 "캐시는 MQA에 가깝고 품질은 MHA에 가깝다" 는 절충이 가능해요.
4. 위치 인코딩 — RoPE / YaRN
4.1 RoPE 핵심 — 회전으로 위치를 곱셈 결합
RoPE(Rotary Position Embedding, arxiv 2104.09864) 는 position embedding을 더하는 대신 Q·K 벡터에 위치 의존 회전을 곱하는 방식이에요. 핵심 식은 두 줄:
theta_i = 10000^(-2(i-1)/d) # i = 1..d/2
R_m = block-diag of 2x2 rotations # by m * theta_i
토큰 t의 Q를 차원 단위로 두 개씩 묶어 (q_{2i}, q_{2i+1}) 페어를 만들고, 그 페어를 각도 m·θ_i 만큼 회전시켜요. m은 토큰의 절대 위치, θ_i는 차원 페어별로 다른 기본 주파수입니다. 낮은 차원일수록 빠르게 회전하고, 높은 차원일수록 느리게 회전해요.
핵심 성질: Q와 K가 모두 같은 방식으로 회전 후 내적을 취하면
(R_m * q)^T (R_n * k) = q^T * R_{n-m} * k
위치 m, n의 절대 회전이 내적 단계에서 상대 위치 (n-m) 만 남기는 행렬로 바뀝니다. 즉 모델은 절대 위치를 외워두는 게 아니라, "두 토큰이 얼마나 떨어져 있는가"라는 상대 정보를 보게 돼요. 더하는 방식이 아니라 곱하는 방식이라 임베딩 norm을 건드리지 않는다는 부수 효과도 있고요.
4.2 학습 컨텍스트를 넘으면 무슨 일이 일어나는가
RoPE를 학습 컨텍스트 L=4096에서 학습한 모델에 8192번째 토큰을 넣으면, m·θ_i가 학습 중 본 적 없는 큰 각도를 만들어요. 모델이 그 각도에서 의미 있는 어텐션 패턴을 본 적이 없으니 위치 외삽 실패가 일어납니다. perplexity가 폭발하고, 길어질수록 답이 무너져요. 컨텍스트를 늘리려면 단순히 토큰을 더 넣는 게 아니라, "각도 영역 자체를 어떻게 다룰지" 를 다시 정해 줘야 해요.
4.3 YaRN — NTK-by-parts 보간
YaRN (Yet another RoPE extensioN, arxiv 2309.00071) 는 컨텍스트 확장 기법들을 종합한 결과물이에요. 그 흐름을 한눈에 정리하면:
| 기법 | 핵심 아이디어 | 약점 |
|---|---|---|
| Position Interpolation (PI) | 모든 차원을 일률적으로 s배 보간 (m → m/s) | 고주파 차원 정보가 뭉개짐 |
| NTK-aware | base θ를 조정해 고주파 보존 | 저주파 차원이 여전히 외삽 영역 |
| NTK-by-parts | 차원별 wavelength로 차등 보간 | 학습 부족 시 attention 분포 왜곡 |
| YaRN | NTK-by-parts + attention temperature | (학습 필요) |
YaRN의 두 가지 칼날:
(1) NTK-by-parts 보간. 차원 i의 wavelength를 λ_i = 2π / θ_i로 정의해요. λ_i가 학습 컨텍스트 L보다 짧으면(=빠르게 회전하는 차원) 외삽이 별 문제 없으니 보간하지 않고, λ_i가 L을 넘기면(=느리게 회전하는 차원) PI처럼 보간해요. 그 사이 영역은 ramp 함수로 부드럽게 섞습니다. 차원별로 "외삽 vs 보간" 을 갈라치는 게 핵심.
(2) Attention temperature. 컨텍스트가 길어지면 attention score의 entropy가 커져서 분포가 평평해지는 부작용이 있어요. YaRN은 그걸 보정하기 위해 score를 1/√t로 스케일하는데, t는 다음 식으로 정해요(논문 §3.3):
1/sqrt(t) = 0.1 * ln(s) + 1
s는 확장 배수(extended_context / original_context). s=32(4K → 128K)면 1/√t ≈ 1.347, attention score를 그만큼 크게 스케일해서 분포가 너무 퍼지지 않도록 잡아요.
4.4 YaRN 보고 수치
LLaMA-2 7B를 4K → 128K로 확장(논문 §4 Table 4):
| 컨텍스트 | PPL (Proof-pile) |
|---|---|
| 64K | 2.70 |
| 128K | 2.37 |
학습 효율 (논문 abstract 기준):
- PI 대비 2.5배 적은 학습 스텝
- PI 대비 10배 적은 토큰 (논문 abstract: "10x less tokens")
- 400 학습 스텝, passkey retrieval 정확도 99.4%
이전 PI 방식이 "수만 스텝 + 수십 GB 토큰" 을 요구했던 것에 비하면 컨텍스트 확장의 비용이 자릿수로 떨어진 셈이에요. 현재의 200K~1M 컨텍스트 모델 대부분이 YaRN 또는 그 변형을 쓰는 배경입니다.
5. Linear Attention / SSM Hybrid — 어텐션을 부분적으로 대체하기
5.1 동기 — 어텐션을 줄이는 게 아니라 비우는 길
§1~§3 의 변형들은 모두 "표준 어텐션을 유지하되 어떤 인자를 줄이느냐" 의 문제였어요. SWA는 유효 T를, GQA/MLA는 KV의 폭을 줄이죠. 하지만 둘 다 어텐션 그 자체 — softmax 위에서 모든 토큰 쌍의 점수를 계산하는 O(N²) 연산과 토큰마다 누적되는 KV 캐시 — 는 그대로 남겨둬요. 컨텍스트가 1M으로 가면 "인자를 곱한 절감" 만으로는 한계에 부딪힙니다.
다른 길이 있어요. "어텐션 레이어 자체를 다른 시퀀스 모델로 갈아끼우자" — 단, 전부가 아니라 일부만. 갈아끼우는 후보가 두 갈래로 발달했어요.
- Linear Attention 계열: softmax를 커널로 근사해 O(N²) → O(N). Gated DeltaNet이 현재 대표
- SSM(State Space Model) 계열: RNN처럼 고정 크기 hidden state를 굴리되 selective scan으로 토큰별 게이팅. Mamba-2가 대표
두 갈래 모두 공통점이 있어요. 시퀀스 길이에 무관한 고정 크기 hidden state 를 들고 다닌다는 점. KV 캐시처럼 토큰마다 자라지 않아요. 대신 "임의 토큰을 정확히 끄집어 오는 long-range retrieval" 에서 약점이 있어, 모든 레이어를 이걸로 채우면 정확도가 떨어집니다. 그래서 산업이 수렴한 답이 하이브리드 — 대부분 레이어를 Linear/SSM으로 두고, 몇 개 레이어만 표준(혹은 GQA·MLA) 어텐션으로 남겨 retrieval을 책임지게 하는 구조예요.
5.2 Gated DeltaNet — Linear Attention의 현재 선두주자
Gated DeltaNet(Yang·Kautz·Hatamizadeh, "Gated Delta Networks: Improving Mamba2 with Delta Rule", ICLR 2025)는 두 가지 메커니즘을 결합해요.
- Delta rule: error-correcting update. 새 키-값 쌍이 들어올 때, 기존 state에 "이미 비슷한 게 있으면 덮어쓰고, 없으면 추가"하는 방식으로 표적 갱신
- Gate: 각 스텝마다 hidden state의 일부를 망각. 망각률을 조절해 "빠른 메모리 삭제" 가능
논문 abstract 그대로 "gating enables rapid memory erasure while the delta rule facilitates targeted updates" — 두 메커니즘이 보완적이에요. delta rule만으로는 "한참 전에 들어온 잡음" 을 빼낼 길이 없고, gate만으로는 "필요한 것만 정밀하게 갱신" 할 수 없어요. 합치면 둘 다 됩니다.
게이트 형태의 차이:
- Qwen3-Next: head당 scalar gate 1개. 한 헤드의 hidden state 전체에 같은 망각률 적용
- Kimi Linear: channel-wise gate. feature dimension마다 다른 망각률 (더 표현력은 높지만 파라미터·연산 증가)
논문은 또한 "Gated DeltaNet 레이어를 sliding window attention 또는 Mamba2 레이어와 섞은 하이브리드" 가 학습 효율과 작업 성능 모두에서 우월함을 보고했어요(abstract). 즉 "전부 Linear" 가 아니라 "부분 Linear + 부분 어텐션" 이 정답이라는 결론이 논문 단계에서 이미 박혀 있었던 셈입니다.
5.3 Mamba-2 / SSM — 상태 공간 모델의 selective scan
SSM은 RNN을 제어이론에서 빌려온 형태로 다시 쓴 모델이에요. 토큰을 시간 단위로 보고, hidden state를 그 시간에 따라 굴립니다.
h_t = A · h_{t-1} + B · x_t # state 업데이트 (state update)
y_t = C · h_t # 출력 (output)
h_t는 N차원 hidden state (Mamba-2에서 보통 64~256). 표준 RNN과 다른 점은 B·C·Δ(step size)가 입력에 의존한다는 거예요. Mamba 원 논문(arxiv 2312.00752)에서 "selective scan" 이라 부른 메커니즘으로, "이번 토큰은 무엇을 기억할지 / 잊을지" 를 토큰별로 동적으로 정해요. RNN의 "고정된 망각 규칙" 약점을 푼 거예요.
Mamba-2(Tri Dao, 블로그)는 그 위에 "A를 scalar × identity 구조로 제약" 해 GPU 친화적 행렬 연산으로 풀어냈어요. 같은 식이 "매트릭스 형태의 어텐션" 으로도 해석되며, 이 이중 시점이 attention과 SSM을 잇는 다리가 됩니다.
복잡도는 O(T) 추론·O(1) per-step. KV 캐시 자리에 고정 크기 hidden state(N=64~256) 만 들고 다니므로, 컨텍스트가 100K로 가든 1M으로 가든 메모리는 그대로예요. 단점은 "임의 토큰을 정확히 가리켜 끄집어 오기" 가 어렵다는 점 — RNN의 본질적 한계가 남아 있어요.
5.4 Mamba-3 (ICLR 2026) — 다음 세대 SSM
Mamba-3(Lahoti·Li·Chen·Wang·Bick·Kolter·Dao·Gu, "Mamba-3: Improved Sequence Modeling using State Space Principles", ICLR 2026 Oral)는 Mamba-2 이후 3년 만의 큰 업데이트예요. 핵심 개선 3가지:
- 개선된 discretization 기반 recurrence: SSM의 연속 시간 식을 이산화하는 단계를 다시 설계해 더 표현력 있는 메모리 업데이트 가능
- Complex-valued state update: hidden state를 복소수로 확장. 위상(phase) 정보를 직접 다루게 되어 "카운팅·주기 추적" 같은 state-tracking 작업에서 강점
- MIMO formulation: 기존 SSM이 SISO(single-input single-output)였던 것을 multi-input multi-output으로 확장. 디코딩 지연을 늘리지 않으면서 표현력 확대
논문 보고 수치(1.5B 규모, downstream 평균 정확도): "Mamba-3 improves average downstream accuracy by 0.6 percentage points compared to the next best model (Gated DeltaNet), with the MIMO variant further improving accuracy by an additional 1.2 points" — 베이스 +0.6 pp, MIMO 변형 +1.2 pp 추가, 합 +1.8 pp.
상용 프론티어 모델에 아직 반영된 사례는 없지만, Gated DeltaNet이 발표 9개월 만에 Qwen3-Next에 들어간 전례를 보면 2026 하반기 차세대 오픈소스(Qwen 4, Nemotron 4 등) 채택 가능성이 큽니다.
5.5 하이브리드 레이어 패턴 — 산업 채택 사례 셋
세 갈래 하이브리드가 동시에 상용화되었어요. 패턴은 제각각이지만 "대부분 레이어는 저비용, 소수만 표준 어텐션" 이라는 원칙은 공통.
Qwen3-Next 80B-A3B (vLLM 블로그, 2025-09):
- 3:1 비율 (Gated DeltaNet 3개 : Full Attention 1개) 로 인터리브
- MoE: 80B 총 파라미터, 활성 3B / 토큰 (1:50 활성화 비율)
- 1M 컨텍스트 지원, 동급 순수 Transformer 대비 KV 약 4배 작음 (1M에서 약 25 GB)
- vLLM은 hybrid KV cache 시스템으로 linear/full 어텐션 메모리를 자동 튜닝
- 후속 Qwen3.6-27B는 64 레이어 중 16개만 full → 약 1:3 (full:linear) 비율로 더 공격적
- Qwen3.6-35B-A3B도 같은 3:1 패턴이에요. 40 레이어 중 30개가 linear attention(linear attention, 컨텍스트 길이에 대한 메모리 증가가 표준 attention보다 작은 구조), 10개가 full attention(full attention, 전체 문맥을 보는 attention)이고, MoE(Mixture of Experts, 여러 전문가 블록 중 일부만 켜는 구조)는 256 experts 중 8 routed + 1 shared를 활성화해요
Nemotron 3 Super 120B-A12B (NVIDIA Developer 블로그):
- 반복 패턴:
Mamba-2 → Latent MoE → Mamba-2 → Attention → Mamba-2 → Latent MoE - 총 120B / 활성 12B (10:1 sparse MoE)
- Native 1M 컨텍스트
- 표준 Transformer 대비 메모리·연산 4× 효율, 이전 Nemotron Super 대비 처리량 5×+
- B200 위 NVFP4 사전학습으로 H100 FP8 대비 추론 4× 가속
Gemma 4 26B-A4B (KV 압축 아키텍처 참조 §4):
- 30 레이어 = SWA 25층(W=1024) + Global 5층
- MoE(Mixture of Experts, 여러 전문가 블록 중 일부만 켜는 구조): 128 experts 중 토큰당 top-k 8개를 활성화
- 256K 컨텍스트 KV 약 5.2 GiB (표준 30층×256K 대비 약 91% 감소) — SWA 25층 0.20 GiB 고정 + Global 5층 5.00 GiB(T 비례)
- Global 레이어는
num_global_key_value_heads=2,global_head_dim=512를 써요. 일반 GQA의 KV head 수만 보면 실제 KV 크기를 과대평가할 수 있습니다
세 사례는 "하이브리드" 라는 같은 단어를 쓰지만 다른 축을 섞고 있어요 — Qwen3-Next는 Linear vs Full을, Nemotron은 SSM vs Attention을, Gemma 4는 SWA(로컬) vs Global을 섞습니다. 셋 다 "전부 표준 어텐션" 보다 한 자릿수 이상 효율을 얻어요.
5.6 계보 비교 — MHA에서 하이브리드까지
| 방식 | 시간 복잡도 | 토큰당 캐시 | 정확도 (질적) | 대표 모델 |
|---|---|---|---|---|
| MHA | O(N²·d) | 2·H·d (전체) | 최고 | Llama 2 |
| MQA | O(N²·d) | 2·d (1개 공유) | 약간 ↓ | PaLM |
| GQA-G | O(N²·d) | 2·G·d (그룹 공유) | ≈ MHA | Llama 3, Mistral, Gemma 2 |
| MLA | O(N²·d) | d_c + d_h^R (잠재 압축) | ≈ MHA | DeepSeek V2/V3, GLM-5.1 |
| Linear (Gated DeltaNet) | O(N·d) | 0 (고정 hidden state) | retrieval 약점 | (단독으로는 안 씀) |
| Mamba-2 SSM | O(N) | 0 (고정 N차원 state) | retrieval 약점 | (단독으로는 안 씀) |
| SWA(W) | O(N·W·d) | 2·H·d × min(T, W) | 멀리 ↓ | Mistral 7B |
| Linear + Full 하이브리드 | 일부 O(N²) + 다수 O(N) | 일부 레이어만 KV | ≈ MHA (검증됨) | Qwen3-Next, Qwen3.6 |
| Mamba + GQA + MoE 하이브리드 | 다수 O(N) + 소수 O(N²) | 소수 GQA 레이어만 KV | ≈ MHA (검증됨) | Nemotron 3 Nano/Super |
| SWA + Global 하이브리드 | 다수 O(N·W) + 소수 O(N²) | 로컬 고정 + 글로벌 소량 | ≈ MHA (검증됨) | Gemma 3/4 |
표를 위에서 아래로 읽으면 "줄이는 단위" 가 점점 커져요 — 헤드 → 헤드의 차원 → 레이어. 마지막 세 줄(하이브리드)은 "레이어 단위로 어텐션을 갈아끼우는" 가장 공격적 방향이고, 1M 컨텍스트 시대의 사실상 표준이 되었습니다.
5.7 트레이드오프
하이브리드의 본질적 약점 셋:
- State capacity: 고정 크기 hidden state(64~256차원)에 모든 과거를 압축. 매우 긴 문서에서 "한 번만 등장한 디테일" 이 흔적 없이 사라질 수 있어요. 그래서 retrieval 책임을 지는 full attention 레이어가 "몇 개" 는 필요해요
- KV cache 분할 관리: vLLM 등 추론 엔진이 "linear state" 와 "표준 KV cache" 를 동시에 관리해야 해서 메모리 풀 설계가 복잡. Qwen3-Next 도입이 vLLM에 hybrid KV cache 기능을 추가하게 만든 배경
- 레이어 비율 튜닝: 3:1, 1:3, 25:5 등 모델마다 비율이 다른데 "왜 그 숫자인가" 의 명확한 이론은 아직 없음. 경험적 절충
그럼에도 "1M 컨텍스트에서 25 GB KV" 같은 수치는 순수 표준 어텐션으로는 도달 불가능한 영역이에요. 메모리 절감이 정확도 손실보다 훨씬 큰 게 현 산업의 합의이고, 2026년 차세대 모델 대부분이 이 길을 따를 가능성이 높아요.
6. 통합 비교 표
| 변형 | 메모리 (KV) | 속도 | 품질 | 길이 |
|---|---|---|---|---|
| MHA | 기준 (2·H·d) | 기준 | 최고 | 학습 컨텍스트 한정 |
| MQA | 1/H | 6.3× | 약간 ↓ (-0.6 R1) | 동일 |
| GQA-8 | 1/8 | 5.4× | ≈ MHA (-0.1 R1) | 동일 |
| MLA | ~1/57 (-93.3%) | 5.76× | ≈ MHA | 동일 |
| SWA(W) | O(L·W), W에 고정 | 2× (FA 대비) | 멀리 ↓ | 무한 (StreamingLLM) |
| Linear+Full 하이브리드 | 일부 레이어만 KV (~1/4) | (3:1 기준) | ≈ MHA | 1M (Qwen3-Next) |
| Mamba 하이브리드 | 소수 GQA 레이어만 KV | 4× 효율 | ≈ MHA | 1M (Nemotron 3) |
| SWA+Global 하이브리드 | 로컬 고정 + 글로벌 소량 (-93%~-91%) | (다층 SWA) | ≈ MHA | 256K (Gemma 4) |
| CSA+HCA (Compressed Sparse Attention + Heavily Compressed Attention) 하이브리드 | compressed KV + sparse 선택 (~9.6 GiB @ 1M, Pro) | 1M decode 비용 절감 | 검증 중 | 1M (DeepSeek V4) |
| RoPE/YaRN | (KV는 동일) | (학습 시점) | 보간 손실 미세 | 학습 컨텍스트 ×32+ |
각 행의 단위가 다르니 직접 곱하지는 마세요. 예컨대 "MLA + Hybrid Attention + YaRN" 을 동시에 쓴 모델(GLM-5.1 같은 최신 거대 MoE)은 세 효과가 곱해져 거대한 모델 본체 대비 캐시가 1% 수준이 됩니다.
7. 어떤 걸 언제 쓰나
- 고품질·짧은 컨텍스트: MHA. 4K~8K 작업에서 추가 트릭이 필요 없어요
- 대형 모델 KV 절감: GQA → MLA. 70B 이상에서 GQA-8이 표준, 거대 MoE면 MLA
- 무한 스트리밍 / 매우 긴 컨텍스트: SWA + Attention Sinks. 채팅봇 무한 세션
- 1M 컨텍스트·MoE 효율 극대화: Linear/SSM 하이브리드. Qwen3-Next, Nemotron 3, Gemma 4 계열
- 1M 컨텍스트·압축 어텐션: CSA+HCA(Compressed Sparse Attention + Heavily Compressed Attention). DeepSeek V4처럼 가까운 정보는 sliding window로, 먼 정보는 4토큰/128토큰 compressed KV로 나눠 저장
- 학습 컨텍스트 확장: RoPE → YaRN. 4K 학습본을 128K~1M으로 확장
- 긴 입력 + 큰 모델: 위 셋 조합 (예: GLM-5.1 = MLA + Hybrid + YaRN)
KV 캐시 부록이 "왜 캐시 절감이 모델 설계의 중심 문제인가" 를 다뤘다면, 이 부록은 "실제로 어떤 구조가 어느 자리에서 절감을 만들어 내는가" 를 정리한 셈이에요. 메모리·대역폭 부록에서 본 HBM 한계와 합쳐 보면, 같은 하드웨어 위에서 어떤 어텐션 변형이 어떤 컨텍스트를 가능하게 하는지 그림이 맞춰져요.
1차 출처
- Sliding Window Attention / Mistral 7B: arxiv 2310.06825
- Longformer: arxiv 2004.05150
- Gemma 2 (local/global alternating): arxiv 2408.00118
- StreamingLLM / Attention Sinks: arxiv 2309.17453
- GQA / MQA: arxiv 2305.13245
- MLA / DeepSeek-V2: arxiv 2405.04434
- RoPE: arxiv 2104.09864
- YaRN: arxiv 2309.00071
- Mamba (selective SSM): arxiv 2312.00752
- Mamba-2 (Tri Dao 블로그): tridao.me/blog/2024/mamba2-part1-model
- Gated Delta Networks (ICLR 2025): arxiv 2412.06464
- Mamba-3 (ICLR 2026 Oral): openreview.net/forum?id=HwCvaJOiCj
- Qwen3-Next 80B-A3B (vLLM 블로그): vllm.ai/blog/qwen3-next
- Qwen3.6 27B config: huggingface.co/Qwen/Qwen3.6-27B
- Qwen3.6 35B-A3B config: huggingface.co/Qwen/Qwen3.6-35B-A3B
- Gemma4 26B-A4B config: huggingface.co/google/gemma-4-26b-a4b-it
- Gemma4 Transformers 구현: github.com/huggingface/transformers
- DeepSeek V4 모델 카드: huggingface.co/deepseek-ai/DeepSeek-V4-Pro
- DeepSeek V4 Transformers 문서: huggingface.co/docs/transformers/model_doc/deepseek_v4
- Nemotron 3 Super (NVIDIA Developer): developer.nvidia.com/blog/introducing-nemotron-3-super
- Nemotron Nano 2: arxiv 2508.14444