관심있는 NLP 논문을 읽어보고 간단히 정리했습니다.
혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 🙇♂️
[Mistral.AI]
- Mistral 7B 아키텍쳐에서 각 layer를 8개의 feedforward blocks (experts)로 구성한 Mixtral 8x7B 모델 (32K)
- 각 layer에서 router network가 current state를 처리하기 위한 두 개의 experts를 선정하고 두 결과물을 취합
- 각 토큰은 47B 파라미터에 대해 접근할 수 있지만 추론 단계에 활용되는 것은 13B의 activa parameters 뿐임
- instruction을 따르도록 tuning된 Mixtral 8x7B - Instruct 모델을 함께 공개
1. Introduction
본 논문는 introduction에서 Mixtral 8x7B에 대한 특징을 전부 설명합니다.
- faster inference speed at low batch-sizes & higher throughput
- 8개의 파라미터 그룹으로부터 두 개를 고르는 형태(둘을 가중합)의 feedforward block을 갖춘 decoder-only 모델
- 32k tokens의 context size로 multilingual data에 대해 사전학습된 모델
- 시퀀스의 길이, 시퀀스 내 포함된 정보의 위치에 관계 없이 모델 성능이 동일하게 유지됨
- fine-tuning + DPO로 학습된 Mixtral 8x7B - Instruct 모델은 GPT-3.5-turbo 이상의 성능을 보임
- Mixtral 8x7B, Mixtral 8x7B - Instruct, 두 모델을 Apache 2.0 라이스센스로 공개하여 상업적/비상업적 이용이 모두 가능
2. Architectural details
Sparse Mixture of Experts
입력 x가 주어지면 expert networks의 outputs을 가중합하여 구한 값을 MoE 모듈의 최종 output으로 결정합니다.
n개의 expert networks가 주어지면 expert layer의 output은 다음과 같이 정의됩니다.
$$\sum_{i=0}^{n-1}G(x)_{i} \cdot E_{i}(x)$$
- $G(x)_{i}$는 $i$번째 expert에 대한 gating network의 n-dimensional output입니다.
- 이때 $G(x):= Softmax(TopK(x \cdot W_{g}))$입니다. 입력 x와 gate의 가중치를 곱해서 얻은 결과 중 top K에 속하는 것은 그대로 반환하고, top K에 속하지 않는 것은 -∞를 반환합니다.
- $E_{i}(x)$는 $i$번째 expert network의 output입니다.
여기에서 K의 값은 고정하고 gating network의 차원 수인 n을 증가시킨다면 전체 파라미터의 숫자는 늘어나지만 실제로 활성화되는 파라미터의 수는 늘어나지 않습니다.
- 즉, sparse parameter count는 늘어나지만 active parameter count는 늘어나지 않습니다.
MoE layers는 뛰어난 성능의 specialized kernel이 있다면 single GPU로 실행할 수 있습니다.
또한 여러 개의 GPU를 사용하는 경우 Model Parallelism 기법이 적용 가능한데, 특히 Expert Parallelism (EP)을 적용할 수 있습니다.
Transformer 모델에서 MoE layer는 토큰마다 독립적으로 적용되고 feed-forward network를 대체합니다.
Mixtral의 경우, 각 토큰이 다른 가중치를 갖는 두 개의(K=2) SwiGLU sub-blocks로 routed 됩니다.
이에 따라 입력 토큰 x가 주어졌을 때 출력 y는 다음과 같이 정의됩니다.
$$y = \sum_{i=0}^{n-1}Softmax(Top2(x \cdot W_{g}))_{i} \cdot SwiGLU_{i}(x)$$
3. Results
Mixtral 모델을 Llama와 비교하기 위해 테스트한 벤치마크의 종류는 아래와 같습니다.
그리고 이에 대한 측정 결과는 다음 그래프들과 같이 나타납니다.
논문에 언급된 것처럼 특히나 추론 시에 사용되는 active parameter의 숫자가 Llama 70B 모델 대비 5배나 적음에도 불구하고 준수한 오히려 더 뛰어난 성능을 보인다는 점이 주목할 만한 특징입니다.
태스크 중에서는 특히나 Code 또는 Math 관련된 것들을 잘 처리한다는 것을 알 수 있습니다.
Mixtral 모델을 Llama 2 70B 모델 뿐만 아니라 GPT-3.5 turbo와도 비교했는데요 비교 결과는 다음과 같습니다.
이전 결과들과 마찬가지로 추론 능력이 많이 요구되는 태스크에서 좋은 성능을 보이고 있고, 그 결과가 LLaMA나 GPT-3.5의 것을 능가한다는 것이 확인됩니다.
3.1. Multilingual benchmarks
다국어 관련 태스크를 수행한 결과, Mixtral이 타언어에서도 뛰어난 성능을 보이고 있다는 것을 알 수 있습니다.
본 연구에서는 French, German, Spanish, Italian을 다루고 있습니다.
3.2. Long range performance
텍스트에 포함된 passkey를 찾는 태스크를 수행한 것과 context 길이에 따른 모델의 perplexity를 시각화한 그래프입니다.
전자의 경우 시퀀스의 길이에 전혀 상관 없이 passkey를 retrieve하는 태스크의 정확도가 모두 1.0임이 확인되었습니다.
후자의 경우 proof-pile 데이터셋에 대해 학습을 진행했을 경우 perplexity가 context 길이에 반비례한다는 것을 알 수 있습니다.
3.3. Bias Benchmarks
모델의 중립성을 확인할 수 있는 두 벤치마크 BBQ, BOLD에 대한 실험 결과입니다.
Llama 2 70B 모델 대비 정확도는 높으면서도 bias는 크게 차이나지 않는다는 것이 확인됩니다.
4. Instruction Fine-tuning
Mixtral 모델을 paired feedback dataset에 대해 Supervised Fine-Tuning (SFT)와 Direct Preference Optimization (DPO)를 적용한 모델이 Mixtral 8x7B - Instruct입니다.
논문이 공개될 당시를 기준으로 오픈 소스 모델 중 최고의 성능을 자랑하고 있으며, 오픈소스 중에서 Claude-2.1을 넘어서는 것은 최초라고 언급합니다.
5. Routing Analysis
학습 동안에 실제로 일부 experts가 특정 domain에 특화되었는지에 대해 확인한 분석 결과입니다.
layer 0, 15, 31번을 중심으로 비교한 결과, 오직 DM Mathematics에 대해서만 유의미한 분포 차이가 나타났습니다.
이때 중간에 해당하는 15번은 아니었고 시작과 끝에 해당하는, 즉 input과 output에 맞닿아 있는 0번과 31번 layer에서 그러한 특징이 두드러졌습니다.
결과에 대한 해석 중 주목할 만한 것은 expert가 학습한 것은 structured syntactic behavior라는 점입니다.
즉, 첫 번째와 마지막 레이어가 어떤 구조적인 특징에 대해 학습할 가능성이 높다는 뜻입니다.
6. Insights
추론 시에 필요한 자원을 최소화함과 동시에 latency를 낮춤으로써 LLM의 활용 가능성을 높이는 것에 대한 연구가 활발히 이뤄지고 있는 것 같습니다.
MoE는 로딩해두어야 하는 메모리의 크기는 큰 편이지만 추론을 빠르고 정확하게 수행할 수 있다는 장점이 있습니다.
하지만 이후에 이 방식의 한계로 자주 지적되고 있는 것 중 하나가 환경 설정이 어려움입니다.
즉, 추론을 위해서는 이와 같은 분산 처리가 의도한대로 이뤄질 수 있도록 하는 특수한 커널이 필요한데 이를 세팅하는 것이 굉장히 어렵다고 알려져 있습니다.
(UpStage의 SOLAR 페이퍼에 보면 이러한 어려움 없이 쉽게 성능 향상을 도모했다는 것을 그들의 contribution으로 꼽기도 합니다)
따라서 기존의 세팅을 크게 변경하지 않으면서도 이와 같은 논리를 적용할 수 있는 방법을 떠올리는 것도 좋은 연구 주제가 될 수 있을 것 같다는 생각이 듭니다.
출처 : https://arxiv.org/abs/2401.04088