Mixture of Experts (MoEs) in Transformers
Quick Summary
전문가 혼합 모델은 토큰마다 일부 전문가만 활성화해 전체 모델 용량과 실제 계산량을 분리하며, Transformers는 이를 효율적으로 지원하기 위해 가중치 로딩·실행 백엔드·전문가 병렬화 구조를 재설계했다.
🖼️ 인포그래픽
🖼️ 4컷 인포그래픽
💡 한 줄 요약
전문가 혼합 모델은 토큰마다 일부 전문가만 활성화해 전체 모델 용량과 실제 계산량을 분리하며, Transformers는 이를 효율적으로 지원하기 위해 가중치 로딩·실행 백엔드·전문가 병렬화 구조를 재설계했다.
📌 핵심 요약
- 전문가 혼합 모델은 Transformer의 일부 밀집 피드포워드 계층을 여러 학습 가능한 전문가와 라우터로 대체하고, 각 토큰에는 선택된 소수의 전문가만 적용한다.
- 전체 매개변수는 모델 용량을 결정하지만 토큰당 활성 매개변수는 추론 비용을 좌우하므로, 전문가 혼합 모델은 큰 모델의 용량을 유지하면서 상대적으로 적은 계산을 수행할 수 있다.
- 새 가중치 로딩 구조는 체크포인트에 개별 저장된 전문가 텐서를 실행 환경에 적합한 연속 텐서로 병합하고, 단일 순회·비동기 구체화·변환 인식 스케줄링으로 로딩 시간과 메모리 피크를 줄인다.
- 전문가 백엔드는 모델 구현과 전문가 계산 방식을 분리하며, 정확성 확인용 순차 실행과 작은 배치에 적합한 배치 행렬곱, 큰 배치나 메모리 제약 환경에 적합한 그룹 행렬곱을 제공한다.
- 전문가 병렬화는 전문가를 여러 장치에 분산해 각 장치가 담당 전문가만 적재하고 계산하도록 함으로써, 토큰당 활성 전문가 수를 늘리지 않으면서 단일 장치에 담기 어려운 대규모 모델을 실행할 수 있게 한다.
🧩 주요 포인트
- 전문가 혼합 모델은 Transformer의 일부 밀집 피드포워드 계층을 여러 학습 가능한 전문가와 라우터로 대체하고, 각 토큰에는 선택된 소수의 전문가만 적용한다.
- 전체 매개변수는 모델 용량을 결정하지만 토큰당 활성 매개변수는 추론 비용을 좌우하므로, 전문가 혼합 모델은 큰 모델의 용량을 유지하면서 상대적으로 적은 계산을 수행할 수 있다.
- 새 가중치 로딩 구조는 체크포인트에 개별 저장된 전문가 텐서를 실행 환경에 적합한 연속 텐서로 병합하고, 단일 순회·비동기 구체화·변환 인식 스케줄링으로 로딩 시간과 메모리 피크를 줄인다.
- 전문가 백엔드는 모델 구현과 전문가 계산 방식을 분리하며, 정확성 확인용 순차 실행과 작은 배치에 적합한 배치 행렬곱, 큰 배치나 메모리 제약 환경에 적합한 그룹 행렬곱을 제공한다.
- 전문가 병렬화는 전문가를 여러 장치에 분산해 각 장치가 담당 전문가만 적재하고 계산하도록 함으로써, 토큰당 활성 전문가 수를 늘리지 않으면서 단일 장치에 담기 어려운 대규모 모델을 실행할 수 있게 한다.
🧠 상세 정리
1. 밀집 모델 확장의 성과와 현실적 한계
최근 수년간 언어 모델의 발전은 데이터와 매개변수를 함께 늘리면 성능이 향상된다는 밀집 모델 확장 전략에 크게 의존했다. 약 3천만 매개변수의 초기 ULMFiT에서 15억 매개변수의 GPT-2를 거쳐 수천억 매개변수 규모의 시스템으로 발전하는 과정에서, 확장 법칙도 이러한 방향을 뒷받침했다. 그러나 모델이 커질수록 학습 비용은 계속 증가하고, 추론 지연도 길어지며, 배포에 필요한 메모리와 하드웨어 요구량 역시 커진다. 전문가 혼합 모델은 모든 토큰이 전체 매개변수를 사용하는 밀집 구조의 한계를 완화하고, 모델의 전체 용량과 실제 계산량을 분리하기 위한 대안으로 제시된다.
2. 전문가 혼합 모델의 구조와 핵심 원리
전문가 혼합 모델은 Transformer의 기본 골격을 유지하되 일부 밀집 피드포워드 계층을 여러 개의 전문가로 교체한다. 여기서 전문가는 수학이나 코드처럼 사람이 정한 주제를 담당하는 모듈이 아니라, 학습 과정에서 기능이 결정되는 학습 가능한 하위 신경망이다. 라우터는 각 토큰의 은닉 표현을 바탕으로 소수의 전문가를 선택하며, 서로 다른 토큰은 서로 다른 전문가 조합을 활성화할 수 있다. 이 구조에서 전체 매개변수 수는 모델이 보유한 용량과 관련되지만, 실제 추론 속도와 계산 비용은 토큰마다 활성화되는 매개변수 수에 더 직접적으로 좌우된다는 점이 핵심이다.
3. 활성 매개변수와 실제 추론 속도
글은 gpt-oss-20b를 전체 210억 매개변수와 토큰당 약 36억 활성 매개변수의 차이를 보여주는 사례로 제시한다. 이 모델은 총 32개 전문가 가운데 토큰마다 4개를 사용하며, 공유 구성 요소와 선택된 전문가를 합치면 각 토큰에서 실제로 사용되는 매개변수는 전체보다 훨씬 적다. 메모리 대역폭이 약 800기가바이트인 M3 Ultra Mac에서 bfloat16 매개변수가 각각 2바이트를 차지한다고 계산하면 초당 약 111토큰이라는 추정치가 나오며, 실제 측정값은 약 115토큰으로 소개된다. 저자는 이 결과가 해당 모델이 계산 측면에서는 약 36억 매개변수 모델처럼 동작하면서도 전체 210억 매개변수 규모의 용량을 갖는다는 설명과 대체로 일치한다고 본다.
4. 계산 효율성과 산업 채택 확대
전문가 혼합 모델은 동일한 학습 부동소수점 연산 예산에서 밀집 모델보다 더 나은 결과를 보이는 경우가 있어, 더 빠른 실험과 효율적인 확장에 유리하다고 설명된다. 또한 전문가가 계산 그래프 안에서 명확한 구조적 경계를 형성하고 토큰마다 서로 다른 전문가가 활성화되므로, 전문가 단위 병렬화라는 자연스러운 분산 축을 제공한다. 공개 모델에서는 Mixtral-8x7B와 DeepSeek V2 같은 초기 사례에 이어 2025년 1월 DeepSeek R1의 성공 이후 도입 속도가 빨라졌으며, 최근 사례로 Qwen 3.5, MiniMax M2, GLM-5, Kimi K2.5가 언급된다. 폐쇄형 연구소의 희소 구조 사용은 일부 추정의 영역이지만, 공개된 gpt-oss 모델은 전문가 혼합 구조를 실제로 사용한다고 글은 구분해 설명한다.
5. Transformers가 직면한 희소 모델 지원 과제
기존 생태계의 모델 로딩, 장치 배치, 양자화, 실행 백엔드는 대부분 밀집 모델을 전제로 설계되어 있어 전문가 혼합 모델을 그대로 수용하기 어렵다. 희소 구조를 Transformers의 일급 지원 대상으로 만들려면 새로운 모델 클래스 몇 개를 추가하는 것만으로는 충분하지 않으며, 가중치 로딩 파이프라인과 실행 모델, 분산 추상화까지 다시 설계해야 한다. 특히 체크포인트의 저장 형식과 고성능 실행 커널이 요구하는 메모리 배치가 서로 다르고, 토큰별 전문가 선택과 결과 재정렬까지 실행 계층에서 처리해야 한다. 글은 이러한 문제를 해결하기 위한 핵심 영역으로 가중치 로딩 개편, 전문가 백엔드, 전문가 병렬화와 학습 지원을 제시하며, 제공된 본문에서는 앞의 세 영역을 구체적으로 설명한다.
6. 가중치 변환기로 해결한 저장·실행 형식 불일치
밀집 모델에서는 체크포인트 텐서 하나가 실행 모듈의 매개변수 하나에 대응하는 경우가 많지만, 전문가 혼합 체크포인트는 각 전문가의 가중치를 별도 텐서로 저장하는 경우가 일반적이다. DeepSeek-V3의 사례처럼 한 계층에 0번부터 255번까지의 전문가 행렬이 나란히 저장될 수 있는 반면, 그룹 행렬곱이나 융합 실행 커널은 모든 전문가 가중치가 하나의 연속 텐서로 묶여 있기를 요구한다. 범용 가중치 변환기는 체크포인트를 완성된 실행 배치로 간주하지 않고, 목표 실행 구조로 변환할 원천 텐서 집합으로 취급한다. 키 패턴을 대상 키와 변환 연산에 연결하고, 전문가 목록 병합·텐서 연결·전문가 목록 분할 같은 조합 가능한 연산을 사용해 개별 텐서를 묶거나 다시 나눌 수 있다.
7. 지연 구체화와 가중치 로딩 성능 개선
새 로더는 체크포인트 키를 한 번 순회하면서 변환기 패턴과 대조하고, 필요한 텐서를 변환기별로 묶은 뒤 향후 구체화할 작업으로 등록한다. 실제 텐서는 스레드 풀을 통해 준비되며, 한 계층의 모든 전문가가 필요하듯 의존성이 충족되어야 하는 변환은 관련 입력이 모두 준비된 뒤 한 번만 실행된다. Qwen/Qwen1.5-110B-Chat을 A100 80기가바이트 한 장에서 측정한 결과, 자동 장치 배치 기준 v4의 약 66초대 로딩이 v5 비동기 기본 모드에서는 20.71초로 줄었고, v5 텐서 병렬 비동기 모드는 10.1초를 기록했다. 글은 이 향상이 단순히 스레드를 늘린 결과가 아니라 단일 순회 라우팅, 비동기 구체화, 변환 인식 스케줄링을 결합해 불필요한 구체화와 메모리 피크를 줄인 결과라고 설명한다.
8. 양자화를 포함하는 통합 로딩 파이프라인
가중치 로딩 개편 이후에는 먼저 원하는 실행 모듈 구조를 만든 다음, 체크포인트 가중치를 그 구조에 맞게 변환해 넣을 수 있게 되었다. 이에 따라 양자화도 로딩이 끝난 뒤 별도로 수행하는 절차가 아니라, 선택적으로 가중치 변환 파이프라인 안에 결합할 수 있다. 전문가별 양자화는 전문가가 예측 가능한 방식으로 패킹된 구조를 가져야 의미 있게 적용할 수 있으므로, 저장된 개별 텐서를 실행용 연속 텐서로 변환하는 과정과 긴밀하게 연결된다. 글은 과거에는 구성하기 어려웠던 이러한 종단 간 흐름이 새 구조를 통해 가능해졌으며, 사용자가 활용할 수 있는 공개 인터페이스로 제공된다고 설명한다.
9. 교체 가능한 전문가 실행 백엔드
전문가 가중치를 하나의 실행 텐서로 묶은 뒤에는 선택된 토큰을 해당 전문가로 보내고, 투영 연산을 수행하며, 라우팅 가중치를 적용한 다음 결과를 수집해 원래 순서로 되돌리는 과정이 필요하다. 전문가 백엔드 시스템은 이 계산 방식을 개별 모델 구현에서 분리하고, 장식자를 통해 실행 시점에 적절한 백엔드를 선택할 수 있는 교체 가능한 구조를 제공한다. 순차 실행 방식은 선택된 전문가를 차례로 처리하므로 정확성 기준과 디버깅에 사용되며, 배치 행렬곱 방식은 토큰별로 선택된 전문가 가중치를 복제해 하나의 배치 연산을 수행하므로 메모리가 충분한 작은 배치의 그래픽 처리 장치 작업에 적합하다. 그룹 행렬곱 방식은 토큰을 전문가 식별자별로 정렬하고 묶어 하나의 그룹 연산으로 처리하므로, 큰 배치나 메모리 제약이 있는 환경에서 강점을 갖는다.
10. 전문가 병렬화를 통한 다중 장치 확장
전문가 혼합 모델의 전체 매개변수는 수천억 개에 이를 수 있어 단일 그래픽 처리 장치의 메모리에 모두 적재하기 어려우며, 전문가 병렬화는 전문가 집합 자체를 여러 장치에 나누어 이 문제를 다룬다. 각 장치는 자신에게 배정된 전문가만 적재하고 해당 전문가로 전달된 토큰을 계산한 뒤, 다른 장치와 함께 결과 집계에 참여한다. 이 방식은 모델 전체 용량을 여러 장치로 확장하면서도 각 토큰이 활성화하는 전문가 수는 소수로 유지하므로, 전체 매개변수 증가가 토큰당 계산량 증가로 그대로 이어지지 않게 한다. Transformers에서는 분산 설정에서 전문가 병렬화 옵션을 활성화하고 torchrun으로 실행하며, 프로세스 수는 전체 전문가 수를 균등하게 나눌 수 있어야 한다고 본문은 안내한다.
🧾 핵심 주장 / 시사점
- 전문가 혼합 모델의 효율성은 전체 매개변수를 줄이는 데 있지 않고, 큰 전체 용량 가운데 토큰마다 실제로 읽고 계산하는 활성 매개변수를 제한하는 데 있다.
- 희소 모델의 성능을 제대로 활용하려면 모델 구조뿐 아니라 체크포인트 변환, 텐서 패킹, 비동기 로딩, 양자화, 전문가 실행 커널을 하나의 연속된 시스템으로 설계해야 한다.
- 전문가 백엔드와 전문가 병렬화는 각각 한 장치 안에서의 효율적인 토큰·전문가 계산과 여러 장치에 걸친 전문가 분산을 담당하며, 서로 다른 계층의 확장 문제를 해결한다.
✅ 액션 아이템
- 모델 용량 산정은 총 파라미터, 추론 비용은 토큰당 활성 파라미터로 분리해 MoE 도입 효과를 정량화한다.
- 새 가중치 로딩 파이프라인을 적용해 체크포인트 전문가 텐서를 연속 텐서로 병합하고 단일 순회·비동기 구체화로 지연과 메모리 피크를 낮춘다.
- 전문가 백엔드를 구현체와 분리해 순차 실행, 배치 행렬곱, 그룹 행렬곱의 선택 규칙을 정의해 정확도와 처리량을 균형 있게 조정한다.
❓ 열린 질문
- 토큰당 활성 전문가 수를 고정할지 가변할지에 따라 계산 비용과 품질은 어느 구간에서 가장 민감하게 변동하는가?
- 단일 순회·비동기 구체화 방식은 어떤 배치 크기와 메모리 제약에서 로딩 지연 감소 효과가 최대가 되는가?
- 전문가 병렬화에서 라우터 편향을 줄이면서 장치 간 동기화 오버헤드는 어떤 지표로 관찰하고 통제할 것인가?