MoE는 전문가를 어떻게 고를까
LLM

MoE는 전문가를 어떻게 고를까

2026.09.08.
LLM9
  1. 6Transformer 블록 뜯어보기
  2. 7FlashAttention은 왜 더 많이 계산하면서 더 빠를까
  3. 8MoE는 전문가를 어떻게 고를까읽는 중
  4. 24Test Time Scaling
2 / 2

Transformer 블록 안에서 파라미터가 가장 많은 부분은 FFN입니다. 가중치 행렬이 세 개(WgateW_\text{gate}, WupW_\text{up}, WdownW_\text{down})라서 레이어 전체 파라미터의 약 2/3를 차지합니다. 그런데 dense 모델은 모든 토큰에 이 FFN 전체를 통과시킵니다. 70B 모델이라면 관사 “the”에도 70B 파라미터가 동원되고 드문 의학 용어에도 같은 70B가 동원됩니다. 파라미터를 10배 늘리면 연산량도 10배 올라가는 구조입니다.

이 비례를 깨는 발상은 2017년으로 거슬러 올라갑니다. Shazeer et al.(2017)이 제안한 아이디어는 단순합니다. 하나의 큰 FFN 대신 NN개의 작은 FFN(전문가, expert)을 두고 라우터(router)라는 작은 네트워크가 토큰마다 kk개만 골라 활성화하는 것입니다. 이것이 MoE(Mixture of Experts)입니다.

총 파라미터는 늘어나지만 토큰당 활성 파라미터는 고정됩니다. DeepSeek-V3는 총 671B 파라미터를 갖고 있지만 토큰 하나에 활성화되는 것은 37B뿐입니다. 파라미터를 18배 늘렸는데 토큰당 비용은 그대로인 셈입니다. 어텐션은 변하지 않습니다. MoE가 대체하는 것은 오직 FFN이고 KV Cache 크기나 FlashAttention 같은 어텐션 최적화도 그대로 적용됩니다.

Dense Attention FFN (전체 활성) 모든 토큰이 같은 FFN을 통과 MoE Attention Router E₁ E₄ N개 중 k개만 활성 (나머지 비활성)

라우터는 어떻게 전문가를 고르는가

라우터는 학습되는 선형 레이어 하나입니다. 토큰의 hidden state xx를 받아 전문가마다 점수를 매기고 점수가 높은 kk개만 선택합니다.

G(x)=Softmax(TopK(Wgx,k))G(x) = \text{Softmax}\bigl(\text{TopK}(W_g \cdot x,\, k)\bigr)

xx는 한 토큰의 hidden state입니다. WgW_g는 게이팅 가중치 행렬로 크기가 dmodel×Nd_\text{model} \times N이고, NN은 전문가 수입니다. TopK가 NN개의 로짓 중 상위 kk개만 남기고 나머지를 -\infty로 만든 뒤, softmax가 살아남은 kk개를 확률 분포로 변환합니다.

선택된 전문가들은 각자 토큰을 처리한 뒤 게이팅 점수를 가중치로 삼아 출력을 합산합니다. k=2k=2이고 전문가 3번이 0.7, 전문가 7번이 0.3을 받았다면 최종 출력은 0.7×E3(x)+0.3×E7(x)0.7 \times \text{E}_3(x) + 0.3 \times \text{E}_7(x)입니다. 점수가 높은 전문가의 출력이 더 크게 반영되는 구조입니다.

x W_g · x TopK Softmax 선택된 k개 전문가가 토큰을 처리 E₃ (0.7) E₇ (0.3) 0.7·E₃(x) + 0.3·E₇(x) 게이팅 점수로 가중합한 최종 출력

라우터의 가중치 WgW_g는 모델의 나머지 파라미터와 함께 학습됩니다. 학습이 진행되면서 라우터는 각 토큰의 특성에 맞는 전문가를 고르는 법을 배우게 됩니다. 문제는 이 학습 과정에서 생깁니다.


전문가가 죽는 문제

라우터를 학습시키면 피드백 루프가 생깁니다. 학습 초기에 가중치가 무작위로 초기화된 상태에서 어떤 전문가가 우연히 약간 더 나은 출력을 냅니다. 라우터는 그 전문가에 더 높은 점수를 주고 더 많은 토큰이 그 전문가로 흐르고 더 많은 기울기 갱신을 받아 출력이 더 좋아집니다.

반대편 전문가들은 토큰을 거의 받지 못해 가중치가 갱신되지 않고 출력이 나빠지고 라우터가 더 외면합니다. 결국 256개 전문가 중 실질적으로 작동하는 것이 몇 개뿐인 상태가 됩니다. 이것을 전문가 붕괴(expert collapse)라고 합니다.

균형 상태 토큰 각 전문가가 비슷한 수의 토큰을 처리 붕괴 상태 토큰 소수 전문가에 토큰 집중, 나머지 학습 정지 더 많은 토큰 → 더 빠른 개선 → 더 높은 점수

