技術約11分で読めます

Kimi K3の896エキスパートを「896人の専門家」と呼ぶと何がズレるか、ルーターは何を選んでいるのか

いけさん目次

Kimi K3の「896エキスパートのうち16個を動かす」という説明を見て、最初は896人の専門家から、その質問に合う16人を呼ぶモデルだと思っていた。数学担当、コード担当、日本語担当のような分業である。

だが、各トークンについて層ごとに16個を選び直す構造まで考えると、この比喩ではかえって分からなくなる。そもそもエキスパートは独立した小型LLMではない。K3の場合は、TransformerのFFN(フィードフォワードネットワーク)部分を細かく分けたものだ。

Kimi K3の発表時に書いた記事では、技術レポート公開前だったのでStable LatentMoEをほとんど扱えなかった。7月27日に重みと技術レポートが公開され、ルーターの式、エキスパートが処理する次元、負荷分散の方法まで判明した。そこから「エキスパートとは何か」「ルーターは何を分類しているのか」を考えてみる。

K3のエキスパートは896個の小型LLMではない

通常のTransformerブロックには、大きく分けてアテンションとFFNがある。アテンションがトークン間の情報を混ぜ、FFNが各トークンの特徴を変換する。

Denseモデルでは、ある層の全トークンが同じFFNを通る。

y=FFN(x)y = \mathrm{FFN}(x)

MoEでは、このFFNを複数用意し、入力ごとに一部だけを動かす。

y=iTopK(x)piEi(x)y = \sum_{i \in \mathrm{TopK}(x)} p_i E_i(x)

EiE_iはエキスパート、pip_iはその出力へ掛ける係数を表す。概念図にするとこんな感じ。

flowchart TD
    A[ある層へ入った1トークンの隠れ状態] --> B[ルーターが896個のスコアを計算]
    B --> C[上位16個を選択]
    C --> D[16個のエキスパートFFNを実行]
    D --> E[出力を重み付き合成]
    E --> F[次の層へ]

K3の実際の数字も入れておく。

項目Kimi K3
層数93
モデルの隠れ次元7168
ルーティング対象エキスパート各MoE層に896個
1トークンで選ぶエキスパート16個
常時動く共有エキスパート2個
エキスパートへ渡す潜在次元3584
エキスパートごとの中間次元3072
総パラメータ2.78T
アクティブパラメータ104.2B

大事なのは、この896個を各MoE層がそれぞれ別に持っているという点だ。第20層のエキスパート137と第70層のエキスパート137は、番号が同じだけの別の重みである。

K3のStable LatentMoEでルーティング対象のエキスパートへ渡る入力は、7168次元から3584次元へ圧縮される。16個の出力を合成した後に7168次元へ戻す。共通の変換は2個の共有エキスパートが元の7168次元で常時担当する。

式を簡略化するとこんな感じ。

z=Wdownxz = W_{\mathrm{down}}x u=iTop16(x)piEirouted(z)u = \sum_{i \in \mathrm{Top16}(x)} p_i E_i^{\mathrm{routed}}(z) y=E1shared(x)+E2shared(x)+WupRMSNorm(u)y = E_1^{\mathrm{shared}}(x) + E_2^{\mathrm{shared}}(x) + W_{\mathrm{up}}\mathrm{RMSNorm}(u)

「896人に相談する」より、「共通処理を2本通しながら、896種類の小さな変換から16個を選んで、その場のFFNを組み立てる」の方が実装に近い。

エキスパートに「Python担当」のような担当分野は決められていない

エキスパートという名前からは、学習前から担当分野が用意されているように見える。実際には、エキスパートにもルーターにもドメイン名の教師ラベルは与えられない。

学習開始時点では、エキスパート137の担当はまだ何も決まっていない。ルーターがある隠れ状態をエキスパートへ送ると、選ばれたエキスパートの出力に混合重みが掛かり、次トークン予測の損失からの勾配がその混合重みを通ってルーターにも流れる。Top-16の選択そのものは離散で、そこを勾配は通らない。負荷分散用のバイアス更新も、これとは別の処理として走る。特定の入力が同じエキスパートへ集まり、そのエキスパートが入力に合う変換を学習し、さらに選ばれやすくなる。この繰り返しの中で役割ができる。

DeepSeekMoEがエキスパートを細分化した狙いも、細かいエキスパートを組み合わせる自由度を増やすことにあった。共有エキスパートを分離し、ルーティング対象が共通知識を重複して持つのを減らす設計もK3へ引き継がれている。

もちろん、学習後に言語やドメインとの相関が見つかることはある。多言語MoEの2026年の分析では、初期・中間層のルーティングは言語に依存せず拡散し、言語別の専門化は主に後半層で現れた。別の多言語分析では、初期層と後期層に言語固有処理があり、中間層は言語非依存の容量として働くという結果が出ている。2本の結果は一見食い違うが、対象モデルと分析条件が違う。

