본문 바로가기

자연어처리/LM

DeepSeek LLM: Scaling Open-Source Language Models with Longtermism

[2401.02954] DeepSeek LLM: Scaling Open-Source Language Models with Longtermism

 

DeepSeek LLM: Scaling Open-Source Language Models with Longtermism

The rapid development of open-source large language models (LLMs) has been truly remarkable. However, the scaling law described in previous literature presents varying conclusions, which casts a dark cloud over scaling LLMs. We delve into the study of scal

arxiv.org

 

1. Introduction

■ LLaMA 이후 오픈소스계는 LLM scaling laws에 대한 연구보다 주로 정해진 크기(예: 7B, 13B, 34B, 70B 시리즈)의 모델을 만드는 데 초점을 두고 있다. 

■ scaling laws에 대한 초기 연구들(OpenAI의 scaling laws와 Google의 chinchilla)은 모델과 데이터 확장에 대해 서로 다른 결론에 도달했으며, 하이퍼파라미터를 불충분하게 다루었다.  

■ 논문에서는 이러한 공백을 채우기 위해 LM의 scaling behavior에 대한 광범위한 실험을 진행하고, 그 결과를 널리 사용되는 모델 구성인 7B와 67B에 적용한다.  

■ 구체적으로, batch size와 learning rate의 scaling laws를 확인해서 model size에 따른 최적의 batch size와 learning rate를 확인하고, 이를 바탕으로 model 및 data scale에 대한 실험을 수행하여 최적의 model/data scaling-up allocation strategy와 large-scale models의 예상 성능을 예측한다.  

■ 그리고 개발 과정에서 서로 다른 데이터셋에서 도출된 scaling laws은 상당한 차이를 보인다는 것을 발견했다고 한다. 이는 데이터셋의 선택이 scaling behavior에 현저한 영향을 미치며. scaling laws를 일반화할 때 주의가 필요함을 시사한다.  

■ pre-training용으로 주로 중국어와 영어로 구성된 2T tokens을 수집했으며, 모델은 대체로 LLaMA의 아키텍처를 따랐으나, cosine learning rate scheduler를 multi-step learning rate scheduler로 교체하여 성능을 유지하면서도 continual training을 용이하게 했다.  

■ 그리고 SFT를 위해 다양한 소스에서 100만 개 이상의 instances을 수집했으며, DPO를 사용한다. 

■ base 및 chat models에 대해 평가를 수행한 결과, DeepSeek LLM은 특히 code, mathematics, reasoning 분야에서 LLaMA-2 70B를 능가하며, DeepSeek 67B chat model은 GPT-3.5보다 뛰어난 성능을 보인다.  



2. Pre-Training


2.1 Data

■ 데이터셋의 풍부함과 다양성을 포괄적으로 향상시키기 위해 three stages을 구성했다: deduplication, filtering, remixing

■ deduplication과 remixing stage를 통해 고유한 instances을 샘플링하여 데이터의 다양한 표현을 확보할 수 있으며, filtering은 정보의 밀도를 높여 더 효율적이고 효과적인 모델 학습을 가능하게 한다.  

■ deduplication 범위를 확장하는 aggressive한 deduplication strategy을 채택했는데, 자체적으로 분석한 결과 single dump 내에서중복을 제거하는 것에 비해 전체 corpus에 대해 중복 제거를 수행했을 때, 중복 인스턴스 제거율이 더 높은 것으로 나타났다고 한다.  

■ Table 1에서 single dump 방식(22.2% 중복 제거)보다 4배 더 많은 documents을 제거(89.8%)한 것을 볼 수 있다.  

■ filtering stage에서는 linguistic 및 semantic evaluations을 통해 data quality를 높인다. remixing에서는 data imbalances을 해결하기 위해 과소 대표된 도메인의 비중을 높이는 데 초점을 둔다.  

