混合エキスパート(MoE)は、フィードフォワードネットワークを複数のエキスパートサブネットワークに置き換え、ルーターがトークンごとに計算を割り当てるモデル構造です。重要なのはエキスパートの数ではなく、スパース活性化です。各トークンは少数のエキスパートだけを通り、残りはそのステップでは働きません。そのため総パラメータは非常に大きくでき、推論1ステップの計算量は活性化した部分だけで数えます。この一文を理解することが、MoEのトレードオフのすべてを理解することです。
ルーターは、MoEの中で最も小さく、最も重要な部品です。各トークンの表現を読み取り、すべてのエキスパートにスコアを付け、上位k個だけを残す小さな学習可能なネットワークです。選ばれたエキスパートがそれぞれトークンを処理し、その出力はルーターの重みで加重合成されます。注意層、埋め込み、ルーター自体はすべてのトークンで共有され、スパースなのはエキスパートのフィードフォワード層だけです。共有エキスパートを加え、すべてのトークンを通して共通パターンを処理し、ルーティングされるエキスパートの負担を軽くする設計もあります。
密なモデルとMoE、コストは分けて考える
密なモデルは、生成するトークンごとにすべてのパラメータを動かすため、パラメータが2倍になると計算とメモリもほぼ2倍になります。MoEはこの2つを切り離します。総パラメータはどれだけの重みをメモリに収めるかを決め、活性化パラメータは各ステップの速さを決めます。同じカードでも、MoEは総パラメータをはるかに大きく持てることが多いですが、すべての重みがメモリに常駐し、エキスパートの読み込みと切り替えにもコストがかかるため、小さな密なモデルのように動くわけではありません。総パラメータだけを見ても誤解し、活性化パラメータだけを見ても誤解します。2つの数字を一緒に読む必要があります。
よくある3つの誤解を切り分けましょう。第一に、エキスパートは科目別の部署ではありません。ルーティングが学ぶのは統計的パターン上の分業であり、誰もエキスパートに「数学担当」「コード担当」の札を付けていません。話題でエキスパートを指定しても当てになりません。第二に、エキスパートが多ければ能力が自動的に積み上がるわけではありません。ルーターがほとんどのトークンを少数のエキスパートに送れば、遊んでいるエキスパートはメモリの無駄になり、訓練では負荷分散の制約でこの崩壊を防ぎます。第三に、MoEは自動的にお金を節約しません。節約するのはトークン当たりの計算で、代わりに大きなメモリ、より複雑なデプロイ、デバッグの難しい訓練と引き換えになり、推論サービスもエキスパート並列化と通信のコストを払います。
MoEは、総容量の需要が大きく、1ステップの遅延予算が厳しく、大きなメモリと分散デプロイを担える場合、たとえば大規模なオンライン推論に適しています。個人のデバイスでMoEを動かす場合は、まずメモリの計算からです。重みの総量が収まるかどうかを決め、活性化量が速さを決め、両方の条件が必要です。逆に、パラメータ規模が控えめでデプロイが単純なら、密なモデルのほうが手間が少なく、デバッグや量子化のツールも成熟しています。アーキテクチャを選ぶときは、まず制約を見て、次にパラメータの数字を見ましょう。