APPENDIX · THEORY

어텐션 변형

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/MQAH_kv여러 Q 헤드가 같은 K/V 헤드를 공유
MLAH_kv × dK/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까지 거슬러 올라갑니다.

flowchart TD L1["레이어 L+1 (Layer L+1): [t-W .. t]<br/>W개 토큰 (W tokens)"] L2["레이어 L (Layer L): [t-2W .. t-W][t-W .. t]<br/>레이어 누적을 통해 (through stacking)"] L3["레이어 L-1 (Layer L-1): ...<br/>유효 수용 범위 (effective receptive) ~ k·W"] L3 --> L2 --> L1

Mistral 7B는 32 레이어 × W=4096이라 이론상 약 131K 토큰까지의 정보가 t에 도달할 수 있어요. 실제 모델 카드는 sliding_window=4096·max_position_embeddings=32,768로만 공개돼 학습 단계의 정확한 시퀀스 길이는 명시되지 않았지만, 이 누적 구조 덕에 SWA가 "윈도우 밖은 완전히 못 본다"가 아닌 거예요.

1.2 등장 모델

모델윈도우 W패턴출처
Longformer (2020)가변 (작업별 튜닝)로컬 SWA + task-driven globalarxiv 2004.05150
Mistral 7B (2023)4096전 레이어 SWAarxiv 2310.06825
Gemma 2 (2024)4096local/global 1:1 alternatingarxiv 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_dimlocal SWA
Gemma 2 2B2684256W=4096, 1:1
Gemma 2 9B42168256W=4096, 1:1
Gemma 2 27B463216128W=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).

위치 i01234567...
버퍼 슬롯 (i mod W, W=4)01230123...

위 표에서 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 크기 윈도우를 굴립니다.

flowchart LR subgraph Sinks["어텐션 싱크 (attention sinks, 영구 보존)"] direction LR T0["t0"] T1["t1"] T2["t2"] T3["t3"] end Gap["..."] subgraph Rolling["크기 W의 롤링 윈도우 (rolling window of size W)"] Window["t_{i-W} ... t_i"] end Sinks --> Gap --> Rolling

논문 보고 수치(§3·§4):

항목수치
안정 스트리밍최대 4M 토큰 (LLaMA-2 / MPT / Falcon / Pythia 검증)
LLaMA-2-13B PG19 PPLwindow-only 5158 vs StreamingLLM 5.4
Decode 속도sliding-window-recomputation 대비 최대 22.2배 (A6000)
학습 시 dedicated sink tokenvanilla 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예요.

flowchart LR subgraph MHA["MHA (H q, H kv)"] direction TB MHA_Q1["Q1"] --> MHA_K1["K1/V1"] MHA_Q2["Q2"] --> MHA_K2["K2/V2"] MHA_Q3["Q3"] --> MHA_K3["K3/V3"] MHA_Q4["Q4"] --> MHA_K4["K4/V4"] MHA_Q5["Q5"] --> MHA_K5["K5/V5"] MHA_Q6["Q6"] --> MHA_K6["K6/V6"] MHA_C["KV 캐시(KV cache): H x d"] end subgraph MQA["MQA (H q, 1 kv)"] direction TB MQA_Q1["Q1"] --> MQA_K["K1/V1"] MQA_Q2["Q2"] --> MQA_K MQA_Q3["Q3"] --> MQA_K MQA_Q4["Q4"] --> MQA_K MQA_Q5["Q5"] --> MQA_K MQA_Q6["Q6"] --> MQA_K MQA_C["KV 캐시(KV cache): 1 x d"] end subgraph GQA["GQA-G (H q, G kv), G=2 예시"] direction TB GQA_Q1["Q1"] --> GQA_K1["K1/V1"] GQA_Q2["Q2"] --> GQA_K1 GQA_Q3["Q3"] --> GQA_K1 GQA_Q4["Q4"] --> GQA_K2["K2/V2"] GQA_Q5["Q5"] --> GQA_K2 GQA_Q6["Q6"] --> GQA_K2 GQA_C["KV 캐시(KV cache): G x d"] end

KV 캐시는 H_kv에 정확히 비례하므로, GQA-8(G=8)은 H=64인 모델에서 캐시를 8배 줄여요. Q 헤드 수는 그대로라 attention 표현력은 거의 유지됩니다.

2.2 등장 모델

모델H_qH_kvG
LLaMA-2 70B6488
Mistral 7B3288
Gemma 2 27B321616
LLaMA-3 70B6488