■ 토크나이저의 경우, 허깅페이스의 tokenizers 라이브러리를 기반으로 Byte-level Byte-Pair Encoding (BBPE) algorithm을 구현했다.  

■ GPT-2와 유사하게 개행 문자, 구두점, Chinese-Japanese-Korean (CJK) symbols와 같이 서로 다른 문자 범주의 토큰이 병합되는 것을 방지하기 위해 pre-tokenization을 진행했다. 또한, LLaMA에서 사용한 숫자 개별 자릿수 분할을 사용한다.  

■ 토크나이저를 약 24GB의 multilingual corpus에서 학습시켰다. vocabulary에 15개의 special tokens을 추가하였으며, 학습 중 계산 효율성 및 향후 필요할 수 있는 추가 special tokens을 위한 공간을 확보하기 위해 vocabulary size를 102400로 설정했다.  


2.2 Architecture

■ DeepSeek LLM의 design은 주로 LLaMA를 따른다. 

■ RMSNorm 함수를 사용한 Pre-Norm 구조를, FFN을 위한 activation function으로 SwiGLU를 사용하며, intermediate layer dimension은 \( \frac{8}{3} d_{model} \)로 설정했다.  

■ Rotary Embedding을 사용하며, inference cost를 최적화하기 위해 67B 모델은 MHA 대신 GQA를 사용한다. 

■ DeepSeek LLM 7B는 각각 30-layer network인 반면, 67B는 95 layer-layer network인데, 67B의 depth를 늘린 이유는 비슷한 크기의 다른 오픈 소스 모델과 총 파라미터를 맞추기 위한 측면도 있지만, model pipeline partitioning을 보다 용이하게 하기 위한 목적도 있다. 

■ GQA를 사용하는 대부분의 연구들과 달리, 더 나은 성능을 목표로 FFN 레이어의 intermediate width를 넓히는 대신 depth에서 67B 모델의 파라미터를 확장했다.  


2.3 Hyperparameters

■ DeepSeek LLM은 표준편차 0.006으로 초기화되며, \( \beta_1 = 0.9, \beta_2 = 0.95 \)와 weight decay 0.1의 AdamW를 사용한다. 

■ pre-training에서는 cosine scheduler 대신 multi-step learning rate scheduler가 사용된다. 

■ 구체적인 스케줄링 전략은, 모델의 학습률은 2000 warmup steps 이후 최댓값에 도달한 다음, training tokens의 80%를 처리한 후 최댓값의 31.6%로 감소한다. 처리 후에는 최댓값의 10%로 더 감소한다.  

■ 저자들의 empirical findings에 따르면, cosine scheduler가 부드러운 감소 곡선을 보이는 반면, multi-step learning rate scheduler는 계단식 감소 패턴을 보이지만 최종 성능은 Fig 1(a)에 나타난 바와 같이 cosine scheduler의 성능과 유사하다.  

■ 그리고 cosine scheduler는 정해진 steps에 맞춰 학습률을 감소시키기 때문에, 학습 도중에 continual training을 하기가 어렵다. (예: 학습 도중에 데이터를 더 추가하여 학습시키기) 

■ 그러나 multi-step 방식은 특정 단계(예: training tokens의 80%를 처리한 후 학습률 감소)에 학습률을 감소시키므로, 이전 단계의 학습을 재사용(즉, 이전 단계의 학습 구간 재사용)할 수 있게 하여 continual training에 용이하다.  

■ 이러한 이유로 저자들은 multi-step learning rate scheduler를 선택했다. 

■ 그리고 Fig 1(b)에서 볼 수 있듯이, multi-step learning rate scheduler의 구간 비율을 조정하면 성능을 약간 더 향상시킬 수 있는 것을 확인할 수 있다.  

