목록으로
Qwen 3 (큐웬 3) MoE 서빙 최적화를 위한 사이오닉의 전략
Blog2025.05.18

Qwen 3 (큐웬 3) MoE 서빙 최적화를 위한 사이오닉의 전략

요약

MoE 모델인 Qwen3는 효율성을 위해 전문가를 선택적으로 활성화하지만, 특정 전문가가 과도하게 또는 적게 활용되는 라우터 편향 문제가 발생한다.
이러한 라우터 편향은 포워드 훅 등의 방법으로 분석되며, 한국어 입력에서 특정 전문가에게 활성화가 집중되는 '소수 집중 현상'이 관찰되었으나, 단순 빈도 기반 Pruning은 모델 품질 저하를 야기했다.
사이오닉 AI는 중요한 전문가를 Pruning한 뒤 Post-Training과 활성화 전문가 수(k 값)를 늘리는 MoE Upscaling 전략을 통해 Qwen3의 효율성과 성능을 향상시키고 있다.

상세 내용

Mixture-of-Experts (MoE)는 최근 LLM 분야에서 주목받는 아키텍처로, 전통적인 Dense 모델과 달리 여러 개의 작은 하위 네트워크('전문가', Expert)를 두어 입력 데이터의 특성에 따라 필요한 전문가만 선택적으로 활성화함으로써 계산 자원을 효율적으로 사용하고 성능을 유지하거나 향상시키는 접근법입니다. Alibaba Cloud의 Qwen3 (큐웬3) 시리즈는 이러한 MoE 아키텍처를 적극 활용하여 뛰어난 성능과 효율성을 보여주고 있습니다.

MoE 모델의 핵심 구성 요소는 다음과 같습니다.
* 전문가 (Experts): MoE 모델 내부에 존재하는 독립적인 소형 네트워크입니다. Qwen3 모델에서는 각 전문가가 서로 다른 유형의 입력이나 작업에 특화된 처리를 수행하도록 설계됩니다. 추론 시 입력 토큰마다 선택적으로 활성화된 전문가만 연산에 참여하여 계산 효율성을 극대화합니다.
* 라우터 (Router): 입력 데이터의 각 토큰에 대해 어떤 전문가를 활성화할지 결정하는 게이팅(gating) 메커니즘을 수행합니다. 라우터는 먼저 입력 토큰에 대해 모든 전문가의 적합성 및 활성화 확률을 평가하고, 가장 높은 확률을 가진 kk개의 전문가를 선택합니다(top-kk 선택). 선택된 전문가들이 입력 토큰을 처리하면, 라우터는 각 전문가의 출력을 게이팅 확률에 따라 가중 합산하여 최종 출력을 생성합니다. 라우터의 선택 품질은 모델 성능에 지대한 영향을 미칩니다.

MoE 모델에서는 라우터 편향 (Router Bias) 이라는 새로운 문제가 발생할 수 있습니다. 이는 특정 전문가가 다른 전문가들에 비해 과도하게 또는 지나치게 적게 활성화되는 현상을 의미합니다. 라우터 편향은 다음과 같은 문제를 야기합니다.
* 비효율성 및 자원 낭비: 특정 전문가에게 연산 부하가 집중되어 처리 속도가 느려지거나, 활용되지 않는 전문가로 인해 자원이 낭비됩니다.
* 과적합 및 일반화 성능 저하: 특정 입력이나 작업에 대한 과적합을 유발하여 모델의 일반화 성능을 저하시킬 수 있습니다.
* MoE 장점 저해: 많은 전문가가 실질적으로 기여하지 못하게 되어 MoE 구조의 이점을 약화시킵니다.

라우터 편향을 분석하는 방법으로 포워드 훅 (Forward Hook) 방식과 Qwen3 MoE 블록의 forward 메서드 패치 (Patching forward method) 방식이 제시됩니다.
* 포워드 훅: 모델이 각 전문가를 선택할 때마다 호출되는 함수를 등록하여 전문가 선택 과정을 실시간으로 기록합니다.

