본문 바로가기
AI2026년 8월 18일5분 읽기

전문가 혼합(MoE) — 파라미터는 크게, 계산은 조금만

YS
김영삼
조회 8
전문가 혼합(MoE) — 파라미터는 크게, 계산은 조금만

전문가 혼합(MoE, Mixture of Experts)은 하나의 거대한 신경망 대신 여러 개의 작은 전문가(expert) 네트워크를 두고, 토큰마다 그중 일부만 골라 쓰는 구조다. 라우터(router)라는 작은 신경망이 각 토큰을 보고 "이건 이 전문가한테"라고 배정한다. 파라미터 총량은 어마어마하게 키우면서도, 실제로 한 토큰을 처리할 때 켜지는 계산은 그중 일부뿐이라 파라미터는 크게, 계산은 조금만이라는 절묘한 균형을 노린다.

나는 "총 파라미터 수백 B인데 활성 파라미터는 수십 B"라는 표기를 처음 봤을 때 뭔 소린가 했다. 알고 보니 이게 MoE의 핵심을 그대로 드러내는 숫자였다. 전체는 크지만 매번 다 쓰지는 않는다는 뜻이다.

밀집(dense)과 무엇이 다른가

보통의 트랜스포머(밀집 모델)는 모든 토큰이 모든 가중치를 통과한다. 파라미터를 2배로 키우면 계산도 2배가 된다. 성능을 올리려면 비용이 정직하게 따라 오른다. MoE는 이 연결을 끊는다. 예를 들어 전문가가 8개 있고 토큰마다 2개만 쓴다면(top-2), 파라미터를 크게 늘려도 토큰당 계산은 2개 전문가 몫에 그친다.

대개 트랜스포머의 피드포워드(FFN) 블록을 여러 전문가로 복제하고, 그 앞에 라우터를 붙인다. 어텐션은 공유하고 FFN만 갈라지는 형태가 흔하다.

# MoE FFN 층의 뼈대 (top-2 라우팅)
def moe_ffn(x, experts, router, k=2):
    logits = router(x)                 # 각 전문가 점수
    idx = topk(logits, k)              # 상위 k개 전문가 선택
    w = softmax(gather(logits, idx))   # 게이트 가중치
    out = 0
    for j in range(k):
        e = experts[idx[j]]            # 선택된 전문가만 실행
        out += w[j] * e(x)             # 가중합
    return out

라우팅이라는 골칫거리

MoE의 성패는 라우터에 달렸다. 토큰들이 특정 인기 전문가로만 몰리면(routing collapse), 그 전문가는 과부하되고 나머지는 놀아서 애써 만든 용량이 낭비된다. 그래서 로드 밸런싱 손실을 추가해 트래픽을 고르게 흩뿌리도록 유도하고, 전문가마다 용량 계수(capacity factor)로 처리 한도를 둔다. 한도를 넘친 토큰은 버려지거나(drop) 다음으로 흘려보낸다.

개념역할
라우터토큰을 어느 전문가에 보낼지 결정
top-k토큰당 활성화할 전문가 수
로드 밸런싱 손실특정 전문가 쏠림 방지
용량 계수전문가별 처리 한도

공짜 점심은 아니다 — 메모리

계산은 아꼈지만 메모리는 못 아낀다. 활성 전문가만 쓰더라도, 전체 전문가의 가중치는 전부 메모리에 올라가 있어야 한다. 그래서 MoE 모델은 "추론 속도는 활성 파라미터급인데 VRAM은 총 파라미터급"이라는, 배포자 입장에서 좀 얄미운 특성을 갖는다. 여러 GPU에 전문가를 나눠 싣는 전문가 병렬(expert parallelism)이 자주 동반되는 이유다.

또 하나. 라우팅 때문에 같은 배치 안에서도 토큰들이 서로 다른 전문가로 흩어져, GPU 사이에 토큰을 주고받는 통신(all-to-all)이 늘어난다. 이 통신을 잘 못 다루면 애써 아낀 계산 이득을 통신 지연이 다 까먹는다.

MoE는 "지능을 계산이 아니라 파라미터로 산다". 계산 예산을 크게 안 늘리고도 용량을 키우는 대신, 메모리와 통신·라우팅 복잡도라는 값을 치른다.

자주 묻는 질문

MoE 모델은 같은 크기 밀집 모델보다 항상 나은가요?

단순 비교는 어렵다. 같은 활성 계산량이라면 MoE가 더 큰 총 용량을 담을 수 있어 유리한 경우가 많다. 하지만 총 파라미터가 커 메모리를 많이 먹고, 라우팅·통신·학습 안정성 같은 부담이 따른다. "총 파라미터"가 아니라 "활성 파라미터"와 "총 메모리"를 함께 봐야 공정한 비교가 된다.

전문가는 사람이 정한 주제(수학·코딩 등)를 맡나요?

대개 아니다. 흔한 오해인데, 전문가는 사람이 라벨링한 분야를 맡도록 설계되지 않는다. 학습 과정에서 라우터와 함께 스스로 역할을 나누며, 그 분업은 사람이 해석하기 어려운 통계적 패턴을 따르는 경우가 많다. "수학 전문가", "코딩 전문가" 식의 깔끔한 분담을 기대하면 안 된다.

활성 파라미터가 작으면 추론 비용도 그만큼 싼가요?

계산량(FLOPs) 관점에서는 그렇다. 다만 전체 전문가 가중치를 메모리에 다 올려야 하므로 VRAM 요구는 총 파라미터에 가깝고, 여러 GPU 분산 시 통신 비용도 든다. 그래서 "계산은 싸지만 인프라는 만만치 않은" 프로파일을 갖는다.

top-k를 크게 하면 성능이 더 좋아지나요?

더 많은 전문가를 켜면 표현력이 늘 수 있지만 그만큼 토큰당 계산도 비례해 늘어, MoE의 장점이 희석된다. 실무에서는 top-1이나 top-2 같은 작은 값이 흔하다. 품질과 계산 사이의 균형점을 평가로 찾는 게 정석이다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록