SLERP(球面線形補間マージ)(スラープ)
2つのLLMの重みベクトルを高次元球面上で滑らかに補間するマージ手法。線形補間よりも重みの方向性を保持でき、品質の安定性が高い。
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-Pro | 42.3 | 44.1 | +1.8 |
| IFEval (strict) | 68.2 | 71.5 | +3.3 |
| BBH | 55.7 | 57.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は逐次マージで対応