Case Study: Advanced Merge Strategies

Ticket: GH-442 | Contract: merge.md §strategies

Overview

Six additional merge strategies for Arcee MergeKit parity: Task Arithmetic, NuSLERP, MultiSLERP, DELLA, Breadcrumbs, and SCE.

Strategies

StrategyBase RequiredModelsDescription
task-arithmeticyes2+Linear combination of task vectors
nuslerpno2Enhanced SLERP with nlerp fallback
multi-slerpno2+Barycentric SLERP for >2 models
dellayes2+Adaptive magnitude pruning (like DARE but magnitude-aware)
breadcrumbsyes2+Task arithmetic + outlier removal
sceno2+Variance-adaptive per-tensor weighting

API

use aprender::format::converter::merge::{MergeOptions, MergeStrategy};

// Task Arithmetic: base + Σ(scale_i * (model_i - base))
let opts = MergeOptions {
    strategy: MergeStrategy::TaskArithmetic,
    scales: Some(vec![0.7, 0.3]),
    base_model: Some("base.safetensors".into()),
    ..Default::default()
};

// DELLA: adaptive drop rate proportional to magnitude
let opts = MergeOptions {
    strategy: MergeStrategy::Della,
    drop_rate: 0.7,
    base_model: Some("base.safetensors".into()),
    ..Default::default()
};

// SCE: variance-adaptive per-tensor weighting
let opts = MergeOptions {
    strategy: MergeStrategy::Sce,
    weights: Some(vec![0.5, 0.5]),
    ..Default::default()
};

New MergeOptions Fields

FieldTypeDefaultUsed By
scalesOption<Vec<f32>>None (all 1.0)TaskArithmetic, Breadcrumbs
outlier_kf323.0Breadcrumbs

Falsification Tests

TestProperty
FALSIFY-MERGE-ADV-001All strategies produce finite results
FALSIFY-MERGE-ADV-002Task arithmetic with zero scale returns base
FALSIFY-MERGE-ADV-003SCE result bounded by input values

Run the Example

cargo run --example advanced_merge