LLM WikiAccess-protected knowledge portal

WIKI

MoE 모델 추론 최적화: Expert 병렬성·WideEP·로드밸런싱 실전 패턴

요약 Mixture of Experts MoE 모델은 파라미터 수 대비 추론 비용을 낮추는 핵심 기술이 됐다. DeepSeek V3/V4 671B 파라미터, 37B 활성 , Qwen3.8 Max 2.4T 파라미터, 22B 활성 같은 모델이 대표 사례다. 파라미터 규모는 Dense 모델과 비교가 안 되지만 각 토큰에 실제로 사용되는 활성 파라미터 는 훨씬 적어 FLOPs이 낮다. 문제는 서빙이다. MoE의 전문가 Expert 가

경로human/study/content/ai-frontier/127-moe-inference-expert-parallelism-wideep-load-balancing.md
카테고리Study
태그#ai-review #balancing #expert #load #parallelism #study #wideep

요약

Mixture-of-Experts(MoE) 모델은 파라미터 수 대비 추론 비용을 낮추는 핵심 기술이 됐다. DeepSeek V3/V4(671B 파라미터, 37B 활성), Qwen3.8-Max(2.4T 파라미터, 22B 활성) 같은 모델이 대표 사례다. 파라미터 규모는 Dense 모델과 비교가 안 되지만 각 토큰에 실제로 사용되는 활성 파라미터는 훨씬 적어 FLOPs이 낮다.

문제는 서빙이다. MoE의 전문가(Expert) 가중치를 여러 GPU에 분산하면서도 Expert 간 통신 오버헤드와 로드 불균형을 어떻게 제어하느냐가 MoE 서빙의 핵심 과제다.

이 글은 Expert 병렬성(EP)의 구조, WideEP 패턴, Elastic EP, 그리고 All-to-All 통신과 로드 불균형 문제를 다룬다. vLLM을 기준으로 실제 운영 설정도 함께 정리한다.


MoE 구조 복습

MoE는 FFN(Feed-Forward Network) 레이어를 다수의 전문가(Expert)로 대체하고, 게이팅 네트워크(Router)가 토큰별로 상위 K개 전문가를 선택한다.

입력 토큰 → [Router] → top-K 전문가 선택 → 선택된 전문가만 활성화 → 출력 가중 합산

예: DeepSeek V3는 레이어당 256개 전문가 중 8개를 활성화한다(top-8/256). Qwen3.8-Max는 512개 중 10+1개(공유 전문가 포함).

Dense 모델과 비교:

따라서 MoE 서빙의 핵심 문제는 거대한 가중치를 어떻게 배치하고, 어떻게 전문가 간 통신을 최소화하느냐다.


Expert 병렬성(EP): 기본 개념

병렬성 차원

MoE 서빙에서 사용할 수 있는 병렬성은 세 가지다:

병렬성대상특징
Tensor Parallel (TP)개별 가중치 행렬 분할Dense 모델의 표준; MoE FFN에도 적용 가능
Expert Parallel (EP)전문가 단위 분배각 GPU가 서로 다른 전문가를 보유
Data Parallel (DP)배치 분할Attention 레이어에 주로 적용

기본 EP 동작

EP에서는 전문가들을 GPU에 균등 분배한다. 256개 전문가를 8 GPU에 배치하면 GPU당 32개. 토큰이 어떤 전문가로 라우팅되느냐에 따라 GPU 간 토큰 이동이 필요하다.

GPU0: Expert 0~31
GPU1: Expert 32~63
...
GPU7: Expert 224~255

토큰 → Router → Expert 17 선택 → GPU0으로 전송
                 Expert 89 선택 → GPU2로 전송

이 토큰 이동이 All-to-All 통신이다. 모든 GPU가 서로에게 토큰을 보내고 받는다.


WideEP 패턴