■ 단, 구간 비율 선택에 따라 재사용 가능한 학습 구간을 줄이는 결과를 초래할 수 있다. 
- 예를 들어 80%/10%/10%의 구간 비율을 사용하면, 최대 학습률 구간인 80%까지의 학습 구간을 재사용할 수 있지만, 
- 60%/20%/20% 비율을 사용하면 60% 지점까지의 학습 구간만 재사용할 수 있다. 즉, 학습 재개할 때 60% 구간에 돌아가서 다시 학습을 진행해야 한다.  
- 이러한 이유로 저자들은 80%/10%/10%의 설정을 선택했다.  

■ 배치 크기와 학습률은 model size에 따라 다르다. (Table 2)



3. Scaling Laws

Kaplan과 Chinchilla의 scaling laws에서는 compute budget \( C \), model scale \( N \), data scale \( D \)가 증가함에 따라 모델 성능이 예측 가능하게 향상될 수 있음을 보여주었다.  

 scaling laws에서의 목표는 compute budget을 늘릴 때, "model scale과 data scale 사이의 할당을 어떻게 최적화할 것인가"이다. 

■ 그러나 Table 4에서 볼 수 있듯이, OpenAI와 Google의 scaling-up allocation strategy은 서로 다른 결론을 제시했다. 또한, compute budget이 바뀔 때 하이퍼파라미터를 어떻게 바꿔야 하는지에 대한 명확한 가이드가 부족하다.  

■ 논문에서는 이러한 불확실성을 해소하고, 확실한 로드맵을 구축하는 것을 목표로 한다.  


3.1 Scaling Laws for Hyperparameters

■ Fig 2(a)는 1e17의 적은 compute budget으로 batch size와 learning rate에 대한 grid search를 수행한 결과이다. 배치 크기와 학습률이 다양한 조합들에 걸쳐 오차가 안정적으로 유지되는 것을 볼 수 있다. 즉, 아주 정밀하게 맞추지 않아도 특정 범위 안에만 들어가면 좋은 성능을 낸다.  

■ 그 후, multi-step learning rate scheduler를 사용하여 첫 번째 학습 단계를 재사용함으로써(\( \rightarrow \)실험 비용 절감) , 1e17에서 2e19 범위의 compute budgets을 가진 서로 다른 배치 크기와 학습률을 가진 여러 개의 모델을 학습시켰다.  

■ 이때 Fig 2(a)의 결과처럼, 최적점 주변에 성능 차이가 거의 없는 영역들이 존재함(즉, 파라미터 공간의 중복성)을 고려하여, 오차 최솟값보다 0.25%를 초과하지 않는(즉, 오차 최솟값 + 0.25% 이내) 모델들이 사용한 파라미터를 near-optimal hyperparameters로 간주했다.  

■ 그런 다음 batch size \( B \)와 학습률 \( \eta \)를 compute budget \( C \)에 대해 fitting했다. 그 결과가 Fig 3이다.  

■ Fig 3의 fitting results은 \( C \)가 증가함에 따라 optimal batch size \( B \)는 점진적으로 증가하는 반면, optimal learning rate \( \eta \)는 점진적으로 감소함을 보여준다.  

■ 그리고 batch size와 learning rate 모두 near-optimal hyperparameters은 넓은 broad band 범위 내에 분포하며, 이는 이 구간 내에서 near-optimal parameters를 선택하는 것이 비교적 쉽다는 것을 나타내는 결과이다.  

■ 저자들이 batch size와 learning rate에 대해 최종적으로 피팅한 공식은 다음과 같다.

- optimal batch size의 식에서는 \( C \)의 지수가 양수이다. 즉, \( C \)가 커질수록 batch size를 키우는 것이 좋다.   
- 반대로 learning rate의 경우 지수가 음수이다. 그러므로 \( C \)가 커질수록 학습률을 낮추는 것이 좋다.  

■ 식 (1)의 공식을 더 큰 compute budget에서 적용한 결과가 Fig 2(b)이다. 피팅된 파라미터들이 optimal parameter space의 중심에 위치한 것을 볼 수 있다.  

■ 저자들은 이 공식을 사용하여 DeepSeek LLM 7B와 67B의 하이퍼파라미터를 결정했다. 