Switch Transformer(Fedus et al., 2022)가 정립한 해법은 보조 손실(auxiliary loss)입니다. 언어 모델링 손실에 균형 유도 항을 더해 라우터가 토큰을 고르게 분배하도록 압력을 줍니다.

Laux=αNi=1NfiPi\mathcal{L}_\text{aux} = \alpha \cdot N \sum_{i=1}^{N} f_i \cdot P_i

fif_i는 배치 안에서 전문가 ii에 라우팅된 토큰의 비율이고, PiP_i는 전문가 ii의 평균 게이팅 확률입니다. NN은 전문가 수, α\alpha는 손실 강도를 조절하는 하이퍼파라미터입니다. 특정 전문가에 토큰이 몰리면 fif_iPiP_i가 동시에 높아지고 두 값의 곱이 커지면 손실이 올라가 라우터를 균일 분포 쪽으로 밀어냅니다.

문제는 α\alpha의 균형입니다. 너무 낮으면 붕괴를 막지 못하고 너무 높으면 라우터가 균일 분포를 강제당해 전문화가 무력화됩니다. 모든 전문가가 비슷한 토큰을 비슷하게 처리하면 MoE를 쓰는 의미가 사라집니다. 붕괴를 막는 것과 전문화를 유지하는 것은 본질적으로 상충하는 목표이고, α\alpha 하나로 둘 다 제어하기는 어렵습니다.

DeepSeek-V3(2024)는 보조 손실을 아예 제거했습니다. 대신 전문가마다 bias 항 bib_i를 두고 전문가 선택 시 점수에 bib_i를 더합니다. 매 학습 스텝이 끝날 때 전체 배치의 전문가별 부하를 확인하고 과소 활용된 전문가의 bias를 올리고 과다 활용된 전문가의 bias를 내립니다.

핵심은 이 bias가 전문가 선택에만 영향을 주고 최종 게이팅 가중치에는 포함되지 않는다는 점입니다. 실제 출력을 합산할 때는 bias가 빠진 원래 점수를 쓰므로 모델의 표현력에 영향이 없습니다. 기울기가 아니라 부하 통계에 기반한 단순 조정이라서 라우터의 학습 신호가 온전히 언어 모델링 목적함수에만 집중됩니다. DeepSeek 팀은 이 접근을 “auxiliary-loss-free load balancing”이라 명명했습니다.


전문가를 잘게 나누면

MoE의 초기 형태인 Mixtral(2023)은 8개의 큰 전문가를 두고 2개를 선택합니다. 각 전문가가 전체 FFN과 같은 크기입니다. 8개에서 2개를 고르면 가능한 조합은 28가지입니다.

DeepSeek-V3(2024)는 전혀 다른 접근을 택했습니다. 전문가를 256개로 잘게 나누고 8개를 선택합니다. 가능한 조합이 약 4.4조 가지로 늘어나면서 토큰마다 훨씬 정밀한 전문가 조합을 만들 수 있습니다. DeepSeekMoE(Dai et al., ACL 2024)는 이 세분화 전문가(fine-grained expert) 설계로 동급 dense 모델의 약 40% 연산 비용만으로 비슷한 성능을 달성할 수 있음을 보여줬습니다.

Mixtral (8개, top-2) C(8,2) = 28가지 조합 DeepSeek-V3 (256개, top-8) + 224개 더 C(256,8) = 약 4.4조 가지 조합 토큰별 정밀한 전문가 선택 가능

이후 Kimi K2와 DeepSeek-V4(2026)는 전문가를 384개까지 늘렸습니다. 방향은 분명히 “더 잘게”이지만, 전문가가 작아질수록 개별 전문가의 용량이 줄어들고 라우팅 노이즈의 영향이 커집니다. 최적의 전문가 수는 모델 규모와 학습 데이터에 따라 달라지며 합의된 값은 아직 없습니다.


마치며

MoE는 모든 토큰에 모든 파라미터를 쓰는 낭비를 해결했지만 라우터라는 새 설계 공간을 열었습니다. 전문가 붕괴를 잡기 위해 보조 손실이 등장했고 보조 손실의 한계를 넘기 위해 bias 기반 밸런싱이 뒤따랐습니다. 전문가의 세분화는 조합의 정밀도를 높였지만 그만큼 라우팅의 어려움도 커졌습니다.

이 글에서 다루지 않은 설계 선택도 많습니다. 라우팅에 softmax를 쓸지 sigmoid를 쓸지, 모든 토큰에 항상 활성화되는 공유 전문가를 둘지 말지, 활성화할 전문가 수 kk를 얼마로 할지 등은 2026년 현재에도 연구소마다 답이 다릅니다. MoE의 총 파라미터에서 오는 메모리 부담과 Expert Parallelism의 서빙 전략은 LLM 서빙 성능 지표와 튜닝에서 다루고 있습니다.

다음 글에서는 어텐션 쪽을 다룹니다. MoE가 FFN을 쪼갠 것이었다면, MHA에서 GQA를 거쳐 MLA까지의 흐름은 어텐션 헤드를 압축하는 것입니다.


함께 보면 좋은 글


참고자료

Thank You for Visiting My Blog, Have a Good Day 😆