Local tensor-level checkpoint merging

How to merge AI diffusion models locally

Saient contains a local worker for weighted-sum and add-difference merges of compatible diffusion checkpoints. It writes a new safetensors file without uploading model weights.

Short answer: model merging blends tensors with matching names and shapes. Saient's backend can do that locally for safetensors and PyTorch checkpoint inputs. However, the current v1.0.4 GUI picker is wired to GGUF language models, which the diffusion checkpoint worker cannot merge.
Real interface

The current merge screen

Saient Merge screen with model A, B and C selectors, weighted-sum method, weight slider and output path

Saient Merge, v1.0.4

The screen exists and exposes both methods, but the empty selectors shown here are part of the wiring defect described below.

Current release status

Do not feed GGUF files to this worker

Confirmed defect: v1.0.4's Merge screen reuses the chat model scanner and Hugging Face browser, so it lists/downloads .gguf language models. The backend merge worker expects diffusion checkpoint tensors in .safetensors, .ckpt or .pt form. The packaged GUI route is therefore not usable as advertised until its picker is corrected.

This page is published because a useful local model-merging guide must distinguish an implemented worker from a working end-user path. The website will not turn the presence of a screen into a false feature claim.

Methods

What the merge worker implements

MethodFormulaUse
Weighted sumA × (1-w) + B × wInterpolates matching tensors between two structurally compatible checkpoints.
Add differenceA + (B-C) × wApplies a weighted difference between B and C onto A; model C is required.

When a shared tensor has a different shape, the worker keeps A's tensor. Keys found only in A or only in B are copied into the output. That behavior prevents a shape exception, but it does not prove the resulting hybrid model is semantically sound.

Compatibility

Choose checkpoints that belong together

  • Use the same architecture and closely related tensor layout—such as two checkpoints derived from the same SDXL base.
  • Compare tensor-key and shape compatibility before treating a completed file as a valid model.
  • Never merge a LoRA adapter as if it were a full checkpoint, and never merge GGUF language models with this diffusion worker.
  • Keep the source files. A merge output is a new experiment, not a replacement for A, B or C.
  • Review every source model's licence; blending weights does not remove upstream restrictions.
Hardware

RAM and storage requirements

  • GPU: not required by this tensor merge; it runs on CPU.
  • Safetensors inputs: opened lazily, so input tensors are fetched as needed. The result still accumulates before save, making peak RAM roughly output-model scale plus working tensors.
  • CKPT/PT inputs: loaded fully into RAM before merge, so they need more memory.
  • Disk: keep A, B, optional C and the new output simultaneously. Use a filesystem with enough free space for a failed/retried save as well.
Proof boundary

Implemented worker, unproven packaged route

The repository contains the two formulas, lazy safetensors access, key/shape handling, progress events, cancellation handling and safetensors output. The UI screenshot proves the screen exists. No completed merge artefact is retained in the current workspace, and the v1.0.4 picker defect blocks an honest end-to-end GUI demonstration.

Evidence status: backend implementation demonstrated; packaged GUI usability falsified for v1.0.4; end-to-end merged-output proof currently unknown.

Free software still needs honest release notes.

Saient v1.0.4 is free, but this specific screen has a confirmed picker defect. Use the download for its verified local features; do not install it solely for GUI checkpoint merging yet.