■ 단, 식 (1)은 \( C \) 이외의 요인들이 최적의 하이퍼파라미터에 미치는 영향을 고려하지 않았다는 점에 유의해야 한다. 기존 연구들은 최적의 배치 크기가 오직 loss \( L \)과 관련이 있다고 보았으나, 저자들은 \( C \)를 기준으로 공식을 세웠다.  

■ 그래서 저자들이 동일한 \( C \)하에서 서로 다른 model/data allocations을 갖는 모델들을 추가로 실험하였고, 그 결과 최적 파라미터 공간이 다소 달라짐을 확인했다고 한다. 이는 최적의 하이퍼파라미터를 찾기 위해선 \( C \) 이외에 다른 요인들이 함께 고려되어야 함을 시사한다.  


3.2 Estimating Optimal Model and Data Scaling

■ near-optimal hyperparameters을 피팅하기 위한 공식 (1)을 도출한 후, \( N_{opt} \propto C^a$ and $D_{opt} \propto C^b \)를 각각 만족하는 model scaling exponent \( a \)와 data scaling exponent \( b \)를 찾는 optimal model/data scaling-up allocation strategy을 찾고자 하였다. 

■ data scale \( D \)는 dataset의 tokens 수로 표현될 수 있다. model scale의 경우 이전 연구들에서는 model parameters로 표현되었으며, non-embedding parameters \( N_1 \)(Kaplan scaling laws)과 complete parameters \( N_2 \)(Chinchilla scaling laws)가 사용되었다.  
- \( N_1 \): the number of model parameters, excluding all vocabulary and positional embeddings
- \( N_2 \): complete model parameters 

■ Kaplan과 Chinchilla의 scaling laws에서는 \( C \)와 model/data scale 간의 관계를 대략 \( C = 6ND \)로 도출했다. 이는 model scale을 근사하기 위해 \( 6N_1 \)이나 \( 6N_2 \)를 사용할 수 있음을 의미한다.  

■ 그러나 \( 6N_1 \)과 \( 6N_2 \) 모두 어텐션 연산의 계산 오버헤드를 고려하지 않으며, \( 6N_2 \)는 model capacity에 기여하는 바가 적은 vocabulary computation을 포함하고 있기 때문에, 두 지표 모두 특정 설정에서는 상당한 approximation error를 가진다. 
- 기존 연구들의  \( C \approx 6ND \)는 어텐션 연산이나 vocabulary size에 따른 연산량 차이를 정밀하게 반영하지 못한다.  
- 보통 모델이 작을수록 전체 파라미터 중 vocabulary embedding이 차지하는 비중이 커진다. embedding layer는 연산량은 작지만 파라미터 수는 많다. 반면, 어텐션 연산은 파라미터 수는 vocabulary embedding보다 적지만 연산량은 많다. 
- 그래서 이전 연구들의 공식을 비교적 작은 모델에 사용하면, 실제 연산량과 근사치에 대한 오차가 커진다.  

■ 이러한 오차를 완화하기 위해, 저자들은 토큰당 non-embedding FLOPs \( M \)(non-embedding FLOPs/token \( M \))이라는 개념을 도입했다.  

■ \( M \)은 embedding 층을 제외한, 실제 연산이 일어나는 층들의 토큰당 연산량이다. 즉, \( M \)은 어텐션 연산의 계산 오버헤드를 포함하지만 vocabulary computation은 고려하지 않는다.  

■ model scale을 \( M \)으로 표현하면, compute budget \( C \)는 \( C=MD \)로 간단하게 표현할 수 있다. 

■ \( 6N_1, 6N_2 \) 그리고 \( M \) 간의 구체적인 차이는 아래 공식 (2)와 같다.

- 여기서 \( n_{layer} \)는 number of layers, \( d_{model} \)은 model width, \( n_{vocab} \)은 vocabulary size, \( l_{seq} \)는 sequence length이다.  

