DeepSeek Multi-Head Latent Attention(MLA) 해부: 저차원 KV 압축과 Decoupled RoPE를 통한 VRAM 98% 절감 및 행렬 흡수(Matrix Absorption) 추론 가속 원리
대규모 언어 모델(LLM) 추론의 최대 병목인 KV 캐시 메모리 폭증을 해결한 DeepSeek의 Multi-Head Latent Attention(MLA) 아키텍처를 심층 분석한다. K·V 결합 저차원 잠재 벡터(c_t^KV) 압축, 회전 위치 임베딩 충돌을 해결한 Decoupled RoPE 메커니즘, 그리고 서빙 시 고차원 Key 복원 없이 어텐션을 계산하는 행렬 흡수(Matrix Absorption) 기법을 살펴보고, 로컬 Python 시뮬레이션 검증과 실무 서빙 체크리스트를 정리한다.
DeepSeek Multi-Head Latent Attention(MLA)의 저차원 잠재 공간(Latent Bottleneck) 압축과 Decoupled RoPE 자이로스코프 회전 링, 그리고 고차원 Key 복원 없이 단일 패스로 어텐션을 직결 연산하는 행렬 흡수(Matrix Absorption)의 수학적 공명을 형상화한 추상 그래픽 아트워크다. 다크 네온 그라데이션, 다면체 프리즘 코어, 그리고 무손실 텐서 가속 스트림을 통해 차세대 초고속 추론 서빙 아키텍처를 상징적으로 표현했다.
생성형 AI와 대규모 언어 모델(LLM)이 에이전틱 워크플로, 복합 추론(Reasoning), 장문 컨텍스트 분석 등 수만~수십만 토큰을 실시간으로 처리하는 환경으로 진화하면서, 인프라 엔지니어링의 최대 화두는 단연 **'KV 캐시(Key-Value Cache) 메모리 폭증과 이로 인한 서빙 처리량(Throughput) 급감'**이다. 최신 가속기 GPU(H100, B200 등)가 막강한 텐서 코어 연산 성능을 제공함에도 불구하고, 동시 사용자 수가 증가하고 대화 컨텍스트가 길어지면 GPU의 고대역폭 메모리(HBM)는 모델 가중치가 아니라 오직 과거 토큰들의 Key와 Value 텐서를 적재하는 데 전량 소진된다. 이는 동시 배치 크기(Batch Size)를 제약하고 극심한 메모리 대역폭 병목(Memory-Bound)을 야기하여 서빙 단가를 기하급수적으로 폭증시키는 주원인이 된다. DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model (DeepSeek-AI, 2024), DeepSeek-V3 Technical Report (2024)
결론부터 말하면 Multi-Head Latent Attention(MLA)은 이전 토큰들의 거대한 고차원 Key와 Value 텐서를 각각 분리 저장하는 대신, 단 하나의 극도로 압축된 저차원 잠재 벡터()로 통합 사영하여 KV 캐시 메모리 점유량을 무려 93%~98% 이상 획기적으로 축소하는 차세대 어텐션 아키텍처다. 특히 기존 Grouped-Query Attention(GQA)이나 Multi-Query Attention(MQA)이 헤드를 강제로 묶거나 공유함으로써 겪어야 했던 치명적인 모델 표현력 저하를 완벽히 극복하여 표준 Multi-Head Attention(MHA)을 능가하는 지능 역량을 달성했다. 나아가 위치 인코딩의 회전 행렬이 잠재 압축을 파괴하는 문제를 Decoupled RoPE(분리형 회전 위치 임베딩)로 해결하고, 서빙 추론 시에는 선형 결합법칙을 활용해 고차원 Key를 메모리에 전혀 복원하지 않고 잠재 벡터 그대로 어텐션을 연산하는 행렬 흡수(Matrix Absorption) 기법을 도입함으로써 추론 처리량을 극한까지 끌어올렸다.
이 글에서는 LLM 서빙 현장이 직면한 KV 캐시의 하드웨어적 병목 구조를 살펴보고, DeepSeek-V2/V3/R1의 코어 심장부인 MLA의 3대 아키텍처(저차원 KV 압축, Decoupled RoPE, 행렬 흡수 연산)를 수학적으로 정밀 해부한다. 이어 로컬 터미널 환경에서 직접 구현해 5가지 핵심 시나리오(캐시 98.2% 절감, 저차원 투영 무결성, 내적 분해 보존, W^UK 쿼리 흡수 동등성, W^UV·W^O 결합 무손실성)를 검증한 Python 시뮬레이션 결과와 프로덕션 서빙 클러스터 구축 시 필수 점검 체크리스트를 정리한다.
1. LLM 서빙의 최대 병목: KV 캐시 메모리 폭증과 기존 기법의 한계
자가회귀(Autoregressive) 생성 단계(Decode Phase)에서 트랜스포머는 매 시점 마다 새 토큰을 하나 생성할 때마다 이전 번째 토큰들의 Key와 Value를 재계산하지 않기 위해 GPU 메모리에 캐싱해 둔다.
- 선형적 메모리 폭증의 법칙: 레이어 수 , 시퀀스 길이 , 쿼리/키 헤드 수 , 헤드 차원 , 데이터 정밀도 바이트 라 할 때, 표준 Multi-Head Attention(MHA)의 요청당 KV 캐시 크기는 다음과 같다.
$\text{Memory}_{\text{MHA}} = 2 \times L \times S \times n_h \times d_h \times P$
예를 들어 30개 레이어, 128개 헤드, 헤드 차원 128, FP16(2바이트) 모델에서 4,096 토큰 단 1개 세션을 유지하는 데만 의 HBM이 소모된다. 32개 동시 동적 배치를 처리하려면 순수 KV 캐시만으로 245GB가 필요해 최상급 GPU 3~4장이 캐시 버퍼로만 잠식된다.
- MQA(Multi-Query Attention)의 한계: 모든 쿼리 헤드가 단 1개의 Key-Value 헤드를 공유하도록 강제하여 캐시를 로 줄였으나, 다양한 문맥 간 상관관계를 포착하는 다중 헤드 고유의 어텐션 표현력(Capacity)이 심각하게 훼손되어 복잡한 추론이나 코딩 태스크에서 심각한 성능 저하가 발생했다.
- GQA(Grouped-Query Attention)의 절충과 한계: Llama 2/3 등에서 채택된 GQA는 쿼리 헤드들을 8개 내외의 그룹으로 묶어 Key-Value를 공유한다. 캐시를 1/8~1/16 수준으로 줄이며 MQA보다는 나은 성능을 보였으나, 128개 쿼리 헤드가 풍부하게 확장된 대규모 모델 환경에서는 여전히 캐시 용량이 부담스러우며 원본 MHA 대비 정보 손실을 완전히 피할 수 없었다.
MHA, GQA, 그리고 DeepSeek MLA의 KV 캐시 점유 구조와 메모리 사용량을 비교한 아키텍처 다이어그램이다. 동일한 128개 쿼리 헤드 및 4K 컨텍스트 조건에서 MHA의 7.5GB 캐시가 MLA의 135MB 단일 잠재 벡터 구조로 98.2% 축소되는 메모리 효율성을 도식화했다.
2. Multi-Head Latent Attention(MLA)의 3대 수학적 아키텍처
DeepSeek 연구진은 헤드 수를 인위적으로 줄여 정보를 버리는 대신, 선형 저차원 사영(Low-Rank Projection)과 행렬 분해(Matrix Factorization) 기법을 어텐션 메커니즘 전반에 도입하는 발상의 전환을 이뤄냈다.
1) 저차원 KV 압축 (Low-Rank Key-Value Compression)
토큰의 은닉 상태(Hidden State) 벡터를 라 하자(는 모델 차원). MLA는 각 헤드별로 거대한 Key와 Value 텐서를 직접 생성하지 않고, 먼저 압축 다운-프로젝션 행렬 를 통해 단 하나의 작은 잠재 벡터 를 추출한다.
$c_t^{KV} = h_t W^{DKV} \quad (d_c \ll n_h d_h)$
- 예를 들어 DeepSeek-V2/V3 설정에서 일 때 헤드 전체 차원은 차원에 달하지만, 잠재 차원 는 고작 512차원에 불과하다. 즉, 32배의 압축비를 달성한다.
- 추론 캐시 저장의 혁신: GPU KV 캐시에는 128개 헤드의 거대한 Key와 Value 텐서를 일절 저장하지 않는다. 오직 이 512차원의 콤팩트한 잠재 벡터 하나만 캐시에 보관한다.
- 학습 시 또는 완전 복원 시 헤드 의 컨텐트 키 와 컨텐트 밸류 는 업-프로젝션 행렬 를 통해 복원된다.
$\mathbf{k}_{t,i}^C = c_t^{KV} W_i^{UK}, \quad \mathbf{v}_{t,i}^C = c_t^{KV} W_i^{UV}$
2) 쿼리 저차원 압축 (Low-Rank Query Compression)
모델 파라미터 수와 활성화(Activation) 메모리를 추가로 최적화하기 위해 쿼리(Query) 역시 다운-프로젝션 와 헤드별 업-프로젝션 를 거치도록 설계했다.
$c_t^Q = h_t W^{DQ}, \quad \mathbf{q}_{t,i}^C = c_t^Q W_i^{UQ}$
쿼리 벡터는 자가회귀 생성 시 캐싱 대상이 아니므로 추론 VRAM을 직접 점유하지는 않지만, 학습 파라미터 효율성을 극대화한다.
3) 위치 인코딩 딜레마와 Decoupled RoPE의 탄생
저차원 잠재 압축을 실제 트랜스포머에 적용하려 할 때 가장 거대한 장벽은 바로 **RoPE(Rotary Position Embedding)**와의 충돌이었다.
- RoPE 충돌 문제: 현대 LLM은 토큰 간 상대적 거리 정보를 주입하기 위해 Key와 Query에 직교 회전 행렬 를 곱한다. 만약 형태로 위치 회전을 걸어버리면, 회전 행렬 가 업-프로젝션 행렬 뒤에 끼어들게 된다. 결과적으로 행렬 결합법칙이 무너지면서 사전에 행렬을 흡수하거나 압축된 상태로 내적할 수 없게 되어, 모든 과거 토큰들의 전체 Key를 고차원으로 일일이 복원해야 하는 비극이 일어난다.
- Decoupled RoPE의 우아한 해결책: DeepSeek은 **'의미적 내용(Content)'과 '위치 정보(Rotary Position)'를 완전히 별개의 벡터 경로로 분리(Decouple)**했다.
- 공유 로터리 키(Shared Rotary Key) 도입: 독립적인 투영 행렬 를 통해 작은 로터리 전용 키 을 뽑아내고 여기에만 RoPE를 적용한다.
$\mathbf{k}_t^{R,\text{rot}} = \text{RoPE}\left(h_t W^{KR}\right)$
이 로터리 키는 128개 헤드가 각자 가질 필요 없이 모든 헤드가 단 1개의 64차원 벡터를 완벽히 공유한다. - 헤드별 로터리 쿼리(Rotary Query): 쿼리 측에서는 헤드별로 64차원 로터리 쿼리 을 생성해 회전시킨다.
$\mathbf{q}_{t,i}^{R,\text{rot}} = \text{RoPE}\left(h_t W_i^{QR}\right)$ - 최종 쿼리와 키의 결합:
$\mathbf{q}_{t,i} = \left[ \mathbf{q}_{t,i}^C \,;\, \mathbf{q}_{t,i}^{R,\text{rot}} \right], \quad \mathbf{k}_{t,i} = \left[ \mathbf{k}_{t,i}^C \,;\, \mathbf{k}_t^{R,\text{rot}} \right]$
내적 연산의 가산적 성질에 의해 헤드 의 쿼리 와 키 사이의 어텐션 스코어는 다음과 같이 깨끗하게 두 항의 합으로 분해된다.
$\mathbf{q}_{t,i} \mathbf{k}_{j,i}^T = \underbrace{\left(\mathbf{q}_{t,i}^C (\mathbf{k}_{j,i}^C)^T\right)}_{\text{의미적 내용 내적 (순수 선형 공간)}} + \underbrace{\left(\mathbf{q}_{t,i}^{R,\text{rot}} (\mathbf{k}_j^{R,\text{rot}})^T\right)}_{\text{상대적 위치 내적 (64차원 공유 공간)}}$
컨텐트 키 에는 위치 회전 행렬이 전혀 묻지 않으므로, 순수한 선형 저차원 투영 공간이 그대로 보존된다.
MLA Decoupled RoPE 분리 경로와 서빙 시 행렬 흡수(Matrix Absorption) 추론 가속 파이프라인 다이어그램이다. 상단에서는 컨텐트와 로터리의 독립적 분리 메커니즘을, 하단에서는 나이브 복원 방식 대비 쿼리에 W^UK를 사전 흡수하여 고차원 Key 복원 없이 캐시된 c_j^KV와 직접 내적하는 초고속 연산 흐름을 대조했다.
3. 서빙 추론의 진정한 마법: 행렬 흡수(Matrix Absorption)
MLA의 이론적 캐시 축소가 서빙 현장에서 폭발적인 초당 생성 토큰 수(Throughput) 가속으로 이어지는 핵심 동력은 바로 행렬 흡수(Matrix Absorption) 기법이다.
1) Key 업-프로젝션 행렬의 쿼리 측 사전 흡수
나이브한 방식으로 구현한다면, 캐시된 수천 개의 과거 토큰 잠재 벡터 를 매 디코딩 스텝마다 를 곱해 128차원 Key로 풀어서 내적해야 한다. 이는 HBM 메모리 대역폭을 다시 낭비하는 꼴이다.
하지만 결합법칙에 의해 다음 등식이 성립한다.
$\mathbf{q}_{t,i}^C (\mathbf{k}_{j,i}^C)^T = \mathbf{q}_{t,i}^C \left(c_j^{KV} W_i^{UK}\right)^T = \mathbf{q}_{t,i}^C (W_i^{UK})^T (c_j^{KV})^T = \underbrace{\left(\mathbf{q}_{t,i}^C (W_i^{UK})^T\right)}_{\hat{\mathbf{q}}_{t,i}^C} (c_j^{KV})^T$
- 타깃 토큰의 쿼리 에 업-프로젝션 행렬 를 미리 단 한 번 곱해 **흡수된 쿼리 **를 계산한다.
- 이후 캐시 메모리에 저장되어 있는 수천 개의 과거 토큰 잠재 벡터 와 단 하나의 추가 복원 연산도 없이 즉각 512차원 저차원 내적을 수행한다!
- 결과: 과거 개 토큰에 대해 고차원 Key를 복원하는 거대한 연산과 메모리 버퍼 할당이 수학적으로 완벽히 소거(Zero Overhead)된다.
2) Value 업-프로젝션 행렬의 출력 프로젝션 사전 결합
Value 연산 역시 동일한 우아함이 적용된다. 어텐션 가중치 소프트맥스 확률을 라 할 때, 어텐션 출력 벡터는 다음과 같다.
$\mathbf{u}_{t,i} = \sum_j A_{t,j,i} \mathbf{v}_{j,i}^C = \sum_j A_{t,j,i} \left(c_j^{KV} W_i^{UV}\right) = \left( \sum_j A_{t,j,i} c_j^{KV} \right) W_i^{UV}$
최종 멀티헤드 어텐션의 출력 프로젝션 행렬을 라 하면:
$\text{Output}_t = \sum_i \mathbf{u}_{t,i} W_i^O = \sum_i \left( \sum_j A_{t,j,i} c_j^{KV} \right) \underbrace{\left(W_i^{UV} W_i^O\right)}_{W_i^{\text{combined}} \in \mathbb{R}^{d_c \times d}}$
- 캐시된 잠재 벡터 상태 그대로 어텐션 가중합을 계산하여 512차원 벡터를 만든 뒤, 오프라인에서 미리 곱해둔 단일 결합 행렬 를 단 한 번 통과시켜 최종 모델 차원 로 매핑한다.
- 이로써 Key와 Value 양쪽 모두에서 고차원 중간 텐서 복원 과정이 완전히 증발한다.
4. 어텐션 아키텍처 3종 심층 비교: MHA vs GQA vs MLA
동일한 규모의 대규모 언어 모델 설정(쿼리 헤드 128개, 헤드 차원 128, 레이어 30개, 4K 컨텍스트, FP16 정밀도)에서 3대 어텐션 기술의 지표를 대조하면 다음과 같다.
| 비교 항목 | 1. Multi-Head Attention (MHA) | 2. Grouped-Query Attention (GQA) | 3. Multi-Head Latent Attention (MLA) |
| KV 캐시 저장 대상 | 헤드별 Key(128개) + Value(128개) | 그룹 공유 Key(8개) + Value(8개) | 단일 잠재 벡터 • 공유 RoPE Key |
| 토큰당 레이어 캐시 크기 | 65,536 Bytes | 4,096 Bytes | 1,152 Bytes (MHA 대비 1/57) |
| 4K 세션 총 캐시 메모리 | 7,680 MB (7.5 GB) | 480 MB | 135 MB (0.13 GB) |
| MHA 대비 캐시 절감률 | 0% (기준) | 93.75% 절감 | 98.24% 절감 (GQA 대비로도 71.9% 추가 절감) |
| 모델 표현력 (Capacity) | 100% (원형 표준) | 헤드 공유로 인한 표현력 일부 저하 | MHA 동등 이상 (압축 랭크 기반 지능 유지) |
| 위치 인코딩(RoPE) 처리 | 각 헤드 Key에 직접 회전 적용 | 각 공유 헤드 Key에 직접 회전 적용 | Decoupled RoPE (64차원 1개 공유 분리 회전) |
| 추론 시 Key/Value 연산 | 표준 GEMV (메모리 대역폭 병목) | 그룹 축소 GEMV | 행렬 흡수(Matrix Absorption)로 복원 없이 직결 연산 |
| 동시 배치 크기(Batch Size) | 최소 (VRAM 제약 심각) | 보통 (4~8배 향상) | 극대화 (MHA 대비 10배~20배 동시 처리) |
5. 로컬 Python으로 검증하는 MLA 및 Matrix Absorption 시뮬레이션
Multi-Head Latent Attention의 핵심 수학 공식인 캐시 압축률 산출, 저차원 투영 차원 무결성, Decoupled RoPE 내적 가산 분해 성질, 쿼리 측 행렬 흡수 동등성, 그리고 Value 결합법칙 무손실성을 단일 파이프라인으로 재현한 로컬 Python 검증 스크립트(test_deepseek_mla.py)를 작성하여 실행했다.
직접 실행해 확인한 5가지 검증 시나리오
로컬 터미널 환경에서 위 검증 스크립트를 직접 실행한 결과 5가지 시나리오가 모두 오차 한계 이하로 정상 통과(ALL 5 DEEPSEEK MLA & DECOUPLED ROPE VERIFICATION CHECKS PASSED SUCCESSFULLY!)함을 실증했다.
- KV 캐시 메모리 압축률 검증 (Case 1): MHA가 4K 컨텍스트 기준 7,680MB를 점유할 때, MLA는 단 135MB만을 점유하여 정확히 98.24%의 메모리 절감률을 달성함을 확인했다. 8개 헤드를 공유하는 GQA(480MB)와 비교하더라도 추가로 71.88% 더 작아 압도적인 캐시 압축 우위를 입증했다.
- Low-rank 잠재 벡터 투영 및 차원 무결성 검증 (Case 2): 2048차원의 은닉 상태 가 를 통해 512차원의 컴팩트 잠재 공간으로 축소되고, 다시 헤드별 128차원의 Key와 Value로 완벽히 복원됨을 검증했다.
- Decoupled RoPE 분리 회전 및 내적 보존 검증 (Case 3): 전체 결합 벡터 간의 단일 내적 값(-22.3809850107)과 컨텐트 내적 및 로터리 내적을 각각 계산해 합산한 값(-22.3809850107)의 차이가 ****로 사실상 0임을 확인했다. 위치 정보 분리가 어텐션 점수에 아무런 왜곡을 일으키지 않음을 수학적으로 입증했다.
- Inference Matrix Absorption(W^UK 쿼리 흡수) 수학적 동등성 검증 (Case 4): 나이브하게 Key를 복원한 뒤 내적한 결과(-6.073908192658)와 쿼리에 전치행렬을 흡수시켜 캐시된 잠재 벡터와 직접 내적한 결과(-6.073908192658)의 오차가 ****로 완벽히 일치했다. 즉, GPU 서빙 시 고차원 Key를 일절 복원하지 않아도 완전히 동일한 어텐션 출력을 낼 수 있음을 증명했다.
- Value Up-projection 행렬 결합() 무손실성 검증 (Case 5): 어텐션 가중합 후 복원하는 나이브 출력 벡터와 오프라인 융합 행렬 를 곱한 출력 벡터 간의 요소별 최대 오차가 ****에 불과함을 확인하여 결합법칙의 엄밀성을 입증했다.
6. 프로덕션 LLM 서빙 클러스터 도입 및 성능 최적화 체크리스트
DeepSeek-V2/V3/R1 계열 모델을 자체 vLLM, SGLang 또는 Triton 기반 추론 클러스터에 배포할 때 점검해야 할 핵심 실무 사항은 다음과 같다.
- FlashMLA 및 전용 어텐션 커널 활성화 점검:
- 표준 FlashAttention-2/3 커널은 고차원 Key-Value 텐서 입력을 전제로 작성되어 있다. MLA의 행렬 흡수 메커니즘을 100% 활용하려면 DeepSeek이 오픈소스로 공개한 **FlashMLA(Hopper GPU 아키텍처 특화 WGMMA 커널)**나 SGLang/vLLM의 전용 MLA 디코딩 커널이 활성화되어 있는지 확인해야 한다. 그렇지 않으면 내부적으로 잠재 벡터를 다시 Key/Value로 업프로젝션하는 나이브 폴백(Fallback)이 발생해 가속 이점을 상실한다.
- PagedAttention 메모리 풀의 블록 할당 단위 튜닝:
- MLA는 토큰당 캐시 크기가 1,152 바이트(약 1.1KB) 수준으로 매우 작다. 표준 MHA에 맞춰진 큰 페이지 블록 크기(예: 32 또는 64 토큰 단위 블록)를 그대로 사용할 경우 내부 파편화(Internal Fragmentation)가 발생할 수 있다. 서빙 엔진의
block_size를 토큰 스트리밍 특성에 맞춰 최적화해야 한다.
- FP8 KV 캐시 양자화와의 결합 시 스케일링 팩터 관리:
- DeepSeek-V3는 MLA의 저차원 잠재 벡터 에 추가로 FP8(E4M3 or E5M2) 양자화를 적용하여 캐시 크기를 다시 절반으로 줄인다. 이때 Decoupled RoPE 키 은 위치 회전의 정밀도를 유지하기 위해 FP16/BF16 정밀도를 유지해야 하며, 블록별 동적 스케일링 팩터가 정상적으로 저장·연산되는지 확인해야 한다.
- 배치 크기(Concurrency) 확대와 GPU 텐서 코어 GEMM 포화도:
- KV 캐시 점유율이 98% 감소함에 따라 동일 HBM 용량에서 동시에 수용 가능한 배치 크기가 10~20배 증가한다. 배치 크기가 커질수록 추론 연산은 메모리 대역폭 중심(GEMV)에서 텐서 코어 연산 중심(GEMM)으로 전환되므로, GPU 활용률(Compute Utilization)이 90% 이상으로 극대화된다. 서빙 인프라의 최대 동시 요청 큐(Concurrency Limit)를 과감하게 상향 조정해야 한다.
- 긴 컨텍스트(128K+) 환경에서 YaRN 포지션 주파수 일치성:
- DeepSeek은 긴 컨텍스트 확장을 위해 YaRN(Yet another RoPE extensioN) 기법을 적용한다. Decoupled RoPE 키 에 적용되는 로터리 베이스 주파수 및 스케일링 팩터가 서빙 엔진 설정과 일치하지 않으면 원거리 문맥 검색(Needle in a Haystack) 정확도가 급락하므로 컨피그 정합성을 반드시 교차 검증해야 한다.
참고 자료
확인 기준일: November 10, 2026