본문 바로가기

06. MHA, MQA, GQA, MLA

핵심 질문
  • attention의 표현 방식이 KV 캐시 크기와 커널을 어떻게 바꾸는가?
  • "KV를 줄이면 무조건 좋다"는 성립하는가, 어떤 절충이 숨어 있는가?

목표
  • MHA·MQA·GQA·MLA를 05장의 KV 식(특히 H_kv)에 연결한다.
  • 각 방식의 메모리·품질·구현 절충을 정직하게 정리한다.

여정에서의 위치

05장의 KV 하한 식 2 × L × H_kv × d_h × T × b에서, 대부분의 값은 모델 크기로 정해집니다. 그런데 H_kv(KV head 수)는 attention을 어떻게 설계했느냐로 달라집니다. 이 장은 그 설계 선택지들입니다 — 즉 "KV 식의 H_kv를 줄이는" 아키텍처 수준의 방법입니다.

🔎 약어 풀이
  • head(어텐션 헤드): attention을 여러 갈래로 나눠 각기 다른 관계를 보게 한 단위. query·key·value 각각에 head가 있습니다.
  • MHA = Multi-Head Attention, MQA = Multi-Query Attention, GQA = Grouped-Query Attention, MLA = Multi-head Latent Attention.
  • RoPE(Rotary Position Embedding): 위치 정보를 회전으로 주입하는 방식. MLA에서 KV 압축과의 상호작용이 미묘해집니다(아래).

네 가지 방식 — 직관

MHA (기본)

query head마다 자기 key/value head가 하나씩 있습니다. 표현력이 가장 풍부하지만, KV head 수 H_kv가 query head 수와 같아 KV 캐시가 가장 큽니다.

MQA (극단적 공유)

모든 query head가 하나의 key/value head를 공유합니다. H_kv=1이 되어 KV가 극적으로 줄지만, 표현이 거칠어져 품질이 떨어질 수 있습니다.

GQA (중간 지점)

query head들을 몇 개 그룹으로 나누고, 그룹마다 key/value head를 공유합니다. MHA와 MQA 사이를 매끄럽게 보간합니다. 그룹 수 G로 KV를 조절하며, 여러 자료에서 MHA에 근접한 품질을 유지하면서 속도 이점을 얻는 방식으로 설명됩니다.

MLA (압축)

head를 공유하는 대신, key/value를 저차원 잠재 벡터(latent vector)로 압축해 저장하고, 쓸 때 다시 펼칩니다. 저장하는 것 자체를 작게 만드는 접근으로, DeepSeek 계열(V2/V3/R1)의 특징으로 알려져 있습니다(확인일 2026-07-20).

flowchart TB
    MHA[MHA<br/>head마다 K,V]:::mem -->|H_kv 줄이기| GQA[GQA<br/>그룹이 K,V 공유]:::comp
    GQA -->|극단| MQA[MQA<br/>모두 1개 K,V 공유]:::comp
    MHA -.다른 축: 압축.-> MLA[MLA<br/>K,V를 잠재벡터로 압축]:::result

    classDef mem fill:#e5dbff,stroke:#7048e8,color:#000;
    classDef comp fill:#d0ebff,stroke:#1971c2,color:#000;
    classDef result fill:#d3f9d8,stroke:#2f9e44,color:#000;

핵심 통찰: GQA/MQA는 "H_kv를 줄이는" 축이고, MLA는 "저장 표현을 압축하는" 다른 축입니다. 그래서 MLA의 KV 크기는 05장 식의 H_kv·d_h 자리 대신 대략 잠재 차원(latent_dim)으로 대체돼 계산됩니다.

표로 정리 — 절충

