개요
오픈 소스 모델로는 이례적으로 671B 모델을 공개했으며,DeepSeek-v3가 크게 주목받자 Qwen도 Qwen-2.5 모델을 빠르게 공개하였습니다.
기술적 핵심
학습 프로세스 (실험 및 다양한 요인을 제외하고 전체 학습에 2,788M H800 GPU 시간 사용, 핫 이슈)
[원문 상세 리뷰 준비 중]
아래 내용은 DeepSeek-V3에 사용된 주요 수식(특히 MLA(Multi-head Latent Attention), MoE(Mixture-of-Experts), Multi-Token Prediction(MTP), GRPO 등)에 대해 자세하게 설명합니다.
Transformer 구조에서 Attention 기법은 모델이 문맥 전반에 걸쳐 토큰 간 상호작용을 학습하는 핵심 메커니즘으로, 숫자 표현이나 리소스가 과다하게 사용되는 일부 단점이 있지만 (vanila attn의 한계) 여전히 대체 불가능할 정도의 퍼포먼스를 보여주고 있습니다. 따라서 대부분의 LLM, VLM 들은 대부분 비슷한 아키텍처를 공유하여 데이터의 퀄리티와 모델 웨이트 관리에 주력하여, 휴먼에게 더 유용한 모델을 만들기 위해 노력하고 있습니다. 현재 벤치마크는 이미 ‘22 말부터 큰 공신력을 잃었기 때문에 대략적인 참고 지표로만 해석하는 것이 좋다는 것이 중론입니다.
그러나 DeepSeek-V3는 표준 Multi-Head Attention(MHA) 대신 Multi-Head Latent Attention(MLA)를 채택하여 인퍼런스 시 메모리(특히 Key-Value 캐시) 사용량을 대폭 줄이면서 성능을 유지합니다.
일부 함수에서 CUDA function을 bypass해서 Nvidia’s assembly-like PTX programming 사용으로 효율적인 학습 파이프라인 사용 (Ops 개발진들과 협업) [기사]하여, OpenAI, Anthropic 뿐만아니라 중국이 H/W 최적화와 관련하여 NVIDIA CUDA의 기술적 해자도 해지할 수 있을 것이라는 조심스러운 의견들이 나오고 있는 상황입니다.
이때 다음과 같은 가정 혹은 기호를 사용합니다.
아래 제시된 식 \((1)\)~\((5)\)는 Key/Value 벡터를 로우 랭크(low-rank) 공간으로 변환하는 과정을 나타냅니다.
\(\mathbf{c}_{t}^{K\,V} = W_{D}^{K\,V} \, \mathbf{h}_t\)
\(\begin{aligned} [\mathbf{k}_{t,1}^C; \mathbf{k}_{t,2}^C; \dots; \mathbf{k}_{t,n_h}^C] &= \mathbf{k}_{t}^C = W_{U}^K \,\mathbf{c}_{t}^{K\,V}, \end{aligned}\)
\(\mathbf{k}_{t}^R = \mathrm{RoPE}\bigl(W_{K}^{R}\,\mathbf{h}_t\bigr)\)
\(\mathbf{k}_{t,i} = \begin{bmatrix} \mathbf{k}_{t,i}^C \\ \mathbf{k}_{t}^R \end{bmatrix}\)
\([\mathbf{v}_{t,1}^C; \mathbf{v}_{t,2}^C; \dots; \mathbf{v}_{t,n_h}^C] = \mathbf{v}_{t}^C = W_{U}^V \,\mathbf{c}_{t}^{K\,V}\)
예시
- \(d = 4096\), \(n_h = 32\) → 각 헤드의 차원 \(d_h = 128\)
- \(d_c = 512\)이라면, 원래 \(d_h \times n_h = 128 \times 32 = 4096\) 크기의 Key를 모두 저장하지 않고 512차원의 잠재 공간으로 압축하여,
- 인퍼런스 시 KV 캐시가 약 8배 절감 가능
쿼리(query) 또한 Key/Value와 유사한 방식을 취합니다. 다만 쿼리는 인퍼런스 시 매번 재계산하므로, 캐싱이 필요하지 않지만 훈련 시 메모리 절감을 위해 low-rank 압축을 적용합니다. (LoRA)
\(\mathbf{c}_t^Q = W_{D}^Q \,\mathbf{h}_t,\) \([\mathbf{q}_{t,1}^C; \dots; \mathbf{q}_{t,n_h}^C] = \mathbf{q}_t^C = W_{U}^Q\,\mathbf{c}_t^Q,\) \([\mathbf{q}_{t,1}^R; \dots; \mathbf{q}_{t,n_h}^R] = \mathbf{q}_t^R = \mathrm{RoPE}\bigl(W_Q^R\, \mathbf{c}_t^Q\bigr),\) \(\mathbf{q}_{t,i} = \begin{bmatrix} \mathbf{q}_{t,i}^C \\ \mathbf{q}_{t,i}^R \end{bmatrix}.\)
\(\mathbf{o}_{t,i} = \sum_{j=1}^{t} \mathrm{Softmax}_j \Bigl(\frac{\mathbf{q}_{t,i}^\top\,\mathbf{k}_{j,i}}{d_h + d_h^R}\Bigr) \;\mathbf{v}_{j,i}^C,\) \(\mathbf{u}_t = W_O\,[\,\mathbf{o}_{t,1};\,\mathbf{o}_{t,2};\,\dots;\,\mathbf{o}_{t,n_h}\,].\)
핵심 내용 1) MLA는 Key·Value를 압축하고, RoPE 부분만 별도 결합함으로써 인퍼런스 시 캐시 크기가 대폭 줄어듦 2) Query도 마찬가지로 저차원 압축을 통해 훈련 시 메모리 절약을 달성
MoE(Mixture of Experts)는 하나의 FFN(Feed-Forward Network)을 여러 개의 Expert로 분할하여, 각 토큰이 Top-K Expert만 선택해서 연산하게끔 하는 구조입니다. DeepSeek-V3는 아래 수식을 통해 MoE FFN의 출력을 정의합니다.
\[\mathbf{h}_t' = \mathbf{u}_t \;+\; \sum_{i=1}^{N_s} \mathrm{FFN}_i^{(s)}(\mathbf{u}_t) \;+\; \sum_{i=1}^{N_r} g_{i,t}\,\mathrm{FFN}_i^{(r)}(\mathbf{u}_t). \tag{12}\]1) 먼저 각 Expert별로 “점수”(\(s_{i,t}\))를 구함 → 상위 \(K_r\)개의 Expert 골라서 \(g_{i,t}'\) 설정
2) \(g_{i,t}\)는 softmax 식(합 1이 되도록)으로 정규화
\(s_{i,t} = \mathrm{Sigmoid}\bigl(\mathbf{u}_t^\top \mathbf{e}_i\bigr). \tag{15}\)
MoE에서는 특정 Expert가 지나치게 많은 토큰을 받으면(로드 불균형) 병렬 효율이 떨어질 수 있습니다. 그러나 DeepSeek-V3는 auxiliary loss 없이도, bias를 동적으로 조정하여 Expert별 로드를 균등하게 맞춥니다.
\[g_{i,t}' = \begin{cases} s_{i,t}, & \text{if } s_{i,t}+b_i \in \mathrm{TopK}\Bigl(\{s_{j,t}+b_j\}, K_r\Bigr),\\ 0, & \text{otherwise}. \end{cases} \tag{16}\]아주 극단적 편향을 방지하기 위해, 시퀀스 단위로도 균형을 유도하는 아주 작은 가중치의 Loss를 둡니다.
\(\mathcal{L}_{\mathrm{Bal}}
=
\alpha
\sum_{i=1}^{N_r}
f_i \, P_i,
\tag{17}\)
여기에서
\(f_i
=
\frac{N_r}{K_r \cdot T}\sum_{t=1}^{T}\mathbf{1}\Bigl(s_{i,t}\in\mathrm{TopK}(\dots)\Bigr),
\qquad
P_i
=
\frac{1}{T}\sum_{t=1}^{T} s_{i,t}'.\)
일반적으로 언어 모델은 “다음 단일 토큰”을 예측하도록 학습(CrossEntropy)하지만, DeepSeek-V3는 각 위치에서 추가 토큰까지 예측하는 MTP를 도입했습니다.
장점: 훈련 신호가 더 조밀(dense)해지고, 모델이 “몇 토큰 앞”까지 미리 표현을 생성해둘 수 있음.
\(\mathbf{h}_{i,k}' = M_k\, \Bigl[\mathrm{RMSNorm}(\mathbf{h}_{i,k-1});\; \mathrm{RMSNorm}\bigl(\mathrm{Emb}(t_{i+k})\bigr)\Bigr], \tag{21}\) \(\mathbf{h}_{1{:}(T-k)}^k = \mathrm{TRM}_k\Bigl(\mathbf{h}_{1{:}(T-k)}^{\,\prime k}\Bigr), \tag{22}\) \(P_{i+k}^k = \mathrm{OutHead}\bigl(\mathbf{h}_{i}^k\bigr). \tag{23}\)
\(\mathcal{L}_{\mathrm{MTP}}^k = \mathrm{CrossEntropy}\Bigl(P_{2+k:(T+1)}^k,\; t_{2+k:(T+1)}\Bigr) = -\frac{1}{T}\sum_{i=2+k}^{T+1} \log P_i^k[t_i]. \tag{24}\)
DeepSeek-V3는 Post-Training 단계에서 RL(Reinforcement Learning)을 적용합니다. GRPO라 불리는 방식을 사용해, Critic 없이도 group-wise 상대 점수를 이용하여 업데이트를 진행합니다. \(\mathcal{J}{\mathrm{GRPO}}(\theta) = \mathbb{E}{q\sim P(Q), {o_i}\sim \pi_{\theta_{\mathrm{old}}}(O|q)} \Bigl[ \frac{1}{G}\sum_{i=1}^G \Bigl( \mathrm{min}\Bigl( \frac{\pi_\theta(o_i|q)}{\pi_{\theta_{\mathrm{old}}}(o_i|q)}A_i, ; \mathrm{clip}\Bigl(\dots\Bigr)A_i \Bigr) - \beta,\mathcal{D}{\mathrm{KL}}(\pi\theta |\pi_{\mathrm{ref}})\Bigr)\Bigr], \tag{26}\) \(\mathcal{D}{\mathrm{KL}}(\pi\theta|\pi_{\mathrm{ref}}) = \pi_{\mathrm{ref}}(o_i|q),\pi_\theta(o_i|q) - \log \frac{\pi_{\mathrm{ref}}(o_i|q)}{\pi_{\theta}(o_i|q)} -1, \tag{27}\) \(A_i = \frac{r_i - \mathrm{mean}({r_1,\dots,r_G})}{\mathrm{std}({r_1,\dots,r_G})}. \tag{28}\)
결과: Critic 모델(동일 크기의 신경망)을 따로 두지 않고, 그룹 내부에서 상대 비교를 통해 Policy를 업데이트할 수 있음.
아래 표는 주요 수식의 역할과 직관적인 예시를 간단히 재정리한 것입니다.
수식/식 번호 | 설명 | 예시 |
---|---|---|
(1)~(5) (MLA Key/Value) | Key/Value 벡터를 저차원(\(d_c\))으로 압축→업프로젝션, RoPE 결합 | \(\mathbf{c}_{t}^{K\,V}\) 차원을 512 정도로 설정해, 인퍼런스 시 KV캐시 8배 절감 |
(6)~(9) (MLA Query) | Query도 유사한 방식으로 압축 + RoPE 적용 | Query는 캐시 필요X, 훈련 메모리 절약용 |
(10)~(11) (Attention Output) | Softmax로 Key와의 유사도를 구해 Value 합산 → 최종 어텐션 출력 | \(\mathbf{o}_{t,i}\)를 여러 헤드 i에 대해 concat, 다시 \(W_O\)로 프로젝션 |
(12)~(15) (MoE FFN) | “공유 Expert + 라우팅 Expert” 구조, 각 Expert 가중치 \(g_{i,t}\)로 combine | 한 토큰이 Expert 8개만 선택해서 FFN 수행, MLP 계산 효율 극대화 |
(16) (Aux-loss-free bias) | Expert별 bias \(\{b_i\}\)를 동적으로 조정해 토큰-Expert 라우팅을 결정 | 과부하 Expert의 \(b_i\)는 감소, 과소부하면 증가 → 로드 자동 균등화 |
(17)~(20) (Seq-wise balance loss) | 시퀀스 단위 극단적 편향 방지용 소규모 loss | \(\alpha\) 작게 설정(0.0001) |
(21)~(25) (Multi-Token Prediction) | 각 위치에서 추가 토큰까지 예측(MTP), 더 많은 학습 신호 획득 | 예: D=1이면 “현재+1 토큰” 동시 예측, \(\lambda\)로 MTP 손실에 가중치 부여 |
(26)~(28) (GRPO) | Critic 없이, 그룹 내 샘플들의 상대점수(advantage)로 Policy 업데이트 | 샘플 G개 뽑아, reward 평균/표준편차로 정규화( A_i ), PPO 유사하게 \(\mathrm{clip}\) 활용 |
[..., token_i, ...]
에 대해 “다음 토큰 token_{i+1}” 하나만 맞추는 형태.[..., token_i, ...]
에서 “token_{i+1} 뿐 아니라 token_{i+2}도 추가로 예측”
k=1
모듈이 token_{i+1}를 예측하고, 같은 모듈이 그 다음 토큰도 시퀀스 상태를 기반으로 연쇄적으로 인퍼런스.이런 식으로 각 시점에서 더 많은 정답 신호를 얻게 되면, 모델이 학습 시 더 풍부한 피드백을 받아 수렴이 빨라지거나 성능이 향상될 수 있습니다.
DeepSeek-V3는 Transformer 기반 모델에서 MLA, MoE, MTP 등 다양한 수식과 기법을 통해 대규모 학습 효율·성능을 크게 끌어올렸습니다.
각각의 수식은 구현 난이도와 하드웨어 요구사항이 있지만, 최종적으로 DeepSeek-V3가 코드, 수학, 멀티링구얼 등 다양한 벤치마크에서 최고 수준 성능을 보이는 핵심 토대를 제공합니다.
[관련자료]