0. Abstract
Summary
- DeepSeekV2의 효율성
- 연산 요율 확보: MoE 채택하여 전체 규모는 236B인데 inference시 실제 activate되는 파라미터는 9% 정도인 21B 정도.
- 학습 비용 절감: 이전 모델인 67B 대비 42.5% 줄였다.
- KV-caching: inference 시 사용하는 메모리를 93.3% 줄임.
- throughput 향상: 이전 모델 대비 5.76배 많은 토큰 처리량을 확보.
- Core Methods:
- Multi-Head Latent Attention: Kv-cache를 압축하여 저장해서 KV-cache에 할당되는 메모리를 줄임.
- DeepSeekMoE : MoE 장점을 누림.
- Data & Alignment
- 데이터는 8.1T 규모의 다국어 고품질 코퍼스로 pre-train됨.
- SFT하고 RL(GRPO from DeepSeekMath paper)을 통해 Human-Alignment 됨.
1. Introduction
Summary
Scaling Law등으로 규모가 확보되면 성능이 오르니, 모델 파라미터를 계속 늘리는 방향으로 발전하고 잇는데, 문제는 리소스가 많이 필요해지고, inference throughput이 저하되는 문제.
→ 를 해결하기 위해 DeepSeek에서는 MoE, MLA 제안.구조 자체는 Transformer(Attention + FFN)를 따르고,
- KV-cache 가 메모리를 많이 잡아먹으니 이를 해결하기 위해 기존에는
- GQA(Group-Query Attention)
- MQA(Multi-Query Attention) 등이 제안됨.
- 그러나 종종 성능의 희생이 뒤따름.
→ MLA 라는 low-rank key-value joint compression 을 사용한 attention을 제안함.
- FFN에는 DeepSeekMoE를 적용해서,
- fine-grained expert segmentation and shared expert isolation for higher potential in expert specialization
Train-Flow
- 8.1T 고품질 multi-source data로 pre-train
- 1.5M 규모의 다양한 대화 내용(math, code, reasoning 등) corpus로 SFT
- GRPO 사용해서 Human-alilgnmet 함.
Key Word
- Attention에는
- MLA-block
- FFN에는 DeepSeekMoE
- RMSNorm을 pre-norm 구조로 달고, Skip-Connection
- Decoupled Rotary Positional Encoding
- FFN
- DeepSeekMoE 구조이고,
- experts는
- Shared Experts : 항상 activate되는 모델.
- Routed Experts: router가 선택한 상위 개의 experts만 사용됨.
Check
Transformer가 크게 attention layer랑 FFN으로 구성되어 있어서, 각 파트에서
- global한 정보처리
- point-wise 정보처리 부분을 구분해 놓았으니,
현재 paradigm은 그 두 부분을 각각 나눠서 upgrade하는 느낌.
→ CNN 계열에서도 depth-wise separable convolution이란 개념도 흐름은 비슷.
→ global한 relation을 파악하고, 각 채널 별 정보를 따로 처리하고.
2. Architecture
Summary
- MLA in attention layers
- DeepSeekMoE in FFN layers
2. 1. Multi-Head Latent Attention : Boosting Inference Efficiency
Summary
기존의 MHA(Multi-Head Attention)의 경우에는 , 대량의 KV-caching이 inference시 bottleneck으로 작용했는데, 이를 줄이기 위해 제안된게, Multi-query attn, Group-querry attn 등이 있으나, performance 하락을 피할 순 없었음. 본 논문에서는 KV-caching 부분에 compression을 거는 방법으로 성능 하락을 피하면서도 KV-cache bottleneck을 해결해보자고 제안함.
2. 1. 1. Preliminaries: Standard Multi-Head Attention

- 기존의 여러 방법들 중 MHA 및 더 효율적인 MHA 대체 방법들.
Summary
MHA는 임베딩 차원 , 헤드 수 , 헤드당 차원 를 기반으로 쿼리(), 키(), 값()를 생성하여 연산된다.
생성된 , , 는 개의 헤드로 분할되어 각 헤드별 어텐션 계산을 수행하고, 출력은 행렬을 통해 결합된다.
추론 시 모든 키와 값이 캐싱되어야 하므로 MHA는 토큰당 요소를 저장하는 중간 키-값(KV) 캐시를 필요로 하며, 이는 모델 배포 시 배치 크기와 시퀀스 길이에 제한을 초래한다.
q, k, v 연산하고,
\mathbf{q}_t = W^{\mathcal{Q}} \mathbf{h}_t, \tag{1}
\mathbf{k}_t = W^K \mathbf{h}_t,\tag{2}
\mathbf{v}_t = W^V \mathbf{h}_{t,} \tag{3}
head 별로 수행됨.
[\mathbf{q}_{t,1};\mathbf{q}_{t,2};...;\mathbf{q}_{t,n_h}] = \mathbf{q}_t, \tag{4}
[\mathbf{k}_{t,1}; \mathbf{k}_{t,2}; ...; \mathbf{k}_{t,n_h}] = \mathbf{k}_t,\tag{5}
[\mathbf{v}_{t,1}; \mathbf{v}_{t,2}; ...; \mathbf{v}_{t,n_h}] = \mathbf{v}_{t,}\tag{6}
softmax를 포함한, scaled-dot attn 수행하고,
\mathbf{o}_{t,i} = \sum_{i=1}^{t} \text{Softmax}_{j}(\frac{\mathbf{q}_{t,i}^{T} \mathbf{k}_{j,i}}{\sqrt{d_{h}}}) \mathbf{v}_{j,i},\tag{7}
head별 output을 차원 맞춰주기.
\mathbf{u}_{t} = W^{O}[\mathbf{o}_{t,1}; \mathbf{o}_{t,2}; ...; \mathbf{o}_{t,n_{h}}], \tag{8}
2. 1. 2. Low-Rank Key-Value Joint Compression
Summary
MLA의 핵심은 key와 value의 low-rank joint compression을 통해 KV-cache를 줄이는 것으로,
이 과정에서 (compressed KV)를 생성하는
- down-projection 행렬 와
- up-projection 행렬 , 를 사용한다.
\mathbf{c}_{t}^{KV} = W^{DKV} \mathbf{h}_{t}, \tag{9}
\mathbf{k}_{t}^{C} = W^{UK} \mathbf{c}_{t}^{KV}, \tag{10}
\mathbf{v}_{t}^{C} = W^{UV} \mathbf{c}_{t}^{KV}, \tag{11}
Question
compressed kv cache를 도입한다는 가정 자체가 K, V space를 한 공간에 압축할 수 있다는 가정이 필요한데 이건 어디서 왔을까?
Important
inference 시에는 만 캐시되어 크기의 KV 캐시가 생성되며, 와 는 각각 에 흡수되어 키와 값 계산을 생략할 수 있다.
train 중에는 쿼리에도 저랭크 압축을 적용해 를 생성하고, 이는 와 를 통해 압축된 쿼리 벡터 로 변환된다.이 방법은 KV 캐시뿐만 아니라 활성화 메모리도 줄이는 효과를 가진다.
\mathbf{c}_{t}^{Q} = W^{DQ} \mathbf{h}_{t}, \tag{12}
\mathbf{q}_{t}^{C} = W^{UQ} \mathbf{c}_{t}^{Q}, \tag{13}
2. 1. 3. Decoupled Rotary Position Embedding
Summary
Contents