pythonimport torch from collections import Counter router_hits = Counter() def moe_hook(module, inputs, outputs): indices = outputs[2].detach().cpu().view(-1) router_hits.update(indices.numpy()) # FusedMoE 블록에 훅 등록 예시 # for module in model.modules(): # if isinstance(module, FusedMoE): # module.register_forward_hook(moe_hook)

GPU 환경에서는 속도 저하를 유발할 수 있으나, Mac 스튜디오와 같은 유니버설 메모리 환경에서는 MLX 프레임워크를 활용하여 성능 저하를 줄일 수 있습니다.
* MLX 프레임워크 기반 메서드 패치: MLX qwen3moe_call 함수를 직접 패치하여 전문가 선택 빈도를 수집합니다.
pythonimport mlx.core as mx from collections import Counter, defaultdict router_hits_global = defaultdict(Counter) 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) # ... (나머지 Qwen3Moe 블록 로직) return y # Qwen3MoeSparseMoeBlock.__call__ = patched_qwen3moe_call

이 방법은 물리적 메모리 복사를 최소화하여 MLX 환경에서 효율적인 분석을 가능하게 합니다.

실제 Qwen3 MoE 모델의 한국어 입력에 대한 분석 결과, 모델은 한국어 처리 시 소수의 전문가에게 집중되는 '소수 집중 현상 (Sparse Utilization)'을 보였습니다. 특정 Expert (예: Expert 7, 75, 20 등)들이 전체 활용도의 상당 부분을 차지하며 높은 활성 빈도를 보였고, 반대로 EMA (Exponential Moving Average) 비율이 0.05% 이하인 전문가들도 적지 않아 거의 기여하지 못하는 것으로 나타났습니다.

이러한 분석을 바탕으로, 사이오닉 AI 연구팀은 MoE 모델의 효율적인 서빙을 위해 전문가 가지치기 (Pruning) 연구를 진행했습니다. 단순히 선택 빈도가 높은 상위 전문가만을 활성화하는 전략은 출력 품질을 저하시킬 수 있음이 관찰되었습니다 (예: Qwen3-235B-A22B 모델에서 상위 64개 전문가만 활성화 시 품질 저하). 이는 라우터의 선택 빈도가 높다고 해서 해당 전문가가 항상 중요한 것은 아니며, 전문가들 간에 명확한 보완 관계가 존재한다는 것을 의미합니다. 실제 전문가 기여도는 상위 10%와 하위 10%를 제외한 중간 전문가 영역에서 거의 선형적으로 감소하는 패턴을 보였습니다.

사이오닉 AI는 이러한 관찰을 바탕으로 MoE Upscaling 방식을 제안합니다. 이는 활성화 빈도 체크를 포함한 다양한 전략을 통해 중요한 전문가를 선별하고 프루닝하는 방법입니다. 가지치기 후에는 모델의 안정성과 성능을 높이기 위해 Post-Training (후처리 학습)을 진행합니다. 이 과정에서 기본적으로 활성화되는 전문가 수(kk 값)를 증가시키는 전략을 활용합니다. 예를 들어, 원래 Qwen3-30B-A3B 모델에서 토큰당 8개 전문가를 활성화하던 것을 16개로 늘리는 방식입니다. 가지치기를 통해 전체 전문가 수가 줄었으므로, kk 값을 높이더라도 활성화된 전문가의 총 파라미터가 감소하여 계산 부하가 크게 늘어나지 않으며, 복잡한 입력 처리에 대한 모델의 성능과 안정성 개선 효과를 가져옵니다.

마지막으로, Group Relative Policy Optimization (GRPO) 방식을 이용하여 전문가를 개별적으로 평가하지 않고, 여러 전문가를 묶은 그룹 단위로 평가하고 최적화하여 라우팅 정책을 학습하는 방안을 연구하고 있습니다. 이를 통해 도메인 특화 모델 구축을 위한 효과적인 Continuous Learning 방법론을 모색하고 있습니다.

원본 보기
Web
Shared by Anonymous