2つのLLMの重みベクトルを高次元球面上で滑らかに補間するマージ手法。線形補間よりも重みの方向性を保持でき、品質の安定性が高い。
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 (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)
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
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モデルから強く引き継ぐ
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の逐次マージは品質が不安定になりやすい。