WideEP: Attention DP + Expert EP 분리 레이아웃 Attention (DP) GPU 0 Attention KV Cache GPU 1 Attention KV Cache GPU 2 Attention KV Cache GPU 3 Attention KV Cache GPU 4~7 Attention KV Cache All-to-All 디스패치 Router (게이팅 네트워크) — 각 토큰에 대해 top-K 전문가 선택 Expert FFN (EP) GPU 0 Expert 0~31 가중치 ×32 GPU 1 Expert 32~63 가중치 ×32 GPU 2 Expert 64~95 가중치 ×32 GPU 3 Expert 96~127 가중치 ×32 GPU 4~7 Expert 128~255 가중치 ×128 All-to-All 컴바인 출력 집계 → 다음 레이어로 WideEP 핵심 트레이드오프 • Attention DP: KV 캐시를 각 GPU에 복제 → 더 많은 메모리 사용, 하지만 통신 불필요 • Expert EP: 전문가 가중치를 분산 → GPU당 메모리 절감, 하지만 All-to-All 통신 발생 • EP 규모 확대(WideEP) → KV 캐시 예산 증가, 긴 컨텍스트·높은 동시접속에 유리
MoE 서빙 병렬성: WideEP 레이아웃 — Attention은 DP로, Expert FFN은 EP로 분리

WideEP는 EP 규모를 매우 크게 확장하는 전략이다. 8 GPU가 아니라 64~256 GPU에 걸쳐 Expert를 분산한다. 각 GPU는 소수의 Expert만 갖지만, Attention은 여전히 DP로 동작해 KV 캐시를 각 노드에 보관한다.

이점: GPU당 Expert 가중치가 줄어 GPU 메모리 중 KV 캐시 예산이 늘어난다. 더 긴 컨텍스트나 더 많은 동시 요청을 처리할 수 있다.

vLLM의 DeepSeek V3 GB200 서빙 결과(2026년 초): WideEP로 26,200 prefill TPGS(tokens per GPU second), 10,100 decode TPGS를 달성했다.


Elastic Expert Parallelism (vLLM)

기존 EP는 정적(static)이었다. 서버를 시작할 때 EP 크기를 고정하면 부하가 바뀌어도 재시작 없이는 조정할 수 없었다.

Elastic EP(vLLM 2026-05 도입)는 요청 부하에 따라 EP 크기를 동적으로 조정한다.

낮은 부하 → 소규모 EP (예: EP=4) → 비활성 GPU 비용 절약
높은 부하 → 대규모 EP (예: EP=16) → 처리량 증가

작동 원리:

  1. Ray Serve로 vLLM 인스턴스를 관리
  2. 요청 큐 깊이를 모니터링
  3. 임계값 초과 시 Worker 추가 → EP 크기 확장
  4. 유휴 시 Worker 제거 → EP 크기 축소
# vLLM Elastic EP 설정 예시 (참고용)
# vllm serve deepseek-ai/DeepSeek-V3 \
#   --tensor-parallel-size 1 \
#   --expert-parallel-size 8 \
#   --enable-elastic-ep \
#   --min-ep-size 4 \
#   --max-ep-size 16

All-to-All 통신 병목

EP의 가장 큰 비용은 All-to-All 통신이다. 각 토큰이 라우팅된 Expert가 있는 GPU로 이동해야 하므로, 매 FFN 레이어마다 집합 통신이 발생한다.

통신 비용 구조

디스패치 (Dispatch): 각 GPU가 다른 GPU로 토큰 전송
                    → All-to-All 발신

컴바인 (Combine): 각 GPU가 Expert 처리 결과를 원래 GPU로 전송
                → All-to-All 수신

FFN 레이어당 2회의 All-to-All이 발생한다. DeepSeek V3(61개 레이어)에서는 122회다.

통신 ↔ 계산 중첩

현대 MoE 추론 시스템은 통신과 계산을 중첩(overlap)시킨다.

GPU 0: [디스패치 전송] → [Expert 0~31 계산] → [컴바인 수신]
         ↕ 중첩           ↕ 중첩              ↕ 중첩
