최근(2023.09)에 나온 논문을 읽어보고 간단히 정리했습니다.
혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 🙇♂️
[Qwen Team, Alibaba Group]
유사한 사이즈 모델 대비 우수한 성능을 보이는 Qwen model series를 공개.
Qwen, Qwen-Chat, Code-Qwen, Code-Qwen-Chat, Math-Qwen-Chat
배경
최근 핫하게 떠오르는 Qwen 모델의 technical report가 있어 이를 살펴보고 간단히 정리해보고자 합니다.
Qwen은 Qianwen이라는 중국 구절에서 따온 것으로, 'thousands of prompts'라는 의미를 담고 있다고 합니다.
위 모델 series 구성도에서 볼 수 있는 것처럼, pre-trained model, RM model, SFT model, RLHF model 등 그 구성이 다양합니다.
이정도의 다양한 모델을 한꺼번에 공개한 것은 Microsoft의 Wizard LM과 관련 모델 패밀리를 떠올리게 만드네요.
요약
- 베이스 언어 모델 QWEN은 다양한 텍스트와 코드로 구성된 3 trillion개의 토큰으로 학습되었다.
덕분에 비슷한 사이즈의 counterparts에 대해 우수한 downstream task performance를 보여줄 수 있다. - QWEN-CHAT 모델은 task, chat, tool use, agent, safety와 관련하여 정제된 데이터셋에 신중을 기하여 fine-tuned 되었다.
또한 RLHF를 적용하기 위해 human prefrerence를 반영하는 reward 모델을 학습시켰다.
RLHF로 학습된 QWEN-CHAT 모델은 뛰어난 성능을 보였지만, GPT-4에 비해서는 여전히 못미치는 수준이다. - Code-Qwen & Code-Qwen-Chat과 같은 specialized 모델들 또한 공개되었다.
Code-Qwen은 방대한 양의 코드 데이터에 대해 사전 학습된 후, code generation, debugging, interpretation와 관련된 대화에 대해 fine-tune 되었다. - 추가로 Math-Qwen-Chat이라는 모델은 수학적 문제를 다루기 위해 고안된 모델로, GSM8K와 같은 MWPS 벤치마크에서 GPT-3.5를 넘어서는 퍼포먼스를 보여주었다.
- visual and language instruction을 이해할 수 있는 능력을 갖춘 Qwen-VL, Qwen-VL-Chat 모델도 공개되었다.
이 모델들은 여러 태스크에서 현재 공개된 open-source vision-language 모델들 대비 우수한 성능을 보여주었다.
Pretraining
- Data : 모델 학습에 사용되는 데이터의 양이 모델 성능에 크게 영향을 준다는 것은 이미 잘 알려져 있습니다. 따라서 대규모의 고품질 데이터셋을 확보하기 위한 pre-processing, deduplication 등에 대한 내용이 report에 잘 기술되어 있습니다.
- Tokenization : byte pair encoding(BPE)를 사용했습니다. encoding compreesion 비율 그래프를 보면 다른 모델들 대비 긴 context를 잘 압축할 수 있다고 해석할 수 있습니다.
- Architecture : open-source LLM, LLaMA의 architecture를 채택했습니다. 변경 사항은 다음과 같습니다.
- Embedding and output projection : united embedding approach
- Positional embedding : RoPE (Rotary Positional Embedding), FP32 precision 사용
- Bias : QKV attention layer에 bias를 추가
- Pre-Norm & RMSNorm : 최근 가장 많이 사용되는 pre-normalizatoin 활용
- Activation function : Swish와 Gated Linear Unit을 결합한 SwiGLU 사용
- Training : 표준 autoregressive language modeling 방식을 따릅니다. 또한 학습 안정성을 위해 BFloat16 mixed precision을 사용합니다.
- Context Length Extension
- dynamic NTK-aware interpolation : chunck 단위로 scale을 dynamic하게 변경
- LogN-Scaling + window attention
- lower layer가 context length에 더욱 민감한 것이 확인됨 -> shorter windows for lower layers & longer windows for higher layers
Alignment
- Supvervised Finetuning
- Data : 다양한 스타일의 대화 데이터에 대해 annotation 수행. 고품질 데이터셋을 직접 확보
- Training : next-token prediction 방식으로 SFT. 단, system / user input에 대해서는 loss mask를 적용.
- Reinforcement Learning from Human Feedback
- fine-tuning 단계에서 Qwen 모델로부터 나온 response에 대한 human feedback을 바탕으로 reward model을 조정
- Qwen 모델과 동일한 사이즈의 사전 학습 모델을 reward 모델로 사용
- Preference Model Pretraining (PMP) vs Reward Model (RM)
- Proximal Policy Optimization (PPO) : the policy model, value model, reference model, reward model
- Automatic and Human Evaluation of Aligned Models
- zero / few shot 기준으로 모델 성능을 여러 벤치마크에 대해 평가
- 유사한 사이즈의 open-source 모델 대비 우월한 성능/퍼포먼스를 보여줌
- 하지만 GPT-3.5, GPT-4에 한참 미치지 못하는 성능
- Tool Use, Code Interpreter, and Agent
- 중국어 벤치마크에 대해 어느 정도의 성능을 보이는지 Qwen-Chat 모델과 GPT를 비교
- 여기에서는 GPT보다도 월등한 성능을 보여주었음
- unseen tools, Python code interpreter, Hugging Face's extensive collection 이용
- 마찬가지로 open-source 모델 대비 월등한 성능, but GPT 대비 열등한 성능
- 중국어 벤치마크에 대해 어느 정도의 성능을 보이는지 Qwen-Chat 모델과 GPT를 비교
기타
나머지 내용은 specialized model for specific tasks에 관한 내용입니다.
코드 관련 태스크를 수행하는데 특화된 모델을 fine-tuning 했거나, mathematics reasoning을 위한 fine-tuning 모델에 대한 설명이 정리되어 있습니다.
아주 간단히 요약하면,
코드 뿐만 아니라 범용적인 텍스트 데이터와 대화 또는 설명에 특화된 데이터를 고루 학습(fine-tuning)하는 것이 모델 성능 향상에 도움이 된다는 내용입니다.(너무 뻔한 내용 😓)
맨 처음 모델 가족도에서 확인할 수 있는 것이긴 하지만 상당히 흥미로운 것은 이러한 specialized model은 전부 CHAT 모델이라는 것입니다.
Code-Qwen-Chat, Math-Qwen-Chat, Qwen-VL-Chat. 이 세 모델은 각각 code, mathematical reasoning, visual and language 특화 모델들입니다.
사람이 주는 명령어(prompt)에 대해 대화형 챗봇처럼 잘 반응할 수 있도록 fine-tuning 되었다고 볼 수 있습니다.
개인적 감상
- 그래서 뭐가 다르지..?
성능적인 평가는 차치하고서라도 어떤 차별점이 있는 것인지 솔직히 알아차리기 어려운 것 같습니다.
맨 처음에도 MS사의 Wizard LM이 떠올랐다고 말씀드렸는데요, 더 생각해보자면 OpenAI의 GPT 모델 종류도 엄청나게 많단 말이죠.. 🧐
OpenAI API를 사용하려고 하면 수많은 모델 종류에 당황하게 되고, 각 모델이 어디에 적합한지 알아보는 것도 일인데요..
이것만 봐도 엄청나게 많은 모델 종류가 있는데(더 있습니다..), 학습된 여러 모델을 한꺼번에 출시했다는 것을 강점으로 내세운 걸까 싶기는 했습니다.
- 결국 open-source model 간의 경쟁인가?
최근 떠오르는 논문/모델들을 보면 죄다 open-source 모델 중 최강자라는 것을 contribution으로 내세우는 것 같습니다.
이미 GPT-3.5나 GPT-4 모델 정도만 되어도 엄청난 성능을 보여주기도 하고, 이것을 학습시키는데 들어간 자원량이 어마무시하게 많아서 그런지 이를 넘어서기 위한 연구나 실험은 이뤄지는 것이 지금 시점에서는 불가능한 것인가 싶기도 합니다.
더 많은 시간과 자원을 들여(윤리 문제.. 환경 문제 등 말이 많았죠) 더 거대한 모델이 태어나는 것 아니냐는 이야기도 무성했는데 그런 걱정은 좀 사그라든 분위기인 것으로 느껴집니다.