大規模言語モデル(LLM)の効率的なスケールアップを実現するアーキテクチャ「Mixture of Experts (MoE)」を、PyTorchを用いてゼロから実装・解説した資料です。
■ 概要
MoEの肝となる「Router」の意思決定プロセスから、複数の「Expert(MLP)」へのデータ分配、そして並列演算による出力の統合までを、行列の形状推移(Shape Tracking)に焦点を当てて可視化しました。
■ 本スライドの核となる技術トピック
・RouterのGPU最適化実装: トークンごとの条件分岐(if文/forループ)を避け、topk、scatter、one_hot、cumsum を駆使したGPUフレンドリーなマスキング手法をステップバイステップで解説。
・Expert Capacityの導入: 特定のExpertへの負荷集中を防ぐための容量制限(Capacity Factor)の実装と、あふれたトークンの切り捨て処理の論理構造。
・行列演算による並列処理(bmmの活用): view や permute を用いて、バラバラなExpertへの入力を一つのテンソルとしてまとめ、一括で処理する「分配と統合」のメカニズム。
■ 実装した主なコンポーネント
・Routerクラス: Gating Logitの計算とTop-K選択。
・MLPExpertsクラス: 複数のExpertを一つのパラメータ群として保持し、バッチ行列乗算(bmm)で並列処理。
・MOELayerクラス: RouterとExpertsを統合し、エンドツーエンドの推論フローを構築。
■ 開発環境
Python
PyTorch (bmm, einsum, torch.amp 等の活用)