GPU 1: [디스패치 수신] → [Expert 32~63 계산] → [컴바인 전송]

vLLM의 WideEP 구현은 CUDA 스트림을 분리해 All-to-All 통신이 진행되는 동안 이전 Expert 계산을 계속한다.

InfiniBand vs RoCE: WideEP는 GPU 간 고대역폭 통신이 필수다. InfiniBand(HDR: 200Gbps, NDR: 400Gbps)를 권장한다. RoCE도 지원하나 지연과 대역폭에서 열세다.


로드 불균형 문제

Expert 부하 쏠림

Router가 특정 Expert에 토큰을 집중 라우팅하면, 해당 GPU만 과부하가 걸리고 나머지는 유휴 상태가 된다. 이를 Expert 로드 불균형이라 한다.

이상적:  Expert 0~3 → 각 25% 부하
현실:    Expert 0 → 60%, Expert 1 → 25%, Expert 2 → 10%, Expert 3 → 5%
                  ↑ GPU 0이 병목

결과: Expert 0이 있는 GPU 0의 처리가 끝날 때까지 전체 배치가 기다려야 한다.

해결 방법

1. 보조 손실(Auxiliary Loss): 훈련 시 Expert 사용률 균등화를 위한 로드밸런싱 손실 항 추가. DeepSeek V3는 시퀀스 레벨 보조 손실로 훈련 안정성을 유지하면서 균등화를 달성했다.

2. 토큰 드로핑(Token Dropping): 과부하 Expert에 할당된 토큰 일부를 버린다. 처리량은 유지되지만 해당 토큰의 품질이 저하된다. Mixtral 등에서 사용하나 현재는 기피 경향이 있다.

3. Expert 선택 편향 보정: Router 로짓을 사후 조정해 잘 사용되지 않는 Expert 쪽으로 일부 라우팅을 유도한다.

4. ReaLB (Real-Time Load Balancing): 다중 모달 MoE를 위한 실시간 로드밸런싱 연구(arXiv:2604.19503). Expert 활성화 통계를 실시간으로 집계해 Router 편향을 동적으로 조정한다.

5. UltraEP: 랙 스케일 MoE 훈련·추론에서 near-optimal 로드밸런싱을 달성하는 방법론(arXiv:2606.04101, 2026년 6월).


vLLM MoE 서빙 실전 설정

EP 크기 선택 기준

모든 Expert 가중치 크기 = 총 파라미터 - 비-Expert 파라미터
EP 크기 ≥ 모든 Expert 가중치 크기 / GPU 메모리 (가중치 여유분)

예: DeepSeek V3 (BF16, Expert 가중치 약 550GB) → 최소 H100 8장 이상 필요.

모델권장 EPGPU
DeepSeek-V2-Lite (16E/2A)EP=4~8A100×4~8
DeepSeek V3/V4 (256E/8A)EP=8~32H100/GB200×8~32
Qwen3.8-Max (512E/10A)EP=16~64H100×16~64

주요 vLLM 파라미터

vllm serve <model> \
  --expert-parallel-size <EP 크기>          # Expert 병렬 규모
  --tensor-parallel-size 1                  # EP 우선 시 TP=1
  --max-num-seqs 512                        # 높은 동시접속 처리
  --kv-cache-dtype fp8                      # KV 메모리 절반으로
  --enable-prefix-caching                   # 프리픽스 재사용

운영 관측 지표

지표설명이상 임계값
expert_load_std_devExpert 부하 표준편차0.3 이상이면 불균형
all_to_all_latency_msAll-to-All 평균 지연워크로드별 다름
gpu_utilization_per_rankEP 랭크별 GPU 사용률편차 > 20% 이상 점검
num_preempted_reqs선점 요청 수지속 증가 시 EP 부족
decode_tpgsGPU당 디코딩 처리량모델별 기준 설정 필요

체크리스트


References