Qwen3 (큐웬3) MoE 구조의 핵심 구성 요소
최근 LLM 에서 주목받고 있는 접근법이 바로 'Mixture-of-Experts(MoE)' 아키텍처입니다. MoE 구조는 하나의 거대한 네트워크가 모든 작업을 처리하는 전통적인 Dense 모델 방식과 달리, 여러 개의 작은 하위 네트워크 ('전문가', Expert) 들을 두고 입력 데이터의 특성에 따라 필요한 전문가들만 선택적으로 활성화하는 방식을 사용합니다. 이를 통해 계산 자원을 효율적으로 사용하면서도 성능을 유지하거나 향상할 수 있다는 장점이 있습니다.
특히 Alibaba Cloud의 최신 대규모 언어 모델인 Qwen3 (큐웬3) 시리즈는 MoE 아키텍처를 적극적으로 활용하며, 뛰어난 성능과 효율성을 모두 갖추고 있다는 평가를 받고 있습니다.
그러나 이러한 MoE 모델에서도 새로운 문제가 대두되고 있습니다. 바로 전문가를 선택하는 라우터(Router)의 편향 문제, 즉 특정 전문가가 다른 전문가에 비해 과도하게 또는 지나치게 적게 활용되는 현상입니다. 라우터 편향은 모델의 효율성을 저하시킬 뿐만 아니라 특정 작업에 대한 성능 저하로 이어질 수 있기 때문에, 이를 정확히 분석하고 제어하는 것이 매우 중요합니다.
전문가(Experts)
전문가란 MoE 모델의 내부에 존재하는 독립적인 소형 네트워크입니다. Qwen3 모델에서는 각 전문가가 서로 다른 유형의 입력이나 작업에 대해 특화된 처리를 수행하도록 설계되어 있습니다. 각 전문가 네트워크는 전통적인 Dense 모델의 일부를 나누어 소형화한 것으로 볼 수 있으며, MoE 구조에서는 이 전문가들을 다수 배치하여 네트워크의 전체 크기와 파라미터 수를 효과적으로 확장합니다.
이러한 구조 덕분에 모델 전체 파라미터가 매우 커도, 추론 시 입력 토큰마다 선택적으로 활성화된 전문가만 연산에 참여하므로 계산 효율성을 크게 높일 수 있습니다.
라우터(Router)
라우터는 MoE 모델에서 가장 중요한 역할을 담당합니다. 라우터는 입력 데이터를 받아 각 입력 토큰에 대해 어떤 전문가를 활성화할지 결정하는 게이팅(gating) 메커니즘을 수행합니다. 일반적으로 Qwen3 MoE 모델의 라우터는 다음과 같은 방식으로 동작합니다.
•
입력 토큰별 전문가 평가: 먼저, 라우터는 입력된 각 토큰에 대해 모든 전문가의 적합성을 평가하고, 각 전문가에 대한 활성화 확률을 계산합니다.
•
상위 전문가 선택(top-k): 평가된 확률 중 가장 높은 확률을 가진 k개의 전문가만 선택하여 활성화합니다. 이 과정에서 계산 비용이 줄어들어 모델 효율성이 높아집니다.
•
전문가 활성화와 출력 병합: 선택된 전문가가 입력 토큰을 처리하고, 각각의 전문가 출력을 라우터가 계산한 게이팅 확률에 따라 가중 합산하여 최종 출력을 생성합니다.
라우터의 선택 품질이 모델 성능을 크게 좌우하므로, 라우터의 효율성과 정확성은 MoE 구조에서 매우 중요합니다.
라우터 편향(Router Bias) 개념과 중요성
라우터 편향(router bias)이란 Mixture-of-Experts(MoE) 모델에서 특정 전문가가 다른 전문가들보다 현저히 더 많이 또는 적게 활성화되는 현상을 의미합니다. MoE 구조에서는 수많은 작은 서브 모델(전문가)들이 존재하며, 라우터가 입력 데이터의 특성에 따라 적합한 전문가들을 선택해 활성화하는데, 이 과정에서 선택이 불균형하게 이루어질 때 이를 라우터 편향이라고 합니다.
예를 들어, 특정 전문가가 지속적으로 높은 비율로 선택된다면, 이는 라우터가 그 전문가에게 편향된 선택을 하고 있음을 나타내며, 반대로 일부 전문가들은 거의 선택되지 않아 방치되는 상황도 발생합니다.
특정 소수의 전문가가 지나치게 자주 선택되면, 이 전문가들에게 연산 부하가 집중되어 처리 속도가 느려질 수 있습니다. 반면, 활용되지 않는 전문가가 있다면 이는 자원의 낭비로 이어집니다.
편향된 전문가 선택은 특정 입력이나 작업에 대해 과적합(overfitting)을 일으킬 가능성을 높입니다. 예를 들어 특정 언어나 데이터 특성에만 편중된 전문가가 활성화되면, 모델의 일반화 성능이 저하될 수 있습니다.
MoE 구조의 장점은 다양한 전문가들이 서로 다른 작업을 분담하여 더 나은 성능을 달성하는 것인데, 라우터 편향이 심할 경우 많은 전문가가 실제로 기여하지 못하게 됩니다. 이는 MoE의 장점을 저해합니다.
라우터 편향 분석 방법
라우터 편향을 분석하는 것은 MoE 모델의 성능과 효율성을 평가하고 최적화하는 데 핵심적인 과정입니다. 특히 Qwen3 MoE와 같은 최신 모델에서는 다양한 방법을 통해 라우터가 각 전문가를 얼마나 자주 선택하는지 구체적이고 정밀하게 분석할 수 있습니다.
먼저 포워드 훅 방식은 모델이 각 전문가를 선택할 때마다 호출되는 함수를 등록하여 전문가 선택 과정을 실시간으로 기록하는 방법입니다. 실시간으로 전문가 선택 빈도를 수집할 수 있다는 장점이 있지만 GPU 환경에서 잦은 훅 호출은 모델의 속도 저하를 유발할 수 있습니다.
import torch
from collections import Counter
router_hits = Counter()
# MoE 블록에 포워드 훅 등록
def moe_hook(module, inputs, outputs):
indices = outputs[2].detach().cpu().view(-1) # 전문가 인덱스 추출
router_hits.update(indices.numpy()) # 빈도 업데이트
# 모델 로드 후 MoE 블록에 훅을 등록합니다.
for module in model.modules():
if isinstance(module, FusedMoE):
module.register_forward_hook(moe_hook)
Python
복사
Mac 스튜디오와 같은 유니버설 메모리 환경에서 MLX 프레임워크를 활용하면 물리적 메모리 복사가 최소화되어 훅으로 인한 성능 저하를 줄일 수 있습니다. 메모리 접근이 효율적이며, Mac 환경에서 최적의 성능이 제공되기 떄문에 GPU 기반 방식 대비 속도 저하가 적습니다.
import mlx.core as mx
from collections import Counter, defaultdict
router_hits_global = defaultdict(Counter)
# Qwen3 MoE 블록의 forward 메서드 패치
def patched_qwen3moe_call(self, x: mx.array):
gates = self.gate(x)
inds = mx.stop_gradient(mx.argpartition(-gates, kth=self.top_k - 1, axis=-1)[..., :self.top_k])
# 전문가 선택 빈도 수집
expert_indices_flat = inds.reshape(-1).tolist()
router_hits_global[self.layer_idx].update(expert_indices_flat)
y = self.switch_mlp(x, inds)
scores = mx.take_along_axis(mx.softmax(gates, axis=-1, precise=True), inds, axis=-1)
if self.norm_topk_prob:
scores = scores / mx.sum(scores, axis=-1, keepdims=True)
y = (y * scores[..., None]).sum(axis=-2)
return y
# 원본 메서드 교체
Qwen3MoeSparseMoeBlock.__call__ = patched_qwen3moe_call
Python
복사
한국어 특화 전문가 탐색 사례
Qwen3 MoE 모델의 강점 중 하나는 입력의 특성에 따라 전문가를 선택적으로 활성화한다는 점입니다. 그러나 이 선택 과정에서 특정 언어나 작업에 대해 소수의 전문가에 지나치게 의존하는 현상이 발생할 수 있습니다. 특히 한국어 입력과 같은 특정 언어 처리에서는 이러한 편향이 더욱 두드러질 가능성이 높습니다.
이를 심층적으로 분석하기 위해 한국어 입력에 대한 전문가 선택 패턴을 체계적으로 기록하고 분석할 수 있습니다. 실제 분석 결과, 일부 전문가들이 다른 전문가들에 비해 월등히 높은 활성 빈도를 보이는 현상을 관찰할 수 있었으며, 이는 특정 전문가가 한국어 처리에 과도하게 집중되어 있음을 시사합니다.
분석한 결과를 살펴보면, Qwen3 MoE 모델은 한국어 처리 시 소수의 전문가에게 집중되는 현상이 뚜렷하게 나타납니다. 특히, Expert 7이 EMA 비율 약 0.42%로 가장 높은 활용도를 보이며, Expert 75(0.31%), Expert 20, 1, 101(각 0.28%) 등이 그 뒤를 따르고 있습니다. 이처럼 상위 20명의 전문가만으로도 전체 전문가 활용의 상당 부분을 차지하고 있어, 모델이 소수의 전문가에게 과도하게 의존하는 경향이 있음을 알 수 있습니다.
전체 전문가의 EMA 분포를 조금 더 넓게 살펴보면, 대부분의 전문가가 0.10%~0.20% 사이에서 고르게 분포하고 있음을 볼 수 있습니다. 반면, 0.20% 이상의 높은 EMA 비율을 보이는 전문가는 전체 중 극히 일부(약 25명)에 불과하며, 이들이 라우터의 주요 선택 대상이 되고 있습니다. 한편, EMA가 0.05% 이하인 전문가도 적지 않은 수(약 15명 이상)를 차지하는데, 이들은 장기적으로 모델에 거의 기여하지 못하고 있는 것으로 나타났습니다.
따라서 Qwen3 MoE 모델은 한국어 입력에 대해 극소수의 주력 전문가에게 크게 의존하며 나머지 전문가를 잘 활용하지 않는, 이른바 '소수 집중 현상(Sparse Utilization)' 을 보이고 있다고 할 수 있습니다.
불필요하거나 중복된 전문가를 찾아 제거한다면, 활성화되는 전문가 수가 줄게 되므로 실제 수행되는 연산량이 감소하여 속도가 약 30% 가량 빨라집니다. 라우터 파라미터 자체는 동일해도, 비활성화된 전문가의 연산은 건너뛰게 됩니다.
활성화되는 전문가 수가 줄어들면 계산해야 하는 연산량 자체가 감소하여 추론 속도가 빨라지게 되며 선택적으로 중요한 전문가만 유지함으로써 모델의 성능 저하 없이 파라미터 수를 크게 줄일 수 있으므로 GPU VRAM이 부족한 서빙 환경에서도 성능을 유지하며 서빙 비용을 절감할 수 있습니다.
따라서 사이오닉은 Qwen 3 모델을 효율적으로 서빙하기 위하여 Pruning 연구를 진행하였습니다. 이 때 전문가를 선택하는 방법을 어떻게 고려할 것인가라는 질문이 필수적으로 제기됩니다.
MoE 가지치기(Pruning) 전략을 통한 효율적인 모델 서빙
하지만, 저희 사이오닉에이아이 연구팀은 Qwen3 MoE 모델에서 전문가(expert)의 중요도를 평가할 때 단순히 라우터에 의해 얼마나 자주 선택되는지 만으로 전문가의 중요성을 판단하는 것은 한계가 있다는 것을 밝혀내었습니다. 단순히 선택 빈도가 높은 상위 전문가만을 활성화하는 방식은 생성된 출력의 품질을 오히려 저하시킵니다.
예를 들어, Qwen3-235B-A22B 모델을 대상으로 상위 64개의 전문가만 활성화했을 때 출력 품질이 크게 떨어졌다는 점이 관찰되었습니다. 이는 라우터의 선택 빈도가 높다고 해서 해당 전문가가 항상 중요한 것은 아니라는 것입니다.
전체 Expert의 결과물입니다.
상위 28개 Expert만 활성화하였을 때의 결과물 입니다. 반복 현상이 관측 됩니다.
상위 64개(전체의 절반) Expert를 활성화하였을 때의 결과물입니다.
상위 28개 Expert 와 하위 10번째~19번째 layer를 섞으면 반복 현상이 생기지 않습니다.
상위 28개 Expert와 하위 20개 Expert를 활성화한 결과물입니다.
다만 모든 전문가가 동일한 중요도를 가지는 것은 아닙니다. 전문가 활용도 순위로 상위 전문가만 남기는 단순한 전략은 오히려 모델 출력을 손상시키는 결과를 초래했습니다.
전문가들 간에 명확한 보완 관계가 존재하며, 단순히 빈도가 높은 전문가만으로는 충분한 품질을 보장할 수 없음을 의미합니다. 실제로 전문가 기여도는 상위 10%와 하위 10%를 제외한 중간 전문가 영역에서 거의 선형적으로 감소하는 패턴을 보입니다. 이는 전문가들이 서로 보완하며 작동하는 관계를 암시하는 중요한 관찰이라고 보입니다.
사이오닉이 제안하는 MoE Upscaling 방식
저희 사이오닉에이아이 연구팀은 활성화 빈도 체크를 포함한 중요한 전문가를 선별하고 프루닝할 수 있는 다양한 전략을 채택하였습니다. 이는 모델이 불필요한 연산을 줄이고, 실제 품질과 직접 연관된 전문가 위주로 효율적인 인퍼런스를 가능하게 해줍니다. 기회가 된다면 해당 전략들을 하나씩 공개할 수 있도록 하겠습니다.
이렇게 전문가를 선택적으로 가지치기한 후에는, 모델의 안정성과 성능을 더욱 끌어올리기 위해 추가적으로 Post-Training(후처리 학습)을 진행합니다. 즉, 가지치기로 인해 변경된 전문가 구조가 모델에 잘 적응하고 안정적인 출력을 만들 수 있도록 추가적인 학습을 한 번 더 수행하는 것입니다.
이 과정에서, 간단하면서도 효과적인 추가 전략이 활용됩니다. 바로 기본적으로 활성화되는 전문가 수(k 값)를 증가시키는 전략입니다. 예를 들어, 원래 Qwen3-30B-A3B 모델에서는 입력된 토큰마다 전문가를 8개만 활성화했는데, 이를 16개로 두 배로 늘리는 방식이 여기에 해당합니다. 이렇게 k 값을 높이는 이유는, 가지치기를 통해 전체적으로 전문가 숫자가 줄었기 때문에 전문가를 더 많이 활성화하더라도 이전보다 훨씬 더 적은 연산만으로도 충분히 효율적인 처리가 가능하기 때문입니다. 즉, 활성화된 전문가의 파라미터가 전체적으로 감소했으므로, 전문가를 더 많이 활성화해도 계산 부하가 크게 늘어나지 않습니다.
얼핏 보기에는 단순히 설정 값 하나("num_experts_per_tok": 16)를 바꾼 것처럼 보이지만, 이러한 작은 변화가 실제로는 복잡하거나 다양한 입력 문장을 처리할 때 모델의 성능과 안정성에 상당한 개선 효과를 가져올 수 있습니다. 이 방식은 가지치기를 통해 확보한 추가적인 효율성 덕분에 가능한 전략으로, 모델이 더 많은 전문가를 동시에 활용해 복잡한 입력 상황에서 더욱 뛰어난 품질의 출력을 생성할 수 있도록 도와줍니다.
마지막으로 Group Relative Policy Optimization(GRPO) 방식을 이용하여 이 접근법은 전문가를 개별적으로 평가하지 않고, 여러 전문가를 묶은 그룹 단위로 평가하고 최적화할 수 있습니다. 전문가 그룹을 "남겨 둘 후보", "가지치기 후보" 등으로 나누고, 이 그룹들의 상대적인 성능 차이를 기준으로 라우팅 정책을 학습하는 것입니다.
사이오닉 AI 에서는 도메인 특화 모델 구축을 위한 다양한 방법론들을 적용하여 효과적인 continuous learning을 연구 하고 있습니다.