学習済みの Dense モデルを Sparse MoE モデルに変換する手法。Dense モデルの FFN 層を複数回コピーしてエキスパートとして配置し、ルーターを新規追加して継続学習する。ゼロからの MoE 学習に比べ大幅にコストを削減できる。
Sparse Upcycling は、既存の Dense Transformer モデルを Sparse MoE アーキテクチャに変換し、追加学習によって性能を向上させる手法です。2022 年に Google Research の Komatsuzaki らにより提案されました。MoE モデルをゼロから学習する膨大なコスト(数千 GPU 日〜数万 GPU 日)を回避し、既存の高品質 Dense モデルの知識を活用できるのが最大のメリットです。
Sparse Upcycling の手順は以下の通りです。
Step 1: FFN 層の複製: Dense モデルの各 Transformer ブロックの FFN 層を N 回コピーし、N 個のエキスパートとします。コピー直後は全エキスパートの重みが同一なので、どのエキスパートが選択されても同じ出力を返します。
Step 2: ルーターの初期化: 各 MoE 層にゲーティングネットワーク(ルーター)を新規追加します。通常は線形変換 W_g ∈ R^(d×N) で初期化され、初期状態ではほぼ均一なルーティング確率を出力します。
Step 3: 継続学習: 元のモデルの学習データ(またはその一部)を使って MoE モデル全体を再学習します。学習が進むにつれ、各エキスパートの重みが分岐し始め、ルーターが適切なルーティングパターンを学習します。
| プロセス段階 | エキスパートの状態 | ルーターの挙動 |
|---|---|---|
| 変換直後 | 全エキスパート同一重み | ほぼランダムルーティング |
| 学習初期 | わずかな重みの分岐開始 | 入力依存のパターン形成開始 |
| 学習中期 | 明確な専門化の兆候 | 安定したルーティングパターン |
| 学習後期 | 完全な専門化 | 入力特徴に基づく確定的ルーティング |
ゼロからの学習に対する Sparse Upcycling の優位性と制約を整理します。
利点:
制約:
Sparse Upcycling 原論文(2022): T5 ベースのモデルで検証。Dense T5-Large を 32 エキスパート MoE に変換し、同一計算予算の Dense 継続学習を上回る性能を達成しました。
Qwen MoE 系列: Dense Qwen モデルから MoE バリエーションへの変換に類似手法が適用されています。共有エキスパート(Shared Expert)を維持しつつ、残りをルーテッドエキスパートとして複製する変形も採用されています。
Branch-Train-Merge(BTM): Upcycling の派生として、各エキスパートを異なるデータセットで独立に訓練し、事後的にルーターで統合する手法も研究されています。専門化がより強力に起こる反面、ルーターの学習が難しくなります。
Sparse Upcycling を実施する際の実装上のポイントを整理します。
メモリ要件: N 個のエキスパートに FFN を複製するため、モデルのメモリ使用量は FFN 部分が N 倍に膨張します。たとえば 7B Dense モデルを 8 エキスパートに Upcycling すると、FFN 部分(全パラメータの約 2/3)が 8 倍になり、概算で約 40B パラメータの MoE モデルが得られます。
学習率スケジュール: ルーターは新規パラメータなので高い学習率が適切ですが、コピー済みエキスパートの重みは元のモデルの知識を保持するため低い学習率が望ましいです。異なる学習率を層ごとに設定するレイヤーワイズ学習率が有効です。
ノイズ注入: 変換直後は全エキスパートが同一なため、ルーティングが対称性を破れません。エキスパートの重みや入力にわずかなノイズを加えることで対称性を破り、多様な専門化を促進します。
A1: 原理的には任意の FFN 層を持つ Dense Transformer で可能ですが、十分に学習が収束したモデルを使うのが前提です。学習不足のモデルから Upcycling しても、エキスパートの専門化が意味をなしません。
A2: はい。Upcycling で生成された MoE モデルも通常の MoE と同じく GGUF 量子化に対応します。7B Dense → 8 エキスパート MoE(約 40B パラメータ)を Q4_K_M 量子化すると約 22GB となり、RTX 4090 で動作可能です。
A3: ファインチューニングはモデルアーキテクチャを維持したまま重みを調整しますが、Upcycling はアーキテクチャ自体を Dense から MoE に変更します。結果としてモデル容量が大幅に増加し、より広い知識を保持できるようになります。