Abstract
MoE를 통한 경제적인 훈련, KV 캐시 압축을 통한 효율적인 추론이 특징인 236B (활성화 피라미터 21B) MoE 모델인 DeepSeek-V2 출시 (영어, 중국어)
[Github]
[arXiv](2024/05/08 version v2)
Architecture
언급되지 않는 사소한 세부 사항은 DeepSeek-67B를 따른다.
Multi-Head Latent Attention: Boosting Inference Efficiency
Preliminaries: Standard Multi-Head Attention
Low-Rank Key-Value Joint Compression
MLA는 MHA보다 훨씬 적은 양은 KV 캐시를 저장하면서도 더 나은 성능을 제공한다. (MHA, MQA 설명)
[MLA에 대한 중국어 설명] 여기가 설명 진짜 잘해놓음. 논문에도 나와 있지 않은 디테일이 많다. 근데 중국어임.
Hidden state를 low-rank로 down-projection 하고 c만 캐시로 저장한다.
Up-projection을 통해 각 헤드의 K, V를 생성한다.
여기서 의문점이 생긴다. 애초에 MLA의 목적은 메모리 요구량을 줄이는 것인데, 캐시를 다시 up-projection 하여 여러 개의 KV를 생성한다면 MLA를 사용할 이유가 없어진다.
MLA는 교묘한 변환을 통해 이 문제를 회피한다.
다음과 같이 하나의 행렬로 결합하여 명시적인 K의 생성을 피할 수 있다.
V도 같은 방식으로 명시적인 생성을 피한다.
이 트릭은 행렬 결합의 수치적 오류 때문인지 추론에서만 사용한다고 한다.
추가로 활성화 메모리를 줄이기 위해 query에도 low-rank 압축을 수행한다.
(중국어 설명의 게시자는 이 과정의 존재가 이해되지 않는다고 했다.)
Decoupled Rotary Position Embedding
한 가지 문제는 MLA에 RoPE를 적용할 수 없다는 것이다.
RoPE를 적용하려면 KV의 생성을 피하기 위한 트릭이 불가능하다.
Q, K에 바로 RoPE를 적용하지 않고 별도의 low-rank로 projection 하여 RoPE를 적용 후 연결하는 것으로 해결한다.
좋은 아이디어인 것 같다. 나는 항상 PE를 더하거나 곱하여 기존 feature를 변형하는 위치 인코딩 방법이 마음에 안 들었다. 이렇게 하면 feature 손상도 없고 더 좋지 않은가? 계산은 더 필요하긴 하지만...
V에는 적용하지 않아도 된다. PE의 개념 자체가 attention score 계산에 위치를 고려하기 위해서 수행하는 것이기 때문에.
전체 과정은 아래와 같다.
파란 글씨는 저장이 필요한 캐시를 의미한다.
MLA의 low-rank projection, KV 생성 피하기를 통해 높은 hidden dimention, num-heads를 사용하여 성능을 향상시킬 수 있다.
DeepSeekMoE: Training Strong Models at Economical Costs
Basic Architecture
- 전문가를 더 세밀하게 세분화
- 공유 전문가 사용
Device-Limited Routing
DeepSeek-V2의 더 세밀한 전문화로 인해 expert parallelism을 적용하면 device 간 통신 비용이 너무 많이 발생할 수 있다.
따라서 각 토큰에 대해 최대 M개의 device에만 분산되도록 (Top-K 라우팅으로 인해) 제한.
Auxiliary Loss for Load Balance
Load balancing을 위한 보조 손실을 3개나 사용한다. Expert-level, device-level balance, Communication Balance loss.
자세한 내용은 생략.
Token-Dropping Strategy
각 전문가의 용량 계수를 초과하는 토큰은 drop.
Pre-Training
Layers = 60
Hidden state dimension = 5120
Attention heads = 128, head dimension = 128
KV compression dimension = 512, Q compression dimension = 1536
MoE layer에는 2개의 shared experts와 160개의 routing experts가 있음
All parameters = 236B (activated parameters = 21B)
Sequence length = 4K (사전 훈련 후 YaRN을 통해 128K로 확장)
Training tokens = 8.1T (중국어 토큰이 영어 토큰보다 더 많음.)
중국어 토큰이 영어 토큰보다 더 많다. 그래서인지 영어 부분에서 LLaMA 3보다는 떨어지는 모습.
Alignment
DeepSeekMath에서 제안한 Group Relative Policy Optimization (GRPO) 사용.
G개의 출력을 샘플링하고 정규화된 보상으로 모델을 최적화한다.
코드 및 수학 추론 데이터에 대한 RL 훈련은 일반 데이터와 달리 장기간의 훈련에도 지속적으로 향상되었다고 한다.
따라서 코드 및 수학 추론 데이터에 대해 보상 모델을 훈련하고 먼저 정렬을 수행한다.
이후 유용성, 안전성, 규칙에 대해 다중 보상 최적화를 수행.
English open-ended conversation evaluation
중국어