{
  "schema_version": 1,
  "builder_plan": {
    "scenario": "You already need task-specific training and want to reduce its memory or compute cost.",
    "change": "Change only the training technique on a small controlled run after checking prerequisites.",
    "baseline": "Your current training recipe with the same model, data split, and evaluation.",
    "steps": [
      "Locate the paper's implementation and check its license, model support, data needs, and hardware requirements. Stop here if you cannot obtain the required artifacts.",
      "Save a small set of representative product tasks and expected outcomes. Keep evaluation tasks out of any training or tuning, and choose quality and cost limits before running.",
      "Run the baseline and the proposed change on identical inputs. Keep other settings fixed and repeat paired runs to expose variation.",
      "Save per-task outputs, failures, timings, and all usage costs. Review regressions before expanding the test."
    ],
    "measure": "Held-out quality, peak memory, training time, and full compute cost to the target quality.",
    "decision": "Keep the change only if it meets your preselected quality and latency limits and improves the metric you care about after setup and operating costs. Otherwise retain the baseline. This is an exploration plan, not a validated recommendation."
  },
  "builder_review": null,
  "arxiv_id": "2608.01184",
  "title": "SAFE-Merge: Data-Free Continual Model Merging with General Knowledge Preservation",
  "summary": "Adds explicit protection for pretrained knowledge to task-merging methods through a sparse risk-aware mask and low-rank recovery. It requires offline merging computation but adds no inference cost to the resulting model. It matters primarily for people merging specialized models, often in vision or CLIP, and needs validation on their own models because the gains are relative to merging baselines.",
  "rationale": "A lightweight technique without extra inference cost, but relevant mainly to the niche workflow of continual model merging.",
  "technique": "Data-free continual merging with risk masks",
  "family": "treino_eficiente",
  "recommendation": "testar",
  "published": "2026-08-02",
  "as_of": "2026-10-18",
  "editorial_status": "indexed",
  "source_url": "https://arxiv.org/abs/2608.01184",
  "independent_implementations": 0,
  "total_implementations": 0,
  "stars": 0,
  "citations": 0,
  "claims": [
    {
      "claim_id": "claim-01",
      "statement": "Adds explicit protection for pretrained knowledge to task-merging methods through a sparse risk-aware mask and low-rank recovery. It requires offline merging computation but adds no inference cost to the resulting model. It matters primarily for people merging specialized models, often in vision or CLIP, and needs validation on their own models because the gains are relative to merging baselines.",
      "basis": "inferred",
      "result": "",
      "baseline": "",
      "conditions": "",
      "source_url": "https://arxiv.org/abs/2608.01184",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "claim_id": "claim-02",
      "statement": "Reports consistently better H-scores on vision and language benchmarks; long CLIP task sequences improve substantially over NUFILT with the highest accuracy, without a numerical factor in the abstract.",
      "basis": "inferred",
      "result": "",
      "baseline": "",
      "conditions": "",
      "source_url": "https://arxiv.org/abs/2608.01184",
      "source_page": null,
      "source_excerpt": ""
    }
  ],
  "exposure_map": [
    {
      "dimension": "quality",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "compute",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "latency",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "operations",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "compatibility",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "security",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "data_and_training",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "reproducibility",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    }
  ],
  "risks": [],
  "minimum_test": [],
  "open_questions": [],
  "independent_tests": [],
  "lab_reproductions": [],
  "report_available": false,
  "validation_tier": "unknown",
  "evidence_tier": "unknown",
  "infrastructure_basis": "unknown",
  "equations": [
    {
      "anchor": "Sx4.E6",
      "label": "(6)",
      "section": "Method: SAFE-Merge",
      "role": "proposed_method",
      "latex": "R_{ij}^{(l)}=\\left(\\tau_{t}^{(l)}Q_{0}^{(l)}Q_{0}^{(l)\\top}\\right)_{ij}^{2}-\\left(\\tau_{t}^{(l)}Q_{\\mathrm{new}}^{(l)}Q_{\\mathrm{new}}^{(l)\\top}\\right)_{ij}^{2}.",
      "mathml": "<math display=\"block\"><mrow><mrow><msubsup><mi>R</mi><mrow><mi>i</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><mi>j</mi></mrow><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo>=</mo><mrow><msubsup><mrow><mo>(</mo><mrow><msubsup><mi>τ</mi><mi>t</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo lspace=\"0em\" rspace=\"0em\">​</mo><msubsup><mi>Q</mi><mn>0</mn><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo lspace=\"0em\" rspace=\"0em\">​</mo><msubsup><mi>Q</mi><mn>0</mn><mrow><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow><mo lspace=\"0.222em\">⊤</mo></mrow></msubsup></mrow><mo>)</mo></mrow><mrow><mi>i</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><mi>j</mi></mrow><mn>2</mn></msubsup><mo>−</mo><msubsup><mrow><mo>(</mo><mrow><msubsup><mi>τ</mi><mi>t</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo lspace=\"0em\" rspace=\"0em\">​</mo><msubsup><mi>Q</mi><mi>new</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo lspace=\"0em\" rspace=\"0em\">​</mo><msubsup><mi>Q</mi><mi>new</mi><mrow><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow><mo lspace=\"0.222em\">⊤</mo></mrow></msubsup></mrow><mo>)</mo></mrow><mrow><mi>i</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><mi>j</mi></mrow><mn>2</mn></msubsup></mrow></mrow><mo lspace=\"0em\">.</mo></mrow></math>",
      "context": "The projector <math display=\"inline\"><mrow><msubsup><mi>Q</mi><mn>0</mn><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo lspace=\"0em\" rspace=\"0em\">​</mo><msubsup><mi>Q</mi><mn>0</mn><mrow><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow><mo lspace=\"0.222em\">⊤</mo></mrow></msubsup></mrow></math> captures directions associated with general knowledge, while <math display=\"inline\"><mrow><msubsup><mi>Q</mi><mi>new</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo lspace=\"0em\" rspace=\"0em\">​</mo><msubsup><mi>Q</mi><mi>new</mi><mrow><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow><mo lspace=\"0.222em\">⊤</mo></mrow></msubsup></mrow></math> captures task-distinctive directions. The score in Eq. (4) penalizes only overwrite risk; here we additionally reward task utility, so that a parameter update that is risky yet vital for the incoming task is not masked out. The per-entry risk score thus contrasts preservation cost against task utility:",
      "headline": "",
      "explanation": "",
      "objective": "",
      "symbols": {},
      "evidence": "",
      "evidence_url": "",
      "source_url": ""
    },
    {
      "anchor": "Sx4.E12",
      "label": "(12)",
      "section": "Method: SAFE-Merge",
      "role": "loss",
      "latex": "\\mathcal{L}^{(l)}=\\lambda\\mathcal{L}_{\\mathrm{new}}^{(l)}+(1-\\lambda)\\mathcal{L}_{\\mathrm{old}}^{(l)}+\\mu\\left\\|M_{t}^{(l)}\\odot B_{t}^{(l)}A_{t}^{(l)}\\right\\|_{F}^{2},",
      "mathml": "<math display=\"block\"><mrow><mrow><msup><mi>ℒ</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msup><mo>=</mo><mrow><mrow><mi>λ</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><msubsup><mi>ℒ</mi><mi>new</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup></mrow><mo>+</mo><mrow><mrow><mo stretchy=\"false\">(</mo><mrow><mn>1</mn><mo>−</mo><mi>λ</mi></mrow><mo stretchy=\"false\">)</mo></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><msubsup><mi>ℒ</mi><mi>old</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup></mrow><mo>+</mo><mrow><mi>μ</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><msubsup><mrow><mo>‖</mo><mrow><mrow><msubsup><mi>M</mi><mi>t</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo lspace=\"0.222em\" rspace=\"0.222em\">⊙</mo><msubsup><mi>B</mi><mi>t</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><msubsup><mi>A</mi><mi>t</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup></mrow><mo>‖</mo></mrow><mi>F</mi><mn>2</mn></msubsup></mrow></mrow></mrow><mo>,</mo></mrow></math>",
      "context": "Intuitively, <math display=\"inline\"><msubsup><mi>ℒ</mi><mi>old</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup></math> pushes the update away from the subspaces of earlier tasks, while <math display=\"inline\"><msubsup><mi>ℒ</mi><mi>new</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup></math> pulls it toward the incoming task’s behavior on its own subspace. The full layer-wise objective combines these terms with a regularizer on the recovery magnitude:",
      "headline": "",
      "explanation": "",
      "objective": "",
      "symbols": {},
      "evidence": "",
      "evidence_url": "",
      "source_url": ""
    },
    {
      "anchor": "Sx4.E7",
      "label": "(7)",
      "section": "Method: SAFE-Merge",
      "role": "proposed_method",
      "latex": "M_{t}^{(l)}=\\mathbb{I}\\!\\left[R_{ij}^{(l)}\\leq\\operatorname{Quantile}_{\\rho}(R_{ij}^{(l)})\\right],",
      "mathml": "<math display=\"block\"><mrow><msubsup><mi>M</mi><mi>t</mi><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo>=</mo><mpadded width=\"0.219em\"><mi>𝕀</mi></mpadded><mrow><mo>[</mo><msubsup><mi>R</mi><mrow><mi>i</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><mi>j</mi></mrow><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo>≤</mo><msub><mi>Quantile</mi><mi>ρ</mi></msub><mrow><mo stretchy=\"false\">(</mo><msubsup><mi>R</mi><mrow><mi>i</mi><mo lspace=\"0em\" rspace=\"0em\">​</mo><mi>j</mi></mrow><mrow><mo stretchy=\"false\">(</mo><mi>l</mi><mo stretchy=\"false\">)</mo></mrow></msubsup><mo stretchy=\"false\">)</mo></mrow><mo>]</mo></mrow><mo>,</mo></mrow></math>",
      "context": "Given a keep ratio <math display=\"inline\"><mrow><mi>ρ</mi><mo>∈</mo><mrow><mo stretchy=\"false\">[</mo><mrow><mn>0</mn><mo>,</mo><mn>1</mn></mrow><mo stretchy=\"false\">]</mo></mrow></mrow></math>, the mask retains the lowest-risk parameter updates:",
      "headline": "",
      "explanation": "",
      "objective": "",
      "symbols": {},
      "evidence": "",
      "evidence_url": "",
      "source_url": ""
    }
  ],
  "equations_status": "selected",
  "core_kind": "formula",
  "equations_fetched_at": "2026-09-15",
  "equations_source_url": "",
  "equations_source_sha256": "",
  "exposures_reviewed_at": "",
  "exposures_source_sha256": ""
}