모델 안에 여러 전문가 신경망을 두고, 라우터가 토큰마다 몇 개만 골라 계산하는 구조다. 전체 지식(총 파라미터)은 크게 늘리면서 토큰당 계산(활성 파라미터)은 작게 유지할 수 있어 대형 오픈 모델 대부분이 쓰고, 로컬에서 직접 돌릴 때 특히 알아 둬야 한다.
| 모델 | 총 파라미터 | 실제 계산 (활성) |
|---|---|---|
| Mixtral 8x7B | 약 470억 | 약 130억 |
gpt-oss-120b | 약 1,170억 | 약 51억 |
| DeepSeek-V3 | 6,710억 | 370억 |
Qwen3-235B-A22B처럼 이름에 활성 파라미터(A22B)를 함께 적는 경우도 있다.
API로 쓸 때는 MoE인지 몰라도 된다. 차이는 직접 돌릴 때 드러난다. 어떤 전문가가 불릴지 미리 모르니 전부 메모리에 올려야 하지만, 토큰마다 읽는 가중치는 일부라 같은 크기의 일반 모델보다 훨씬 빨리 답한다.
예를 들어 gpt-oss-120b는 전문가 가중치를 4비트로 줄여 80GB GPU 한 장에 들어가면서도 응답이 빠르다. 모델을 고를 때 총 파라미터로 메모리를, 활성 파라미터로 속도를 가늠하면 된다.
전문가 층은 용량은 크지만 토큰당 계산은 가볍다. 그래서 llama.cpp에서 전문가 가중치만 시스템 RAM으로 내리면, VRAM 12~24GB 그래픽카드에 RAM만 넉넉해도 수백억 파라미터 MoE를 쓸 만한 속도로 돌릴 수 있다.
| 설정 | 하는 일 | 이럴 때 |
|---|---|---|
-ngl 999 --cpu-moe | 어텐션은 GPU, 전문가는 전부 RAM | VRAM이 빠듯할 때 |
--n-cpu-moe | 앞쪽 몇 개 층 전문가만 RAM | VRAM에 여유가 조금 있을 때 |
서버에서 GPU 여러 장으로 서빙할 때는 전문가를 GPU마다 나눠 싣는 전문가 병렬화를 쓴다.
라우터가 몇몇 전문가만 편애하면 나머지는 놀게 된다. 서빙 중에는 인기 전문가가 실린 GPU만 바빠져 처리량이 떨어지고, 요청마다 불리는 전문가가 달라 메모리 대역폭도 예상보다 많이 쓴다.
파인튜닝은 적은 데이터에 과적합되기 쉬워 일반 모델보다 까다롭다. 큰 MoE를 적은 GPU로 미세조정한다면 전문가 층은 얼려 두고 나머지만 학습하는 방법부터 시도해 볼 만하다. 연구에서는 이렇게 해도 전체를 학습한 것과 비슷한 결과가 나왔고, 메모리도 아낄 수 있다.
MoE는 따로 켜는 기능이 아니라 모델을 고르고 돌릴 때 따져 보는 구조다. 사람들이 가장 신경 쓰는 곳은 로컬 실행이고, 서버 운영과 미세조정에서도 고려한다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 로컬 PC (llama.cpp 등) | 총 파라미터로 RAM·VRAM이 충분한지 보고, 전문가만 RAM으로 내려 큰 MoE를 작은 GPU에서 돌린다 |
| API·채팅 서비스 | MoE인지 신경 쓰지 않고 그대로 호출한다. 대형 모델이 빨리 답하는 건 활성 파라미터가 작은 덕분이다 |
| 자체 GPU 서버 | 전문가 병렬화로 GPU마다 전문가를 나눠 싣고, 특정 GPU로 쏠려 처리량이 떨어지지 않는지 지켜본다 |
| 사내 데이터 미세조정 | 전문가 층은 얼려 두고 나머지만 학습해 적은 GPU로 메모리를 아끼며 튜닝한다 |