AI・機械学習
中級

Frankenmerge(レイヤー選択的マージ)(フランケンマージ)

複数のLLMから特定のTransformerレイヤーを選択的に抽出・結合し、元モデルより大きなパラメータ数の新モデルを構築するマージ手法。passthrough方式とも呼ばれる。

0 回閲覧
0 いいね

Frankenmergeとは

Frankenmerge(フランケンマージ)は、複数のLLMから特定のTransformerレイヤーを選択的に抽出して結合することで、元のモデルよりも大きなパラメータ数を持つ新しいモデルを構築するマージ手法である。mergekit では「passthrough」方式として実装されている。フランケンシュタインの怪物のように、異なる「部品」を組み合わせて新たな存在を作り出すことからこの名がついた。

Frankenmergeの仕組み

通常のマージ手法(SLERP、TIES、DARE)はパラメータの重み空間で統合を行うが、Frankenmergeはレイヤー単位で物理的にモデルを結合する。

基本構造

Model A: [Layer 0-15] [Layer 16-31]  ← 32層モデル
Model B: [Layer 0-15] [Layer 16-31]  ← 32層モデル

Frankenmerge: [A: Layer 0-23] [B: Layer 8-31]  ← 48層モデル(重複あり)

レイヤーの重複や省略が可能であり、結果として元モデルより大きい(または小さい)モデルを生成できる。

代表的なFrankenmergeモデル

モデル名構成パラメータ数特徴
Goliath-120BLlama 2 70B × 2120B最初の成功例、2023年11月
SOLAR-10.7BLlama 2ベース depth upscaling10.7BUpstage公式、DUS手法
Bagel-34BYi-34B レイヤーインターリーブ34B高品質なRP/チャットモデル
CausalLM-14B7Bモデル × 2 のレイヤー結合14Bコミュニティ製の先駆的モデル
Nous-Capybara-34BYi-34B 改良型 Frankenmerge34BNousResearch製

mergekit での Passthrough 設定

slices:
  - sources:
      - model: meta-llama/Llama-3.1-8B-Instruct
        layer_range: [0, 24]
  - sources:
      - model: NousResearch/Hermes-3-Llama-3.1-8B
        layer_range: [8, 32]
merge_method: passthrough
dtype: bfloat16

レイヤー範囲の設計指針

  • 低層(Layer 0〜8): 入力埋め込み・基本的な言語理解層。安定したモデルから取得
  • 中層(Layer 8〜24): 知識・推論層。特化能力を持つモデルから取得
  • 高層(Layer 24〜32): 出力生成層。流暢な文章生成能力を持つモデルから取得
  • 重複配置: 同じレイヤー範囲を複数モデルから重複して配置すると、そのレイヤーの表現力が強化される

Depth Upscaling(DUS)手法

Upstage社が SOLAR-10.7B で採用した手法で、Frankenmergeの発展形である:

  1. ベースモデル(Llama 2 7B、32層)を複製
  2. 複製1: Layer 0〜23 を取得(上位8層をカット)
  3. 複製2: Layer 8〜31 を取得(下位8層をカット)
  4. 結合: 48層モデル(10.7Bパラメータ)を生成
  5. 追加学習: 結合部分のアライメントのために短時間ファインチューニング

Frankenmergeの利点と制約

利点

  • モデルサイズの拡大が可能(7B → 14B、70B → 120B)
  • レイヤー単位の精密な制御が可能
  • 計算コストが極めて低い(レイヤーのコピーのみ)
  • 異なる特化能力を持つレイヤーを組み合わせ可能

制約

  • レイヤー間の不整合により出力品質が不安定になりやすい
  • 結合境界部分で推論の一貫性が失われる場合がある
  • 適切なレイヤー範囲の選定には試行錯誤が必要
  • 生成されるモデルサイズが大きくなるため、推論コストが増大
  • DUS のように追加学習なしでは最適な結果が得られないことが多い

Frankenmerge の評価と実践

品質チェックポイント

  1. Perplexity測定: マージ前後で perplexity が大幅に悪化していないか確認
  2. レイヤー活性化分析: 結合境界付近のレイヤーの活性化分布が正常か確認
  3. 定性評価: チャット応答の一貫性、コード生成の正確性をマニュアルで検証
  4. ベンチマーク: MMLU、HellaSwag 等で元モデルとの比較

失敗パターンと対策

  • 繰り返し生成(Repetition): 結合境界の不整合が原因。境界レイヤーを重複配置して緩和
  • 非文法的出力: 高層レイヤーの不一致。出力層は単一モデルから取得するのが安全
  • 知識の欠落: 低層レイヤーのカットが原因。Layer 0〜4 は必ずベースモデルから取得

よくある質問(FAQ)

Q1: Frankenmerge後にファインチューニングは必要? A: 推奨される。特にDUS方式では、結合境界部分のアライメントのために短時間(1000〜5000ステップ程度)のファインチューニングが品質を大幅に向上させる。ただしGoliath-120Bのようにファインチューニングなしで実用的な品質を達成した例もある。

Q2: 異なるサイズのモデルをFrankenmergeできる? A: hidden_size(埋め込み次元)が一致するモデルのみ可能。7Bモデル(hidden_size=4096)同士は可能だが、7B(4096)と13B(5120)は不可。ただしnum_layers(レイヤー数)は異なっていても問題ない。

Q3: 最適なレイヤー分割点はどう見つける? A: 各レイヤーの重みの類似度(コサイン類似度)を分析し、類似度が低い(各モデルの特色が出ている)レイヤーを特化モデルから、類似度が高い(共通知識)レイヤーをベースモデルから取得するのが一般的。mergekit の mergekit-analyze コマンドでレイヤー間類似度を可視化できる。

まとめ

  • Frankenmerge はレイヤー単位でモデルを結合し、サイズ拡大も可能なマージ手法
  • mergekit の passthrough 方式で実装、計算コストはほぼゼロ
  • Goliath-120B や SOLAR-10.7B などの実績あるモデルが存在
  • 結合境界の不整合が最大の課題、DUS方式の追加学習で品質向上可能