■ Table 3은 다양한 scales의 모델들에 걸쳐 이 세가지 방식 간의 차이를 비교한 결과이다. 

■ \( 6N_1 \)과 \( 6N_2 \) 모두 다양한 scales의 모델들에서 computational cost를 과대평가하거나 과소평가함을 보여준다. 특히, 이러한 불일치는 small-scale models에서 두드러지게 나타난다.  
- \( N_1, N_2 \) 그리고 \( M \)의 정의를 고려하면,  \( 6N_1 / M \)과 \( 6N_2 / M \)의 값은 1에 가까울수록 파라미터 \( N \)(\( N_1 \)이나 \( N_2 \))이 계산 효율적으로 활용되고 있는 것이다.  
- large-scale model일수록 이 값이 1에 가까워진다. 그러나 small-scale model로 갈수록 값의 불일치가 커진다.  

■ 저자들은 \( C = MD \)가 주어졌을 때, 모델의 generalization error를 최소화하는 optimal model scale \( M_{opt} \)와 data scale \( D_{opt} \)를 찾고자 하였다. 이 목표는 식 (3)과 같이 나타낼 수 있다.  

■ 실험 비용과 fitting의 어려움을 줄이기 위해, Chinchilla의 접근 방식을 사용하여 scaling curve를 피팅했다. 1e17에서 3e20 범위의 8가지 compute budgets을 사용하며, 각 budget에 대해 10가지의 model/data scale allocations을 적용했다.  

■ 그 결과에 대한 scaling curve이 Fig 4이며, 이를 통해 식 (4)와 같은 optimal non-embedding FLOPs/token \( M_{opt} \)와 optimal tokens \( D_{opt} \)를 제시한다.  

- 이는 \( C \)가 10배 늘어날 때, 모델 크기는 약 \( 10^{0.5243} \approx 3.34 \)배, 데이터 크기는 약 \( 10^{0.4757} \approx 2.99 \)배 늘리는 것이 최적이라는 의미이다. 
- Chinchilla의 결과(\( C \)가 커질수록 모델 크기와 데이터 크기를 균형 있게 키워야 한다)와 약간 다르게, 저자들은 \( C \)가 커질수록 모델 크기와 데이터 크기를 균형 있게 키워야 하지만, 모델 크기를 데이터 크기보다 조금 더 늘리는 것(즉, \( a > b \))이 효율적이라는 결론을 내렸다.  

■ Fig 5는 이렇게 작은 모델들로 도출한 공식을 사용하여, 실제로 학습시킬 large-scale model 67B 모델의 성능을 예측하는 실험을 진행한 결과이다.   

■ Fig 5의 점선은 smaller model(회색 원)에 맞는 power law를 나타낸 것이다. 파란 별들은 DeepSeek LLM 7B와 67B를 나타낸 것이다. 7B와 67B의 성능이 점선 위에 거의 정확히 놓인 것을 볼 수 있다.  

■ 이는 작은 모델 실험만으로도 대형 모델의 성능을 정확히 예측할 수 있음을 보여준다.


3.3 Scaling Laws with Different Data

■ DeepSeek LLM의 dataset은 데이터의 품질을 전반적으로 향상시키면서, 다양한 데이터 소스의 비율을 조정하는 방식으로 여러 번 refined되었다. 이 과정에서 얻었던 datasets을 활용해 dataset이 scaling laws에 미치는 영향을 분석했다.  

■ 서로 다른 세 가지 dataset을 사용하여 scaling laws를 확인했다: early in-house data(즉, 개발 초기 단계의 데이터), current in-house data, 그리고 Kaplan에서 활용되었던 OpenWebText2이다.  
- 데이터 품질 순서는 OpenWebText2 > Current > Early 

■ Table 4에서 데이터 품질이 향상될수록 model scaling exponent \( a \)는 점진적으로 증가하는 반면, data scaling exponen \( b \)는 감소함을 볼 수 있다.  