방식KV 크기 축품질 경향구현 복잡도비고
MHAH_kv = query head 수 (최대)기준(높음)단순KV 가장 큼
MQAH_kv = 1떨어질 수 있음단순KV 최소, 품질 리스크
GQAH_kv = 그룹 수 GMHA에 근접 가능단순MHA↔MQA 보간, 현재 널리 채택
MLA≈ 잠재 차원자료에 따라 MHA 수준 유지·소폭 상회 보고높음압축·복원 커널, RoPE 상호작용 주의
🔬 증거 읽기 (주장 유형·조건)
  • "GQA는 MHA에 필적하는 품질"이라는 서술은 GQA·Llama 2 논문 등의 ablation(measured, 특정 모델·과제 조건)에 근거합니다. "모든 모델에서 항상"이 아니라 그 실험 조건에서입니다.
  • "MLA가 MHA보다 품질이 좋았다"는 주장은 주로 DeepSeek-V2 ablation(PRIMARY이되 owner 보고)에서 옵니다. owner의 유리한 조건일 수 있으므로, 독립 재현(REPRODUCTION)과 구분해 읽으세요.
  • "MLA가 GQA 대비 KV를 몇 배 줄인다"는 수치(예: 토큰당 70KB vs 192–328KB, 05장)는 모델·구현 조건이 붙은 measured/vendor 값입니다. 조건 없이 "MLA가 무조건 우월"로 옮기지 마세요.
⚖️ 절충(tradeoff)
  • MQA: 메모리↓↓, 품질 리스크↑.
  • GQA: 메모리↓, 품질 유지 가능, 구현 단순 — 그래서 널리 쓰임.
  • MLA: 메모리↓↓(압축), 품질 유지·상회 보고 있으나 구현·서빙 복잡도↑(압축/복원 연산 추가, RoPE 처리, 최적화된 커널 필요). 여러 자료가 "실제 이점을 내려면 최적화된 서빙 구현이 필요하다"고 지적합니다(확인일 2026-07-20).

⚠️ 흔한 오해

  • "KV를 줄이면 항상 빨라진다" — 아닙니다. KV를 줄이면 memory 병목은 완화되지만(03장), MLA처럼 압축·복원 연산이 추가되면 compute 쪽 부담이나 커널 복잡도가 늘 수 있습니다. 순이득은 조건부입니다.
  • "MLA는 KV 양자화와 같다" — 아닙니다. MLA는 아키텍처 수준의 저차원 압축(모델이 그렇게 학습됨)이고, KV 양자화(11장)는 저장 시 정밀도(bit)를 낮추는 별개의 축입니다. 둘은 겹쳐 쓸 수도 있는 다른 방법입니다.

📌 핵심

  • attention 표현 방식은 05장 KV 식의 H_kv(또는 저장 표현)를 바꾼다.
  • GQA/MQA는 KV head 수를 줄이는 축, MLA는 저장을 압축하는 다른 축.
  • MHA(품질↑·KV↑) ↔ MQA(KV↓·품질 리스크) 사이를 GQA가 보간, MLA는 압축으로 별도 경로.
  • KV 축소는 공짜가 아니다 — 품질·구현 복잡도·커널이라는 절충이 따른다.

🔎 이 장의 '지지하지 않는 결론'

  • "MLA가 GQA보다 항상 낫다"고 말할 수 없습니다 — owner ablation은 특정 조건이며, 구현 복잡도·서빙 성숙도라는 비용이 있습니다.
  • 특정 모델의 품질 우열을 이 장의 개념만으로 판정할 수 없습니다 — 과제·조건이 명시된 measured 근거가 필요합니다.

✍️ 확인 문제

  1. MHA·MQA·GQA를 05장의 H_kv로 연결해 설명하세요. GQA의 그룹 수 G를 1로 하면 무엇이 됩니까?
  2. MLA가 GQA와 "다른 축"이라는 말의 의미를, 05장 KV 식에서 무엇이 바뀌는지로 설명하세요.
  3. (조건 유형) "MLA가 MHA보다 품질이 좋고 KV도 작다"는 주장을 신뢰하려면, 출처 등급과 조건 측면에서 무엇을 확인해야 합니까?
다음 묶음(3부): 07 · batch 효율 → 08 · continuous batching → 09 · PagedAttention → 10 · prefix caching. 스케줄링과 메모리 관리의 세계로.