표기 약속: 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-XXL1.51 s47.21.0×
MQA-XXL0.24 s46.66.3×
GQA-8-XXL0.28 s47.15.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 트레이드오프

변형캐시속도품질
MHA1 (기준)최고
MQA1/H6.3×약간 ↓ (Rouge -0.6)
GQA-81/85.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를 만들어 씁니다.

flowchart LR subgraph GQA_C["GQA: 토큰당 캐시(per-token cache)"] direction TB G1["H_kv 헤드 x d_h<br/>각 헤드별 K/V 저장(each stored)"] G2["예: 8 x 128 = 1k"] G1 --- G2 end subgraph MLA_C["MLA: 토큰당 캐시(per-token cache)"] direction TB M1["c_t^KV (크기 d_c)"] M2["+ decoupled RoPE part<br/>(분리된 RoPE 성분)"] M3["예: 512 + 64"] M1 --- M2 --- M3 end

3.2 차원 (DeepSeek-V2 기준)

논문 §2.1.3·Appendix C:

기호의미DeepSeek-V2 값
d_h헤드 차원128
n_h헤드 수128
d_cKV 압축 차원512 (= 4·d_h)
d_c'Query 압축 차원1536
d_h^Rdecoupled 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)
MHA2 · n_h · d_h32,768
GQA-G2 · G · d_h2,048 (G=8)16×
MQA2 · 1 · d_h256128×
MLAd_c + d_h^R57657× (논문 보고 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-awarebase θ를 조정해 고주파 보존저주파 차원이 여전히 외삽 영역
NTK-by-parts차원별 wavelength로 차등 보간학습 부족 시 attention 분포 왜곡
YaRNNTK-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)
64K2.70
128K2.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가지:

  1. 개선된 discretization 기반 recurrence: SSM의 연속 시간 식을 이산화하는 단계를 다시 설계해 더 표현력 있는 메모리 업데이트 가능
  2. Complex-valued state update: hidden state를 복소수로 확장. 위상(phase) 정보를 직접 다루게 되어 "카운팅·주기 추적" 같은 state-tracking 작업에서 강점
  3. 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 하이브리드 레이어 패턴 — 산업 채택 사례 셋

세 갈래 하이브리드가 동시에 상용화되었어요. 패턴은 제각각이지만 "대부분 레이어는 저비용, 소수만 표준 어텐션" 이라는 원칙은 공통.

flowchart TD subgraph Qwen["Qwen3-Next 80B-A3B (Gated DeltaNet 하이브리드, Gated DeltaNet hybrid)"] direction LR QD1["DeltaNet"] --> QD2["DeltaNet"] --> QD3["DeltaNet"] --> QA["Full Attention<br/>표준 어텐션 (Full Attention)"] --> QD4["...반복 3:1 (repeat 3:1)"] end subgraph Nemo["Nemotron 3 Super 120B-A12B (Mamba-2 하이브리드, Mamba-2 hybrid)"] direction LR NM1["Mamba-2"] --> NMOE1["Latent MoE"] --> NM2["Mamba-2"] --> NA["Attention<br/>GQA"] --> NM3["Mamba-2"] --> NMOE2["Latent MoE"] end subgraph Gemma["Gemma 4 26B-A4B (SWA + Global, SWA + Global)"] direction LR GS1["SWA W=1024"] --> GS2["SWA"] --> GS3["...총 25층 (25 total)"] --> GG["Global 5층<br/>(Global x5)"] end

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에서 하이브리드까지

방식시간 복잡도토큰당 캐시정확도 (질적)대표 모델
MHAO(N²·d)2·H·d (전체)최고Llama 2
MQAO(N²·d)2·d (1개 공유)약간 ↓PaLM
GQA-GO(N²·d)2·G·d (그룹 공유)≈ MHALlama 3, Mistral, Gemma 2
MLAO(N²·d)d_c + d_h^R (잠재 압축)≈ MHADeepSeek V2/V3, GLM-5.1
Linear (Gated DeltaNet)O(N·d)0 (고정 hidden state)retrieval 약점(단독으로는 안 씀)
Mamba-2 SSMO(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)기준최고학습 컨텍스트 한정
MQA1/H6.3×약간 ↓ (-0.6 R1)동일
GQA-81/85.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 기준)≈ MHA1M (Qwen3-Next)
Mamba 하이브리드소수 GQA 레이어만 KV4× 효율≈ MHA1M (Nemotron 3)
SWA+Global 하이브리드로컬 고정 + 글로벌 소량 (-93%~-91%)(다층 SWA)≈ MHA256K (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차 출처