DeepSeek-V3 요약
- Open Source Model
- Architecture : Mixture-of-Experts(MoE) 구조
- Parameter:
- total : 6,710억개
- activated per token: 370억개
- Speed: 초당 약 60개의 토큰을 처리할 수 있어 이전 버전(DeepSeek-V2)보다 3배 빨라졌다고 한다.
- Specialized task: 교육, 코딩, 수학적 추론
Architecture
DeepSeek 모델도 Transformer Decoder 구조를 기반으로 하지만 여기에 몇 가지 설계적 요소를 추가하여 성능을 향상시켰다.
Multi-head Latent Attention (MLA)
기존 transformer attenetion mechanism을 개선한 attention으로, 이 방법론을 도입함으로써 token 처리 속도가 크게 개선되었다고 한다.
MLA 작동 방식
- low-rank key-value joint compression
key-value에 대해 저차원 공동 압축을 수행. 즉, key와 value를 함께 압축하여 kv cache를 줄이는 방법이다. - 압축된 latant vector를 cache에 저장
- key-value를 동적으로 재구성하여 원래 정보 유지시킨 후 attention을 계산한다.
MLA로 인한 이점
- 메모리 사용량 감소: KV cache를 줄여 memory 사용량을 감소시킨다.
- 긴 sequence 처리: 메모리 요구량이 감소하여 더 긴 sequence나 더 큰 batch를 처리할 수 있음
- 추론 속도 향상: 효율적인 메모리 사용으로 추론 속도가 향상
Mixture-of-Experts (MoE)
DeepSeek-V3는 총 6710억 개의 parameter를 가진 모델이지만, MOE를 통해 370억개의 parameter만 활성화하여 각 token을 처리한다. 이렇게 필요한 부분만 활성화 시킴으로써 계산 자원을 감소시키고 효율성을 증대시킨다.
또한 MoE는 여러 expert들을 두어 대규모 모델의 능력을 유지하면서도 효율적인 추론이 가능하게 한다.
1) expert module: "expert"라 불리는 작은 모델들로 구성된다. 각 expert들은 특정 유형의 데이터나 task에 특화되어 있다. (Deepseek-v3은 매우 세분화된 expert들을 두고 있다고 한다.)
2) router module: 입력 데이터를 분석하여 가장 적합한 expert들을 선택한다. (모든 expert들이 작동하지 않고 특정 입력에 가장 적합한 expert들만 선택적으로 활성화된다.)
3) Load Balancing: 각 expert의 작업 부하를 모니터링하고 조정하여 균형을 유지한다. 과부하된 expert의 조정값을 줄이고, 과부하되지 않은 expert의 조정값을 늘린다.
4) Shared Experts / Routed Experts: expert들은 모든 token에 접근 가능한 shared expert와 router에 의해 선택되는 routed expert로 구분된다.
전통적인 MOE와의 차별점:
- Expert 세분화
- 일반적인 MOE architecture에 비해 expert들의 FFNN을 줄여 각 expert들의 크기를 줄인다.
- expert들의 크기가 작아진 만큼, 활성화되는 expert들의 수를 늘려 계산 비용을 일정하게 유지한다. -> parameter 수와 계산 비용을 일정하게 유지하면서도 성능을 향상시킨다.
- 더 많은 expert들이 활성화됨으로써 각 token 처리 시 매우 유연한 expert 조합이 가능해진다. -> 더 많은 수의 expert들이 활성화되어 다양한 지식을 더 정밀하게 분석할 수 있다.
- 일반적인 MOE architecture에 비해 expert들의 FFNN을 줄여 각 expert들의 크기를 줄인다.
- Shared expert isolation
- expert 중 일부($Ks$개)를 shared experts로 지정하여 shared experts와 routed experts를 분리한다.
- shared experts들은 routing 결과와 무관하게 항상 활성화된다. 즉, 모든 입력 token은 shared expert들에 항상 할당된다.
- shared expert들은 다양한 맥락에서 공통적으로 필요한 정보를 capture하고 통합하는 역할을 한다.
- 이는 공통 지식을 shared expert에 집중시켜 다른 routed expert들 간의 지식 중복이 없도록 한다.
- routing 되는 expert들의 수는 $mN-Ks$로 조정된다.
- expert 중 일부($Ks$개)를 shared experts로 지정하여 shared experts와 routed experts를 분리한다.
- Auxiliary-Loss-Free Balancing Strategy
- expert별 bias를 조정하여 균형을 맞추는 것이다.
- MoE 모델에서는 여러 expert들을 균형있게 활용하는 것이 성능에 매우 큰 영향을 마친다. 기존 MoE 모델들에서는 expert들의 균형을 맞추기 위해 보조 손실 함수를 사용했지만, 이는 모델의 주요 목적에 영향을 미치는 interference gradient를 발생시킬 수 있다는 문제가 있다.
- 따라서 Deepseek-v3는 Loss-Free Balancing이라고 알려진 보조 손실함수 없는 balancing 전략을 구현했다. 이 전략은 최근의 expert 부하에 대한 통계를 기반으로 expert별 bias를 동적으로 조정한다.
- 예를 들어, "금융 사기 탐지 과제를 위한 LLM 기반 솔루션"이라는 문장이 들어왔을 때, routing된 expert들의 affinity score이 다음과 같을 때:
{"기술 expert": 0.7,"금융 expert": 0.4, "사회 expert": 0.2}
위 경우, 기술 expert가 과부하된 상태이다. expert들의 활용도를 균형있게 만들기 위해 위 점수에 bias가 추가된다.{"기술 bias": -0.2,"금융 bias": 0, "사회 bias": +0.1}
selection_score= {"기술 expert": 0.5,"금융 expert": 0.4, "사회 expert": 0.3}
(gating value에는 bias가 적용되지 않은 원래 affinity score가 사용된다.)
- expert별 bias를 조정하여 균형을 맞추는 것이다.
Multi-Token Prediction (MTP)
기존의 생성형 모델들은 일반적으로 token을 하나씩 생성하는 방식으로 작동된다. 이는 생성형 모델의 속도 저하의 주요한 원인 중 하나이다. Deepseek v3는 MTP를 적용하여 여러개의 token을 동시에 처리할 수 있도록 모델을 학습 시켜 여러 token을 한번에 생성할 수 있도록하였다. 이를 통해 전체적인 처리 속도가 크게 향상 되었다고 한다.
MTP 작동 방식
입력 token 처리 단계
- input token: $x1, x2, ... xt$
- shared transformer trunk로 input token 전달
- shared transformer trunk에서 hidden representation $zt:1$이 생성됨
- $zt:1$은 input token들의 "shared understanding", 즉 token들이 모두 공유하는 정보를 담고 있는 hidden representation이다.
prediction 단계
- n개의 독립적인 output head를 둔다.
- 각 head는 특정 위치의 token을 예측하는 역할을 한다.
- 첫 번째 head -> $xt+1$ (다음 토큰) 예측
- 두 번째 head -> $xt+2$ (그 다음 토큰) 예측
- ... 이렇게 쭉
unembedding 단계
- 모든 prediction head들이 공유하는 unembedding matrix $fu$가 있다.
- 이 행렬은 예측된 representation을 실제 token으로 변환하는 역할을 한다.
MTP로 인한 이점
- 여러 token을 동시에 예측할 수 있어 처리 속도가 빠르다.
- shared transformer trunk와 unembedding matrix를 사용함으로써 컴퓨터 자원을 효율적으로 사용할 수 있다.
- 각 위치별로 특화된 예측이 가능하다.
- 추론 시 필요하다면 MTP module을 speculative decoding에 활용해 throughput을 향상시킬 수 있다.
Additional technicque
Mixed precision training (Low Precision FP8)
DeepSeek-v3는 메모리 사용량과 계산 부하를 줄이는 FP8 mixed precision training을 적용했다.
- 16bit나 32bit를 사용하는 것이 일반적이지만, FP8 mixed precision training에서는 8bit를 사용하여 계산과 저장을 수행한다.
- 이는 GPU 메모리 사용량을 최대 50%까지 줄일 수 있다.
- 또한 낮은 precision계산으로 인해 학습 속도가 크게 향상한다.
Rule based Reinforcement Learning
Deepseek-v3는 규칙 기반 보상 시스템을 활용하여 모델의 성능을 향상시켰다. 규칙 기반 보상은 주로 코딩, 수학과 같이 구조화된 도메인에서 사용되었고, 모델의 출력을 평가하기 위해 사전에 정의된 규칙이나 제약 조건을 활용하였다. 이와 같은 방법은 huristic한 feedback에 비해 모호성이 줄어 명확하고 빠르게 모델이 행동을 학습할 수 있도록 한다.
Reference
https://www.deepseek.com/
https://huggingface.co/deepseek-ai/DeepSeek-V3
'Language Model' 카테고리의 다른 글
Entropix : Entropy Based Sampling and Parallel CoT Decoding (0) | 2025.02.04 |
---|---|
Speculative Decoding : 추론 속도 향상 방법 (0) | 2025.02.04 |
Semantic Entropy : LLM Hallucination Detectiond에 대한 두 논문 정리 (0) | 2025.02.03 |
LLaMa 3.1 알아보자 (0) | 2025.02.03 |
Merge algorithms: MoE, MoA (0) | 2025.01.31 |