currybab's devlog

MiniCPM 정리

소형 언어모델에 관심이 계속 생겨서 앞으로 관련된 좋은 학습 방법을 공부해보려고 한다. 오늘 정리해 볼 것은 MiniCPM의 technical report이다. 2.4B의 모델로도 상당히 좋은 벤치마크를 중국어와 영어 모두에서 기록하였다고 한다.

뭔가 정리하고 싶었는데 사실상 번역이 된것 같기도 하고…

Introduction

MiniCPM은 edge-side llm 시리즈로 embedding layer를 제외한 2.4B 파라미터를 가진 MiniCPM-2B를 기반으로 함.

Mistral-7B와 근사한 벤치마크 성적을 기록하였으며 중국어, 코딩, 수학에서는 더 뛰어난 성능을 가졌다고 함. 또한 Llama2-13B, MPT-30B, Falcon-40B와 같은 모델들보다 더 뛰어난 성능을 기록하였다고 함. 또한 (user 경험과 유사한 벤치마크인) MTBench에서 대표적인 오픈소스 모델들보다 더 뛰어난 성적을 거둠.

공개한 모델의 목록은 다음과 같음.

한계점은 다음과 같음.

대체로 모델 크기에 따른 제약사항을 적어둠.

Model Wind Tunnel Experiment

해당 단어를 claude에게 물어보니 실제 크기의 물체 대신에 축소 모형을 사용하여 공기역학적 특성을 실험하는 방법이라고 한다. 대형 모델의 경우 실험 비용이 많이 들고 configuration 튜닝 없이는 최적의 성능을 달성하기 어렵다고 해서 해당 실험을 구성하였다고 한다. 해당 실험은 크게 다섯 가지 측면에서 진행되었다.

1. Scaling Up Models with Stable Hyperparameters

NameSpecific Operation
Embedding Output Scalingembedding의 output에 12를 곱함
Residual Connection Scaling각 레이어의 각 residual connection에서 1.4/sqrt(num_layers) = 1.4/sqrt(40)로 증분을 스케일링
Initialization of Tensors각 2차원 텐서 파라미터의 초기화 표준 편차를 0.1/sqrt(dim_model/256) = 1/30으로 설정하고 다른 파라미터의 초기화를 0.1로 설정
Learning Rate Scaling of Tensors각 2차원 텐서 파라미터의 학습 속도를 다른 부분의 학습 속도(또는 전체 학습 속도)의 1/(dim_model/256) = 1/9배로 조정
lm_head Scaling출력 로그를 1/(dim_model/256) = 원래 값의 1/9배로 조정

2. Optimal Batchsize

위 그림에서 빨간 선을 로그스케일하고 연결하면 아래 그림과 같이 됨.

Untitled (2)

Batch size와 C4 손실 간의 관계를 다음과 같이 구할 수 있었음. $$BS = \frac{1.2110 \times 10^9}{L^{6.2393}}$$

이 패턴에 따라 2B 모델이 약 2.5의 C4 손실에 도달하려면 4M의 배치 크기가 적합할 것으로 예상했다고 함.

3. Optimal Learning Rate

loss_vs_lr

4. Optimal Learning Rate Scheduler (WSD Scheduler)

Learning Rate Scheduler는 학습의 여러 단계에서 사용되는 학습 속도를 조정하는 기능으로, 모델 성능에 매우 중요한 역할을 함.

먼저 코사인 스케줄러가 뛰어난 성능을 보이는 이유를 조사하기 위해 다양한 실험을 진행.

하지만 continuous training 시나리오를 생각했을 때에 코사인 스케줄러에서 더 많은 이슈들이 있었다고 함.

5. Batchsize Scheduling

6. How many times can continuous training of a fixed-size model reach that of a large model?

7. Continuous Training-Friendly Data Strategy

Vocabulary

Two-Stage Pretraining

1. Stable Training Stage

Data Mixture of Stable Stage

2. Annealing Phase

구글에 검색해보니 “어닐링(annealing, 풀림) 은 재결정화 온도 이상의 고온에서 오랫동안 금속을 노출시켜 금속을 더 부드럽게 만드는 작업이다.“라고 나옴.

decay_data_mixture

어닐링 단계에서 C4 손실의 변화 (아래 그림) c4_loss_annealing_phase

Alignment

Comprehensive Evaluation

Benchmark - SFT Model: MiniCPM-sft

저자들의 open source인 UltraEval을 사용함. 데이터셋트로는 다음을 사용함.

전반적으로 언급된 데이터 세트에서 MiniCPM은 영어에서는 Mistral-7B-v0.1과 비슷한 성능을 보였지만 중국어에서는 Mistral-7B-v0.1보다 훨씬 뛰어난 성능을 보였음.

대부분의 7B 규모 모델보다 성능이 뛰어나거나 비슷한 수준이며, 10B 규모 이상의 일부 모델보다 성능이 뛰어남.

비슷한 사이즈의 소규모 모델과 비교하면 특정 영어 평가 데이터 세트를 제외한 모든 테스트 세트에서 사용 가능한 모든 모델보다 성능이 우수했음.

특이한 점으로는 Phi-2의 평가 결과는 Mistral-7B를 능가하지만 실제 사용자 경험은 동등한 수준에 이르지 못하는 것으로 나타났다고 함.

QA 작업을 테스트할 때는 일반적으로 두 가지 접근 방식이 사용됩니다. 첫 번째는 질문의 연속으로 옵션을 확장할 때 선택 기준이 되는 난해성(PPL)을 사용하는 것입니다. 두 번째는 모델이 직접 답변 옵션을 출력하는 직접 생성 방식입니다. 이 두 가지 방법을 사용하여 얻은 결과에는 상당한 차이가 있음을 관찰했습니다. 실제로 MiniCPM은 직접 생성과 PPL 테스트에서 비슷한 성능을 보였으며, 직접 생성에서 더 나은 성능을 보였습니다. 반면, Mistral-7B-v0.1은 PPL 테스트에서는 더 나은 성능을 보였지만 직접 생성에서는 더 낮은 성능을 보였습니다. 이러한 현상을 해결하기 위해 각 모델에 대한 점수를 보고할 때 가장 높은 점수를 얻은 평가 방법의 점수를 채택하여 비교의 공정성을 보장합니다.

Benchmark - DPO Model: MiniCPM-dpo

preference alignment를 위해 DPO를 적용한 이후 MT-Bench 점수가 6.89(SFT)에서 7.25로 올랐다고 함.(Llama2-70B-Chat를 넘는 수치임)

주석으로 해당 MT-bench 점수에 대해서 유의사항을 적어놓았음.

UltraFeedback과 같은 일부 SFT 데이터와 강화 학습 데이터는 MTBench의 평가에 유리할 수 있음. 예를 들어, 모델의 생성 스타일을 개선하여 GPT-4 평가자의 선호도에 더 부합할 수 있으며, Zephyr-7B도 유사한 편향성을 보일 수 있음. 따라서 연구자들은 리더보드의 평가 결과를 차분히 살펴볼 것을 권장함. 또한, 작은 2B 모델로서 많은 작업에서 여전히 Llama2-70B-Chat보다 약할 수 있음.

dpo_benchmark

#Train