Evolution Lab Advanced 2 minute read Updated 2026-06-28 UTC

Evolutionary merge search

How to use population search, surrogate evaluation, compatibility checks, and multi-objective scoring to explore model and adapter merge candidates.

Research statusSource-backed synthesis from model merging, LoRA, and improvement directive reports Publication statePublished Reviewed byMichael Kappel Source reports5

Direct answer

Evolutionary merge search treats merge recipes as candidates. A candidate may specify parent weights, adapter weights, layer selection, sparsification, sign-consensus rules, distillation steps, or router policies. The search optimizes a multi-objective viability score rather than a single benchmark.

Search space

Candidate geneExample values
parent setchampion, domain specialist, fast local adapter
compatibility classsame base, same tokenizer, same tensor layout, distillation required
merge operatorlinear, SLERP, task vector, TIES, DARE, low-rank projection
layer policyall layers, decoder-only, attention-only, selected depth-first path
post-merge repairno repair, small fine-tune, distill from ensemble, calibration pass
release targetarchive only, shadow, canary candidate, retire parent

Algorithm

pseudocode
PROCEDURE evolutionary_merge_search(parent_pool, eval_suites, budget)
    population <- INITIALIZE_MERGE_RECIPES(parent_pool)
    archive <- EMPTY_QUALITY_DIVERSITY_ARCHIVE()

    WHILE budget.remaining_evaluations > 0
        candidates <- MUTATE_AND_RECOMBINE_RECIPES(population)

        FOR candidate IN candidates
            IF NOT COMPATIBLE(candidate.parents) THEN
                candidate <- CONVERT_TO_DISTILLATION_RECIPE(candidate)
            END IF

            quick_score <- SURROGATE_SCORE(candidate)
            IF quick_score.below_screening_threshold THEN
                archive.RECORD_REJECT(candidate, quick_score)
                CONTINUE
            END IF

            artifact <- BUILD_CANDIDATE_ARTIFACT(candidate)
            evidence <- RUN_FROZEN_EVAL_SUITES(artifact, eval_suites)
            profile <- PROFILE_RESOURCES(artifact)
            viability <- MULTI_OBJECTIVE_SCORE(evidence, profile)
            archive.UPDATE_NICHE(candidate.behavior_descriptor, artifact, viability)
        END FOR

        population <- SELECT_PARETO_SET_AND_DIVERSE_CHALLENGERS(archive)
    END WHILE

    RETURN archive
END PROCEDURE

Why multi-objective search matters

A merge that wins one benchmark but loses calibration, latency, interpretability, or rollback clarity is not a better system. Use a Pareto set when several candidates are useful in different niches. Do not collapse diversity unless consolidation is the explicit objective.

Practical first version

Use adapter recipes before full weight merges. They are smaller, easier to hash, faster to build, easier to reverse, and compatible with the TinyRustLM-style adapter ABI.

Source reports used for this guide

These reports are preserved verbatim in the site archive. The guide above is an editorial synthesis and may narrow, qualify, or reorganize claims from the source material.