본문 바로가기

논문 리뷰/Language Model

DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model

 

Abstract

MoE를 통한 경제적인 훈련, KV 캐시 압축을 통한 효율적인 추론이 특징인 236B (활성화 피라미터 21B) MoE 모델인 DeepSeek-V2 출시 (영어, 중국어)

 

[Github]

[arXiv](2024/05/08 version v2)

 

 

Architecture

언급되지 않는 사소한 세부 사항은 DeepSeek-67B를 따른다.

 

DeepSeek-V2


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

 

중국어