ACL 2026のThe Illusion of Specializationは、3モデルのMMLUルーティングをエキスパート群の単位で調べた。多数のドメイン、層、ルーティング数にまたがって、常に大きな比率を占める少数の「常任委員会(Standing Committee)」があり、そこが構文や推論の骨組みを受け持ち、周辺エキスパートの方がドメイン固有知識を処理していたという。

実際のエキスパート群には、複数ドメインで繰り返し使われるものと、特定ドメインへ偏るものが混在している。エキスパートに入っているのは、「Python」や「数学」のような分野名ではなく、隠れ状態のある領域に有効だった変換である。その領域が人間の知るカテゴリと一致する場合もあれば、構文、トークン形状、数値表現、複数特徴の組み合わせが混ざる場合もある。

ルーターは計算の割当器

では、896個から16個を選ぶルーターは何をしているのか。K3の技術レポートに出てくる基本式は次の1行だ。

s=Sigmoid(Wrx)s = \mathrm{Sigmoid}(W_r x)

現在の隠れ状態xxを線形射影し、896個のスコアssを出す。学習中はエキスパートごとの負荷調整用バイアスを足し、上位16個を選ぶ。選択後の混合比には元のスコアを正規化した値を使う。

これは形だけなら896クラスの分類器に似ている。ただし、ルーターは896個の候補から16個の番号を返し、対応するFFNを直後に実行する。学習では次トークン予測の損失がルーターまで逆伝播する。一般的な多クラス分類とは、出力の使い道も学習方法も異なる。

ルーターへ入るxxは、その層までのアテンションとFFNが加工してきた隠れ状態である。最後の選択器が線形射影で済んでいるのは、手前の層が意味、構文、位置などを線形分離しやすい形にしているからだと読める。BERTの隠れ状態に小さな線形分類ヘッドを載せられるのと似ているが、MoE ルーターには人間が付けた分類ラベルがない。

ルーター専用の独立訓練はない

「2.8Tモデルの経路を選ぶなら、ルーター自体も小型LLMとして鍛える必要があるのでは」と考えたが、ルーター専用の別モデルや、文章理解モデル・方策モデルとしての独立した訓練はなく、K3のルーターはモデル本体の学習の中でエキスパートと一緒に更新される。

ルーター周辺ではエキスパート間の負荷の偏りが問題になる。特定のエキスパートへトークンが偏ると、そのエキスパートを置いたGPUに処理が集中する。一方、選択回数が少ないエキスパートは学習データも減る。全エキスパートへ均等に送ることを優先しすぎると、今度は同じ入力の送り先が学習ステップごとに変わり、エキスパート同士が似たものになる。

ACL 2026 FindingsのMemory-Aware Routingは、この状態を「疑似バランス」と呼んでいる。使用回数は均等でも、知識が重複し、専門化が安定しないという問題だ。

K3は896個という極端な数を扱うため、Quantile Balancingという負荷分散を入れた。各エキスパートが目標数のトークンを受け取れる境界をルータースコアの分位点(スコア分布で上位何%にあたるかの境界値)から求め、選択用バイアスを更新する。推論時には学習終了時のバイアスを固定して使う。分位点の計算は学習中だけだ。

ここでもルーターは単純なゲートのまま、特定エキスパートへの集中と、選ばれないエキスパートが学習されないまま残ることを防ぐ方向に工夫している。

K3はまだ固定93層のTransformer

FFNの経路がここまで動的なら、アテンションや層数まで固定しておく理由はあるのか、という疑問が出てくる。

現在のK3は、その意味ではまだTransformerである。各トークンは93層を順番に進む。69層のKimi Delta Attentionと24層のGated MLAは併用されているが、どの層でどちらを使うかはモデル設計時に固定されている。ルーターが入力から選ぶのはFFNの経路だけだ。Attention Residualsで過去の層からどの表現を取り出すかは動的になったが、ブロック自体を飛ばしたり繰り返したりはしない。

flowchart LR
    A[全トークン] --> B[固定されたアテンション]
    B --> C[MoE ルーター]
    C --> D[16個のFFNを選択]
    D --> E[次の固定層]

固定を外せる場所の候補はいくつかある。

  • トークンごとに途中の層で終了する
  • トークンごとにブロックを通る回数を変える
  • アテンションと状態空間モデルを入力ごとに選ぶ
  • 長距離検索が必要なときだけアテンションを使う
  • 1トークンに割り当てるFFN計算量を可変にする

