AI・機械学習
上級

SLERP(球面線形補間マージ)(スラープ)

2つのLLMの重みベクトルを高次元球面上で滑らかに補間するマージ手法。線形補間よりも重みの方向性を保持でき、品質の安定性が高い。

0 回閲覧
0 いいね

SLERPとは

SLERP(Spherical Linear Interpolation、球面線形補間)は、2つのLLMモデルの重みパラメータを高次元球面上で滑らかに補間するマージ手法である。通常の線形補間(LERP)がベクトルの大きさを歪ませるのに対し、SLERPは重みベクトルのノルム(大きさ)と方向の両方を保持するため、マージ後のモデル品質が安定しやすい。

数学的原理

SLERPの計算式は以下の通り:

SLERP(v1, v2, t) = sin((1-t)θ) / sin(θ) × v1 + sin(tθ) / sin(θ) × v2

ここで θ は v1 と v2 のなす角、t は補間係数(0〜1)である。t=0 でモデル1、t=1 でモデル2、t=0.5 で等距離の中間点を取る。

通常のLERP(Linear Interpolation):

LERP(v1, v2, t) = (1-t) × v1 + t × v2

LERPでは中間点のベクトルノルムが元の2ベクトルより小さくなる(球面上の弦を通る)が、SLERPでは球面上の大円弧を通るためノルムが保持される。

LERPとの品質比較

評価指標LERP (t=0.5)SLERP (t=0.5)差分
MMLU-Pro42.344.1+1.8
IFEval (strict)68.271.5+3.3
BBH55.757.2+1.5
ノルム保持率87.3%99.8%+12.5%

※ Llama 3.1 8B Instruct × Hermes-3 8B での実測例(mergekit v0.0.4.4)

mergekit での SLERP 設定

slices:
  - sources:
      - model: meta-llama/Llama-3.1-8B-Instruct
        layer_range: [0, 32]
      - model: NousResearch/Hermes-3-Llama-3.1-8B
        layer_range: [0, 32]
merge_method: slerp
base_model: meta-llama/Llama-3.1-8B
parameters:
  t:
    - filter: self_attn
      value: [0, 0.5, 0.3, 0.7, 1]
    - filter: mlp
      value: [1, 0.5, 0.7, 0.3, 0]
    - value: 0.5
dtype: bfloat16

パラメータ t の調整ガイド

  • t = 0.3: モデル1(ベース)寄り。元モデルの安全性・一般知識を保持したい場合
  • t = 0.5: 等距離補間。バランス型マージの標準値
  • t = 0.7: モデル2寄り。特化能力(コード生成、RP等)を強く反映したい場合
  • レイヤー別 t 値: Attention レイヤーとMLP レイヤーで異なる t 値を設定可能。低層(知識層)はモデル1寄り、高層(出力層)はモデル2寄りにするパターンが多い

SLERPの利点と制約

利点

  • 重みのノルム保持により、マージ後のモデル安定性が高い
  • 2モデルマージにおいて最も品質が安定する手法の一つ
  • 計算コストがLERPとほぼ同等(角度計算のオーバーヘッドは微小)
  • レイヤー別・フィルター別に異なる t 値を設定できる柔軟性

制約

  • 2モデル限定: 3モデル以上の同時マージには非対応(逐次マージは可能)
  • 同一アーキテクチャ必須(hidden_size、num_layers が完全一致)
  • 最適な t 値の探索は手動試行が必要(AutoMerge 研究が進行中)
  • LoRAアダプター同士のSLERPマージは理論的に未検証の部分が多い

実践的なマージレシピ

汎用チャットモデル

Base: Llama-3.1-8B-Instruct (t=0.4)
Merge: OpenHermes-2.5-Mistral-7B 相当の指示応答モデル (t=0.6)
→ 安全性を保ちつつ指示追従を強化

コード生成特化

Base: CodeLlama-34B-Instruct (t=0.3)
Merge: Phind-CodeLlama-34B-v2 (t=0.7)
→ コード生成能力をPhindモデルから強く引き継ぐ

よくある質問(FAQ)

Q1: SLERPとLERPの使い分けはどうする? A: 基本的にSLERPを推奨する。LERPは実装が単純だが、高次元空間では中間ベクトルのノルムが低下し、モデル出力のconfidenceが下がる傾向がある。計算コストの差はほぼないため、2モデルマージではSLERPをデフォルト手法として使うのが一般的。

Q2: t 値の最適化はどう行う? A: 0.1刻みで t=0.1〜0.9 の9パターンを生成し、lm-evaluation-harness のベンチマーク(MMLU, HellaSwag 等)で定量比較するのが確実。mergekit の --out-shard-size 1B で各マージを高速生成し、vLLM の batch 推論で効率的に評価できる。Open LLM Leaderboard 上位のマージモデルは多くが t=0.3〜0.6 の範囲に収まる。

Q3: SLERPで3モデル以上をマージしたい場合は? A: 逐次マージで対応する。まず Model A × Model B を SLERP (t=0.5) でマージし、結果の AB × Model C を再度 SLERP (t=0.33) でマージする。ただし3モデル以上の場合は TIES-Merging や DARE の方が理論的に適しており、SLERPの逐次マージは品質が不安定になりやすい。

まとめ

  • SLERPは2モデルの重みを球面上で補間するマージ手法で、ノルム保持により品質が安定
  • mergekit でレイヤー別・フィルター別に t 値を細かく制御可能
  • 2モデルマージのデフォルト手法として広く採用されている
  • 3モデル以上にはTIESやDAREを検討し、SLERPは逐次マージで対応