안녕하세요! 오늘은 Mixture-of-Experts(MoE) 언어 모델을 고성능 GPU 없이도 빠르게 처리할 수 있는 새로운 기술에 대한 논문을 살펴보겠습니다. MoE는 각 분야에 특화된 서브네트워크(sub-network)를 의미하는 "전문가(Experts)"의 조합을 통해 입력 데이터를 처리하는 기술입니다. MoE 언어 모델 Mixtral-8x7B는 총 560억 개 파라미터를 가지며, Llama 2 70B 및 GPT3.5와 비교한 대부분의 벤치마크에서 매우 우수한 성능을 나타냅니다. 이 블로그를 통해서 제한된 GPU메모리 환경에서 MoE 언어 모델의 빠른 추론을 위한 혁신적인 기술들과 DEMO사이트에 대해서 살펴 보실수 있습니다.
2023.12.13 - [대규모 언어모델] - ChatGPT의 강력한 경쟁 언어모델 등장!, Mixtral 8x7B
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
논문 개요 및 목적
- 논문 제목: Fast Inference of Mixture-of-Experts Language Models with Offloading
- 논문저자: Artyom Eliseev 등
- 논문게재 사이트: https://arxiv.org/abs/2312.17238
- 논문게재일: 2023.12
이 논문은 Mixture-of-Experts(MoE) 언어 모델의 빠른 추론을 위한 새로운 기술에 관한 것입니다. MoE 모델은 최근 자연어처리 분야에서 주목을 받고 있으며, 이 논문에서는 이를 더욱 효율적으로 사용할 수 있도록 하는 방법에 중점을 두고 있습니다.
이 연구의 목적은 MoE 언어 모델의 추론 속도를 향상하기 위한 새로운 접근 방식을 제시하고, 이를 통해 제한된 GPU 메모리를 보다 효과적으로 활용하는 방법을 찾는 것입니다. 기존의 방법론에서 발생하는 문제를 해결하고자 함으로써 MoE 모델의 실용성을 향상시키는 것이 목표입니다.
논문의 연구내용 및 결과
Mixture-of-Experts (MoE) 모델은 분야별로 특화된 서브 네트워크인 전문가들의 혼합을 통해 뛰어난 성능을 보이도록 설계되었습니다. 이 모델은 게이팅 네트워크를 활용하여 어떤 전문가를 선택할지 학습하고, 선택된 전문가에게 샘플을 할당함으로써 다양한 측면에 대해 전문화된 전문가들의 결합으로 높은 성능을 달성합니다.
이 논문에서 MoE 언어 모델의 추론 속도를 높이기 위해 제시된 주요 기술은 다음과 같습니다:
1. 전문가의 지역성과 LRU 캐싱
Mixture-of-Experts (MoE) 언어 모델의 추론 속도를 높이기 위한 전략 중 하나로, 각 레이어에서 사용되는 전문가들의 지역성을 활용하고 Least Recently Used (LRU) 캐싱을 도입하여 가장 최근에 사용되지 않은 것을 먼저 제거하는 캐싱 전략을 통해 추론 성능을 최적화합니다.
- 전문가의 지역성(Expert Locality): MoE 모델에서는 각 전문가가 특정한 하위 작업에 할당되는 경향이 있습니다. 이것은 특정 전문가가 일련의 토큰에서 활성화되고, 그다음 일련의 토큰에서는 다른 전문가가 활성화되는 것과 관련이 있습니다. 즉, 일부 전문가들은 짧은 시퀀스에서 활성화되는 "지역성"을 보이며, 다른 전문가들은 일정 시퀀스 간격으로 활성화됩니다.
- LRU 캐싱(LRU Caching): LRU 캐싱은 가장 최근에 사용된 전문가를 캐시 메모리에 유지하여 추후에 빠르게 재활용할 수 있도록 하는 전략입니다. 각 레이어에서는 최근에 사용되지 않은 일부 전문가를 LRU 캐시로 유지합니다. 만약 추론 중에 동일한 전문가가 다시 활성화되면, 해당 전문가는 이미 캐시에 있기 때문에 즉시 사용할 수 있습니다. 이를 통해 모델은 주로 활용되는 전문가들을 메모리에 유지함으로써 캐시 된 전문가들은 메모리에서 불러올 필요가 없어져서 추론 속도를 향상시키고, 추론 성능을 최적화합니다.
LRU 캐싱의 구체적인 동작 순서는 다음과 같습니다.
- 1. 각 레이어에서 사용되는 전문가들의 활성화 패턴을 관찰하고 기록합니다.
- 2. LRU 캐시에 최근에 사용된 일부 전문가를 유지합니다.
- 3. 만약 현재 토큰 처리 시에 동일한 전문가가 캐시에 있다면, 해당 전문가를 메모리에서 불러오지 않고 캐시 된 값을 사용합니다.
- 4. 캐시 된 전문가가 없는 경우, 메모리에서 필요한 전문가를 불러옵니다.
- 5. 이 과정을 반복하여 효율적인 추론을 진행합니다.
이러한 전략은 모델이 특정 작업에 특화된 전문가를 효율적으로 재활용하고, 메모리 로딩을 최소화하여 추론 속도를 향상시킵니다.
2. 추측기반 전문가 로딩
추측기반 전문가 로딩은 추론 중인 동안 다음 레이어의 전문가를 미리 로딩하지 못할 때, 예측을 기반으로 미리 로딩하는 것으로, 모델 예측에 영향을 미치지 않으면서 추론 속도를 최적화하는 방법입니다. 이 기술은 현재 레이어의 은닉 상태를 사용하여 다음 레이어에서 어떤 전문가들이 활성화될 것인지를 추론하는 방식으로 동작합니다.
일반적인 Mixture-of-Experts 모델에서는 모델의 각 레이어가 이전 레이어의 출력을 사용하여 활성화될 전문가를 선택합니다. 추측기반 전문가 로딩은 이러한 특성을 활용하여 이전 레이어의 은닉(Hidden, 히든) 상태에 다음 레이어의 게이팅 함수를 적용함으로써 다음 레이어에서 활성화될 가능성이 높은 전문가들을 추측합니다. 이 추측은 실제 모델 예측에 영향을 주지 않으며, 모델이 최종 결과를 내는 데에는 변함이 없지만, 추론 시간을 단축할 수 있습니다. 이 추측이 정확한 경우 다음 레이어의 추론이 빨라지며, 그렇지 않은 경우에는 실제 다음 레이어의 전문가들을 나중에 로딩합니다. 이로써 추론의 지연 시간을 감소시키는 데 기여할 수 있습니다. 접은 글 더 보기를 통해 트랜스포머 네트워크에서 모델의 학습향상을 위한 은닉 상태 전송의 목적과 잔여 연결에 대한 세부내용을 확인하실 수 있습니다.
이전 레이어의 정보를 그대로 전송하는 대신에 히든 상태를 잔여적으로 보내는 이유는 훈련 과정에서 모델의 학습을 향상시키기 위함입니다. 이러한 구조를 잔여 연결(residual connection)이라고 합니다.
1. 그래디언트 흐름 강화: 잔여 연결은 역전파 과정에서 그래디언트의 흐름을 강화합니다. 그래디언트가 히든 상태를 통해 쉽게 흐를 수 있도록 함으로써, 모델이 더 빠르게 수렴하고 장기적인 의존성을 학습할 수 있게 됩니다.
2. 훈련 안정성: 잔여 연결은 네트워크를 더 깊게 만들어도 훈련을 안정적으로 유지하는 데 도움을 줍니다. 딥 뉴럴 네트워크에서 그래디언트 소실 또는 폭주의 문제가 발생할 수 있는데, 잔여 연결은 이러한 문제를 완화하여 훈련의 안정성을 향상시킵니다.
3. 정보 전달: 히든 상태의 잔여 연결은 이전 레이어에서 추출한 정보를 다음 레이어로 전달합니다. 이전 레이어에서 감지된 중요한 특징이나 패턴이 다음 레이어에서도 유지되면서 더 높은 수준의 추상화된 정보를 만들어냅니다.
4. 최적화: 잔여 연결은 최적화 과정에서 발생할 수 있는 그래디언트 소실 문제를 완화하므로, 더 빠른 학습과 더 나은 일반화 능력을 제공합니다.
이러한 이유로 잔여 연결은 딥 뉴럴 네트워크에서 흔히 사용되는 효과적인 기술 중 하나입니다.
추측기반 전문가 로딩의 구체적인 동작 순서는 다음과 같습니다
- 1. 이전 레이어의 히든 상태 활용: 최신 레이어에서 다음 레이어의 게이팅 함수를 현재 레이어의 히든 상태에 적용합니다. 이는 트랜스포머 레이어가 잔여적인 성질을 가지고 있어서 가능한 것입니다.
- 2. 다음 레이어의 게이팅 함수 적용: 적용된 게이팅 함수를 기반으로 다음 레이어에서 어떤 전문가를 선택할지 예측합니다. 이를 통해 다음 레이어에서 활성화될 가능성이 높은 전문가를 가정적으로 예측합니다.
- 3. 예측된 전문가의 사전적재: 만약 예측이 맞다면, 해당 전문가를 미리 로딩하여 사용 가능한 상태로 유지합니다. 이것은 예측이 정확한 경우 추론 시간을 줄일 수 있는 방법입니다.
- 4. 다음 레이어 추론: 다음 레이어의 계산이 시작되면, 실제로 필요한 전문가를 로드하고 추론을 진행합니다. 만약 예측이 부정확하다면, 실제 전문가를 나중에 로드합니다.
이러한 방식으로, 추측기반 전문가 로딩은 최종 모델 예측에 영향을 주지 않으면서 추론 속도를 개선할 수 있는 기술입니다.
3. 혼합 MoE 양자화
양자화(Quantization)를 활용하여 모델의 메모리 크기를 줄이는 방법으로, 전문가(expert)들의 일부를 더 낮은 비트 수로 양자화하고, 다른 부분은 더 높은 비트 수로 양자화하여 모델의 크기를 줄이면서도 성능을 유지하려는 목적으로 사용됩니다. 구체적으로, 혼합 MoE 양자화의 주요 특징은 다음과 같습니다.
- 전문가 양자화: 모델의 주요 부분을 차지는 전문가들을 더 낮은 비트 수로 양자화하여 메모리 사용량을 줄이는 데 중점을 둡니다. 일반적으로 낮은 비트 수는 전송 및 저장 효율성을 향상시킵니다.
- 기타 레이어의 보존: 모델의 다른 부분, 예를 들면 입력 데이터 간의 복잡한 상호작용을 학습하고 다양한 특징을 추출하는 역할을 하는 Self-attention 레이어나 다른 비전 모델에서의 레이어들은 더 높은 비트 수로 양자화됩니다. 이렇게 함으로써 모델의 성능을 유지하면서도 크기를 줄일 수 있습니다.
- Mixed 비트 수 선택: 혼합 MoE 양자화에서는 양자화 비트 수를 혼합하여 사용할 수 있습니다. 이는 각 부분에 맞게 최적의 양자화 비트 수를 선택하여 모델의 품질과 크기 사이의 적절한 균형을 찾을 수 있도록 합니다.
- 양자화 알고리즘 선택성: 양자화에 사용되는 알고리즘은 선택적으로 적용할 수 있습니다. 예를 들어, 특정 부분에는 Half Quadratic Quantization (HQQ)과 같은 데이터에 기반한 양자화 알고리즘을 사용하고 다른 부분에는 다른 양자화 알고리즘을 적용할 수 있습니다.
혼합 MoE 양자화는 모델의 효율적인 추론을 위해 여러 부분을 다르게 양자화하는 기술입니다. 이것은 Mixtral-8x7B 모델과 같은 Mixture-of-Experts (MoE) 언어 모델을 위한 것입니다. 이 기술은 전문가 부분과 어텐션 부분을 각각 다르게 양자화하여 성능을 최적화하며, 구체적인 동작순서는 다음과 같습니다.
- 1. 전문가 (Experts) 양자화: MoE 모델의 대다수 파라미터가 전문가 부분에 속합니다. 혼합 MoE 양자화에서는 전문가 부분을 상대적으로 낮은 비트로 양자화합니다. 예를 들어 2비트 또는 3비트로 양자화할 수 있습니다.
- 2. 어텐션 양자화: 모델의 어텐션 부분, 특히 shared attention layers를 상대적으로 높은 비트로 양자화합니다. 여기서는 주로 16비트나 4비트 양자화가 사용됩니다.
- 3. 성능 평가: 양자화된 모델의 성능을 여러 측면에서 평가합니다. 주로 WikiText2, C4 등의 데이터셋을 사용하여 퍼플렉서티(perplexity) 및 다른 평가 지표를 측정합니다.
- 4. 비교 및 선택: 각 비트 수에 대해 다른 성능 및 모델 크기를 분석한 후, 성능과 모델 크기의 균형을 고려하여 적절한 양자화 비트 수를 선택합니다.
- 5. 최종 모델 구성: 선택한 양자화 비트 수를 기반으로 최종적으로 양자화된 모델을 구성합니다. 이때 전문가와 어텐션 부분은 각각 선택한 비트 수로 양자화됩니다.
Mixed MoE 양자화는 모델이 효과적으로 메모리에 로드되고 추론되는 데 필요한 비트 수를 최적화하는 방법 중 하나입니다. 전문가 부분은 더 적은 비트로 양자화하여 메모리 사용량을 줄이고, 어텐션 부분은 더 높은 비트로 양자화하여 모델의 성능을 유지하는 전략입니다.
4. 파라미터 이동 추론
파라미터 이동 추론(Inference with Parameter Offloading)은 GPU 메모리 한계 극복을 위해 모델의 일부 파라미터를 메모리에서 로드하는 대신 특정 디바이스로 오프로드하여 추론 속도를 높이는 방식으로 동작합니다. 오프로딩(Offloading)은 일반적으로 작업이나 처리를 기존의 위치에서 다른 장치나 환경으로 이동시키는 것을 의미합니다. 아래는 이 기술의 동작순서에 대한 설명입니다.
- 1. 입력 프롬프트 인코딩 (Encoding): 추론 작업은 주로 두 단계로 나뉩니다. 첫 번째는 입력 프롬프트를 인코딩하는 단계입니다. 이 과정에서는 모델의 초기 부분이 사용됩니다.
- 2. 토큰 생성 (Token Generation): 두 번째 단계는 입력 프롬프트를 기반으로 토큰을 생성하는 단계입니다. 이때 각 토큰은 이전 토큰과 관련된 파라미터를 필요로 합니다.
- 3. 오프로딩: "파라미터 이동 추론"에서는 토큰 생성 단계에서 필요한 부분 파라미터를 메모리에서 로드하는 대신, 이를 특정 디바이스로 오프로드합니다. 이를 통해 불필요한 파라미터를 로드하지 않고도 특정 디바이스에서 효율적으로 추론할 수 있습니다.
- 4. 최적화된 추론: 필요한 파라미터를 특정 디바이스로 오프로드했기 때문에, 해당 디바이스에서 최적화된 추론을 수행할 수 있습니다. 이로써 전체 모델의 파라미터를 매번 로드하는 것보다 훨씬 효율적인 추론이 가능해집니다.
이러한 방식은 특히 제한된 메모리를 가진 하드웨어나 클라우드 인스턴스에서 모델을 실행할 때 유용합니다. 효율적인 파라미터 관리를 통해 속도와 성능을 극대화할 수 있습니다.
이상에서 본 바와 같이 전문가의 지역성과 LRU 캐싱, 추측기반 전문가 로딩, 혼합 MoE 양자화, 파라미터 이동 추론 기술들의 조합을 통해 MoE 언어 모델의 추론 속도를 향상시키고, 한정된 자원 내에서 효율적인 모델 동작을 실현하려는 목표를 달성하고 있습니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
5. 제시 기술의 성능평가 결과
해당 논문에서의 실험 결과는 다음과 같습니다.
- Expert LRU Cache와 Speculative Loading 평가: LRU Cache의 성능은 캐시 크기에 따라 달라집니다. 아래 사진과 같이 캐시 크기가 증가할수록 캐시 히트율이 향상되어 Expert가 이미 GPU 메모리에 있을 확률이 높아집니다. 이를 통해 모델의 추론 속도가 향상됩니다. Speculative Loading에서는 레이어를 몇 개 미리 로딩할 때 최적의 결과를 얻을 수 있는지 확인합니다. 실험 결과, 레이어를 미리 로딩할수록 추론 시간이 감소하며, 정확한 레이어의 미리 로딩이 성능 향상에 기여합니다.
- Mixed MoE Quantization 평가: 모델의 양자화는 성능과 모델 크기 간의 균형을 조절하는 중요한 요소입니다. 실험에서는 다양한 양자화 비트 수에 대해 WikiText2, C4, MMLU 데이터셋에서 퍼플렉서티를 측정하여 적절한 양자화 설정을 찾았습니다. 결과적으로, Expert를 낮은 비트 수로 양자화하고, 다른 부분은 상대적으로 높은 비트로 양자화하는 것이 성능과 크기 간의 균형을 잘 유지할 수 있습니다.
- Practical Offloading Performance: 다양한 하드웨어 환경에서의 추론 성능을 측정한 결과, 제안된 기술을 적용한 Mixtral-8x7B-Instruct 모델은 빠른 추론 속도를 보여주었습니다. Colab T4 GPU, RTX 3080 Mobile, RTX 3060, A100-80GB-SXM 등 하드웨어에서 제안된 전략을 사용함으로써 모델의 성능을 획기적으로 향상시킬 수 있습니다.
이러한 실험 결과를 통해 논문에서 제시한 기술이 MoE 언어 모델의 추론 성능을 향상시키는 데 효과적임을 확인할 수 있었습니다.
6. DEMO 사이트
다음 DEMO 사이트를 통해 논문에서 제시한 기술이 적용된 Mixtral-8x7B 대규모 언어 모델을 구글 코랩 노트북에서 실행해보실수 있으며, 허깅페이스 모델 카드를 통해 추가정보를 확인하실수 있습니다.
https://huggingface.co/lavawolfiee/Mixtral-8x7B-Instruct-v0.1-offloading-demo
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
논문의 결론 및 전망
이 논문은 MoE 언어 모델의 추론 속도를 향상시키기 위한 새로운 기술과 전략을 제시합니다. 실험 결과, 제안된 기술이 기존 방법보다 효과적으로 모델을 가속화하고 메모리를 효율적으로 활용함을 입증하였습니다. 앞으로 이러한 연구는 자연어처리 분야에서 대규모 모델을 보다 효율적으로 활용할 수 있는 방향으로 진화할 것으로 전망됩니다.
이 블로그 포스트에서는 Mixture-of-Experts(MoE) 언어 모델의 빠른 추론을 위한 혁신적인 기술에 관한 논문을 살펴보았습니다. 논문은 Mixtral-8x7B 모델을 중심으로 하는 다양한 기술들을 소개하고, 이를 통해 MoE 언어 모델의 성능을 향상시키는 방법을 연구했습니다. 전문가의 지역성과 LRU 캐싱, 추측기반 전문가 로딩, 혼합 MoE 양자화, 파라미터 이동 추론 등의 기술들을 조합하여 MoE 모델의 추론 속도를 높이고 메모리를 효율적으로 활용하는 방법을 제시했습니다.
이 블로그를 통해 MoE 언어 모델의 최신 기술 동향을 확인하고, 앞으로의 방향을 예측하는 데 도움이 되셨기를 바라면서 저는 다음에 더욱 유익한 자료를 가지고 다시 찾아뵙겠습니다. 감사합니다!
2023.12.15 - [대규모 언어모델] - Ollama를 활용한 대규모 언어 모델 웹 인터페이스 만들기: Mistral 7B와의 대화
'AI 논문 분석' 카테고리의 다른 글
[AI 논문 분석] 트랜스포머 모델의 핵심기술, 어텐션 메커니즘 (2) | 2024.01.14 |
---|---|
Mobile ALOHA: 저렴한 전신 원격운전 양손 조작 학습 로봇 (6) | 2024.01.08 |
SOLAR 10.7B: 대규모 언어 모델의 효과적인 깊이 업스케일링 (2) | 2023.12.31 |
FERRET: 이미지에서 무엇이든 찾아서 표현하는 애플의 언어 모델 (0) | 2023.12.25 |
VideoPoet: 구글의 제로샷(Zero-Shot) 비디오 생성 대규모 언어 모델 (2) | 2023.12.23 |