Experts Backends — 전문가 행렬 곱 최적 백엔드

Experts Backends

MoE는 모든 구현이 같은 고수준 계산을 해요. 토큰마다 라우터가 k개의 전문가를 고르고, 선택된 전문가 파라미터와 투영을 거쳐 라우팅 가중치로 집계되는 식이죠. 차이는 전문가 행렬 곱(GEMM)을 어떻게 실행하느냐예요. Transformers의 ExpertsInterface가 이를 백엔드로 분리해요.

백엔드 비교

  • "eager": 전문가마다 반복하며 투영. 베이스라인.
  • "batched_mm": 선택된 전문가 파라미터를 토큰마다 복제해 torch.bmm로 한 번에. 작은 입력에 빠름(메모리↑).
  • "grouped_mm": 토큰을 선택 전문가별로 정렬해 grouped_mm으로 한 번에(PyTorch 2.9+). 큰 입력에 효율적.
  • "deepgemm": DeepGEMM 커널로 DeepSeek 모델 네이티브. FP8/FP4 양자화 지원.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
    "deepseek-ai/DeepSeek-V3",
    dtype="bfloat16",
    experts_implementation="deepgemm",
)

왜 중요한가

전문가 GEMM의 구현 방식이 학습·추론 처리량을 좌우해요. 하드웨어(호퍼/블랙웰)와 입력 크기·양자화에 맞는 백엔드를 고르는 게 핵심이에요.

더 알아보기