■ 이는 compute budget이 커질 경우, 데이터 품질이 높을수록 data보다는 model scale에 더 많이 할당해야 함을 시사한다.  

■ 그리고 저자들은 이 발견으로 왜 Kaplan과 Chinchilla의 결과가 다른지 설명할 수 있다고 언급한다.  
- Kaplan에서 model scale을 키우라는 결과가 나온 것은 고품질 데이터를 썼기 때문이며, Chinchilla에서는 상대적으로 덜 정제된 데이터를 썼기 때문에 model과 data scale을 비슷하게 늘리나는 결과가 나온 것으로 추측한다.  
- 이 것이 맞다면, data가 high-quality인 경우 비교적 적은 데이터로도 큰 모델을 충분히 학습시킬 수 있음을 의미하며, data가 품질이 낮다면 모델을 키우기보다 데이터를 더 많이 모델에게 보여주는 것이 유리하다는 결론으로 이어진다.  



4. Alignment

■ helpfulness와 harmlessness topics에 대한 영어 및 중국어 instruction data instances을 약 1.5M 개 수집했다. 

■ 수집한 데이터 중 300K의 instances은 safety data이다. 그리고 1.2M 개의 instances이 helpful data이며, 이는 general language tasks 31.2%, mathematical problems 46.6%, coding exercises 22.2%로 구성되어 있다.  

■ DeepSeek LLM의 alignment pipeline은 다음과 같이 two stages로 구성된다: SFT, DPO

Supervised Fine-Tuning

■ 7B 모델을 4 epochs 동안 파인튜닝했지만, 67B는 overfitting이 발생하여 2 epochs만 학습시켰다. 학습률은 7B 및 67B 모델에 대해 각각 1e-5, 5e-6을 사용하였다.  

■ benchmark accuracy를 모니터링했을 때, 7B의 경우 GSM8K와 HumanEval에 대한 성능이 지속적으로 향상되는 반면, 67B는 빠르게 상한선에 도달했다고 한다.  

■ benchmark accuracy 모니터링 외에도, fine-tuning process에서 chat model의 repetition ratio를 측정하였다.  

■ 총 3,868개의 중국어 및 영어 프롬프트를 수집했고, 생성을 종료하지 못한 채 텍스트 시퀀스를 끝없이 반복하는 응답의 비율을 확인했으며, math SFT data의 양이 증가함에 따라 repetition ratio가 상승하는 경향이 있음을 관찰했다고 한다.  

■ 이에 대해 저자들은 math data에 서로 유사한 추론 패턴을 포함하고 있는 문제들이 존재하기 때문인 것으로 추측한다. 

■ 결과적으로, weaker models이 추론 패턴을 파악하는 데 어려움을 겪으며 repetitive responses을 출력했다고 한다. 

■ 이 문제를 해결하기 위해 two-stage fine-tuning과 DPO를 시도했으며, 두 방법 모두 벤치마크 점수를 거의 유지하면서 repetition을 크게 줄일 수 있었다고 한다.  

DPO 

■ 모델의 능력을 더 향상시키기 위해, DPO 알고리즘을 사용했다. 

■ DPO 학습을 위해 helpfulness 및 harmlessness에 대한 preference data를 구축했다. 

■ helpfulness data의 경우 creative writing, question answering, instruction following 등을 포함하는 multilingual prompts을 수집했다. 그런 다음, DeepSeek Chat models을 사용하여 response candidates을 생성했다.  

■ harmlessness preference data에도 이러한 과정을 적용하였다. 

■ 학습률 5e-6, 배치 크기 512로 DPO를 1 epoch로 학습시켰으며, learning rate warmup과 cosine learning rate scheduler를 사용했다.  

■ 이렇게 DPO를 적용한 결과, 모델의 open-ended generation skill이 개선되었지만, standard benchmarks의 성능은 크게 변하지 않았다.