どれも研究段階では実例がある。2026年のADEPTは、トークン単位で早期終了する仕組みを生成にも取り入れた。Depth-Recurrent Transformerは、同じ重みのTransformerブロックを潜在空間で反復し、パラメータ数と計算の深さを切り離している。

Retrieval-Aware Distillationは、事前学習済みTransformerから検索に重要なアテンションヘッドだけを残し、残りを状態空間モデル型の再帰ヘッドへ置き換えた。1Bモデルで全アテンションヘッドの2%を残すだけで、検索を多用するタスクにおける元モデル性能の95%以上を回復したと報告している。SALSAは、再帰処理で足りないトークンだけアテンションを呼ぶルーターを試している。

これらはどれも、K3とは独立に進んでいる別々の研究である。ただ、FFNにだけ入っている条件付き計算をアテンション、深さ、反復回数へ広げる研究は、すでに始まっている。

ルーターがFFN以外まで選ぶようになると制御フローになる

仮に次のモデルが、トークンごとに次の選択をするとする。

flowchart TD
    A[隠れ状態] --> B{局所ゲート}
    B -->|圧縮状態で系列処理| C[状態空間モデル]
    B -->|過去から正確に検索| D[アテンション]
    B -->|特徴変換| E[MoE FFN]
    B -->|計算不足| F[同じブロックを再実行]
    B -->|十分| G[早期終了]
    C --> B
    D --> B
    E --> B
    F --> B

この場合のルーターは、実行するニューラル回路を組み立てている。どのモジュールを使うか、何回使うか、いつ止めるかを隠れ状態から決めるので、プログラムにおける制御フローへ近づく。

すると「そのルーターを判断するルーターがいるのでは」という問題も出る。ただし、現在のMoEと同じように、各層の局所ゲート、アテンションを呼ぶゲート、早期終了判定を別々に持てるので、中央に1個の巨大ルーターを置く必要はない。各ゲートは共有された隠れ状態を受け取り、担当する選択だけを出力する。

学習時には、離散的な経路選択の安定化が課題になる。選択へどう勾配を流すか、使われないモジュールの学習をどう進めるか、経路が入力や言語へ偏らないか、GPU間通信の待ち時間をどう抑えるか。K3はFFNのルーティングだけでQuantile Balancingと専用通信基盤を必要とした。モデル全体を動的配線にすれば、管理する経路と通信パターンがその分増える。

人工ニューロンの比喩より、アクセラレータ上の条件付き計算として見る

初期の人工ニューラルネットは、生物のニューロンを単純化し、入力の重み付き和と発火を数式にするところから始まった。K3でも線形変換、非線形関数、学習可能な結合を使う。896エキスパートは、GPUなどのアクセラレータ上で実行するFFN群として設計されている。

単純化された側の生物ニューロンについては、どれくらい単純化したのかを測った研究がある。Beniaguevらの2021年の研究は、皮質第5層の錐体細胞の生物物理モデルの入出力をミリ秒単位で人工ネットワークに再現させ、時間方向の畳み込みで5〜8層が必要だったと報告した。 NMDA受容体(グルタミン酸受容体の一種で、入力が重なったときに非線形な増幅を起こす)を外したモデルでは、隠れ層1層の全結合で足りていた。深さの大半は樹状突起でのNMDA由来の非線形性が原因だった。

人工ネットワークにどれだけ再現されにくいかを複雑さの指標にする考え方は、2026年7月のPNAS論文でヒトとラットの錐体細胞の比較に使われた。こちらは層数を可変にはせず、3層のTCNに固定して各細胞のスパイク予測のAUCを測り、その値を反転させて機能的複雑性指標(FCI)としていた。AUCが低いほど、つまり人工ネットワークが真似しきれないほど複雑ということになる。層数を1・2・3・5・7・9と振ったのは、3層で妥当かを確かめる感度分析のためだ。

FCIはヒトの方が有意に高く、要因は樹状突起の膜面積と分岐の形、それとNMDA受容体の密度と非線形性だった。ヒト型のシナプス特性を与えたL2/3錐体細胞モデルの斜行樹状突起1本でシナプスを増やしていくと、35個あたりを境に入力の足し合わせが線形以下から線形以上へ切り替わっていた。

K3の技術レポートでStable LatentMoEに割かれている話は、潜在次元へ落としたときの行列積の安定化や896エキスパートの負荷分散で、GPU間通信、GEMM(汎用行列積)の融合、重み転送はシステム実装側の章が扱う。64基以上のアクセラレータという推奨構成が出てくるのは公式ブログの方だ。エキスパート数、次元、量子化方式は、どれも学習性能とハードウェア効率の両方から決められている。

生物の神経回路を再現してK3になったのではない。微分可能な行列計算をアクセラレータ上で巨大化し、必要な部分だけ動かすためにエキスパートとルーターが置かれた。