𝗠𝗶𝘅𝘁𝘂𝗿𝗲 𝗼𝗳 𝗘𝘅𝗽𝗲𝗿𝘁𝘀 (𝗠𝗼𝗘): 𝗛𝗼𝘄 𝗜𝘁 𝗪𝗼𝗿𝗸𝘀 𝗮𝗻𝗱 𝗪𝗵𝗲𝗻 𝘁𝗼 𝗨𝘀𝗲 𝗜𝘁

GPU 4개를 더 구매하지 않고 7B 모델을 70B 모델로 확장하고 싶다고 가정해 봅시다.

누군가 Mixture of Experts (MoE)를 제안합니다. 그들은 7B의 연산량만으로 70B의 성능을 얻을 수 있다고 주장합니다.

공짜 점심처럼 들리지만, 여기에는 함정이 있습니다.

어떻게 작동하나요?

Llama 3.2와 같은 Dense Transformer는 모든 토큰에 대해 파라미터의 100%를 사용합니다. 7B에서 70B로 확장하면 메모리와 연산량 모두 10배로 늘어납니다.

MoE는 이 두 가지를 분리합니다. 모델은 더 많은 파라미터를 저장하지만(높은 메모리 비용), 각 토큰에는 그중 일부만 사용합니다(낮은 연산 비용).

트레이드오프(Trade-off):

• Dense 7B: 총 파라미터 7B | 활성 파라미터 7B | 연산량 7B | 메모리 14 GB • Dense 70B: 총 파라미터 70B | 활성 파라미터 70B | 연산량 70B | 메모리 140 GB • MoE 45B: 총 파라미터 45B | 활성 파라미터 ~13B | 연산량 ~14B | 메모리 ~90 GB

함정: 여전히 대형 모델의 메모리 비용을 지불해야 합니다. Mixtral을 단일 24 GB GPU에서 실행할 수는 없습니다. 사용되지 않는 전문가(expert)를 포함하여 모든 전문가를 수용할 수 있을 만큼 충분한 VRAM이 필요합니다.

아키텍처:

Sparse MoE에서는 표준 Feed-Forward Network (FFN)가 여러 개의 "expert" FFN과 학습된 라우터(router)로 대체됩니다.

  1. 라우터가 토큰을 받습니다.
  2. 각 전문가에게 점수를 할당합니다.
  3. 상위 k개의 전문가를 선택합니다 (Mixtral의 경우 k=2).
  4. 해당 전문가들을 통해서만 토큰을 처리합니다.
  5. 결과를 결합합니다.

라우터는 수동 스케줄러가 아닙니다. 학습된 레이어입니다. 수학 토큰은 특정 전문가에게, 코드 토큰은 다른 전문가에게 보내도록 학습됩니다.

학습 과제:

가장 큰 위험은 라우터 붕괴(router collapse)입니다. 도움 없이는 라우터가 모든 토큰을 동일한 두 전문가에게만 보낼 수 있습니다. 해당 전문가들은 더 발전하게 되고, 라우터는 그들에게 더 많은 트래픽을 보냅니다. 결국 다른 전문가들은 쓸모없게 됩니다.

엔지니어들은 이를 해결하기 위해 보조 부하 분산 손실(auxiliary load-balancing loss)을 사용합니다. 이는 모델이 모든 전문가를 균등하게 사용하지 않을 경우 페널티를 부여합니다.

MoE를 피해야 할 때:

• 일관된 지연 시간(latency)이 필요한 경우: MoE는 응답 시간의 변동성이 더 큽니다. • VRAM이 제한적인 경우: 48 GB 미만의 GPU를 하나만 가지고 있다면 Dense 모델을 사용하는 것이 좋습니다. • 아주 작은 모델을 만드는 경우: 모델 파라미터가 3B 미만이라면 오버헤드가 너무 큽니다. • 단순한 인프라가 필요한 경우: MoE는 복잡한 전문가 병렬화(expert parallelism)와 커스텀 커널(custom kernels)을 필요로 합니다.

MoE는 Dense 모델 기준 30B 이상의 파라미터를 목표로 하며, 이를 지원할 메모리가 충분할 때 가장 효과적입니다.

출처: https://dev.to/tech_nuggets/mixture-of-experts-moe-what-it-actually-does-under-the-hood-and-when-it-pays-off-alb

학습 커뮤니티(선택 사항): https://t.me/GyaanSetuAi