Sign In

Crody's Model Merge Guide v2.0 // Team-C

47

Crody's Model Merge Guide v2.0 // Team-C

Crody's Model Merge Guide v2.0

Hi this is Crody from Team-C: creator of Nova Series and co-programmer of Chattiori Model Merger (CMM) and Universal Model Merge Scripter (MMS)

In this article, I'll write down how to merge checkpoints and create your own model from What ?to Professional

I'll use Illustrious / NoobAI as the mainstream of the merge principle but you can use these methods on other systems as well (SD1.5, SDXL base models, Flux)


0. What ?

0-1. What is Model Merge ?

Model Merge (Especially Checkpoint Merge) is one of the way to create checkpoint (not LoRA) by blending and extending

For merging, you don't have to get great GPU, you don't have to gather notorious images to get the desired look

Instead, what you need is several checkpoints and any kind of CPU

0-2. Pre-requirement

0-3. Aria2 Installation

Windows

🧩 Step 1: Download aria2

  1. Go to the official aria2 releases page on GitHub:
    👉 https://github.com/aria2/aria2/releases

  2. Scroll down to find the latest release.

  3. Download the Windows prebuilt binary — a file named something like:
    aria2-x.x.x-win-64bit-build1.zip


🗂 Step 2: Extract the archive

  1. Once downloaded, right-click the ZIP file and choose “Extract All…”.

  2. Extract it to a folder such as:

    C:\Program Files\aria2
    

    or anywhere else you prefer.


⚙️ Step 3: Add aria2 to PATH

  1. Open the Start Menu, search for “Environment Variables”, and select
    “Edit the system environment variables.”

  2. In the System Properties window, click “Environment Variables…”.

  3. Under “System variables,” find and select Path, then click Edit.

  4. Click New, and add the path to the folder where you extracted aria2, e.g.:

    C:\Program Files\aria2
    
  5. Click OK on all dialogs to save and close.


🧪 Step 4: Test the installation

  1. Open Command Prompt (cmd) or PowerShell.

  2. Type:

    aria2c --version
    
  3. If aria2 is installed correctly, you’ll see version information like:

    aria2 version 1.37.0

macOS

🍎 Step 1: Install Homebrew (if not already installed)

Homebrew is the easiest way to install aria2 on macOS.
To check if you already have it, open Terminal and type:

brew -v

If it prints a version, you can skip to Step 2.
Otherwise, install Homebrew with:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

When the installation finishes, follow any instructions shown (for example, to add Homebrew to your PATH).


⚙️ Step 2: Install aria2

Once Homebrew is ready, simply run:

brew install aria2

This will automatically download and install the latest version of aria2.


🧪 Step 3: Verify the installation

After installation completes, check that aria2 works:

aria2c --version

If everything is set up correctly, you should see something like:

aria2 version 1.37.0

Linux

Ubuntu / Debian / Linux Mint

These distributions use APT.

Step 1: Update package lists

sudo apt update

Step 2: Install aria2

sudo apt install aria2

Step 3: Verify

aria2c --version

Fedora / RHEL / CentOS Stream

These use DNF.

Step 1: Install aria2

sudo dnf install aria2

Step 2: Verify

aria2c --version

Arch Linux / Manjaro

These use pacman.

Step 1: Install aria2

sudo pacman -S aria2

Step 2: Verify

aria2c --version

openSUSE

Step 1: Install aria2

sudo zypper install aria2

Step 2: Verify

aria2c --version

0-4. How to use / execute the merge

Most of the steps are written in Kaggle Guide
Check it out HERE

For the documentation of MMS Planned Text, I'll write them on the latter steps

Additionally, you need to input this path:

  • Workspace Path: Path to place every instances you'll need for the merge (empty folder)

After putting the desired informations, click on Save As .ipynb and create the file

To execute the merge:

  1. Open the .ipynb file via VSCode (If you saw the pop ups regarding installation, please install them)

  2. Select newest Python as the Kernel

  3. Execute first block (Dependencies, comment out the aria2 parts)

  4. Execute the block that has the Title you named

  5. (Optional) Upload the checkpoint to huggingface using next block

  6. (If you have GPU) Test the model using next 2 blocks

For t2i testing, you can see the setups on the Kaggle Guide


1. Beginner

In this part, I'll write down basic merge principles
This includes model installations, deleting and some basic merge methods you need to know for MMS planning

1-1. Install Model

+ModelName, model_link

# If the model is LoRA
+LoRAName, lora_link, %LR

Specify the name of the model on ModelName (LoRAName)
eg.)
MA (short of modelA)

The link to the model page on model_link (lora_link) the link can be either direct model download link or model page link
eg.)
both
https://civitai.com/models/376130?modelVersionId=2392184
and
https://civitai.com/api/download/models/2392184?type=Model&format=SafeTensor&size=pruned&fp=fp16
Can be used as model_link

1-2. Delete Model

-ModelName

Put - before the ModelName (LoRAName) will delete the model
This allows to save the space for the storage

1-3. Weighted Sum

CM A + B alpha Result

Blend A and B with the alpha as the ratio of blending and save it as Result
Higher the alpha is, stronger the B gets

You can use float between 0 - 1 for the alpha
In addition, you can use Block Weight Ratio (2-1) for the alpha as well

For the Result name (which applies to the latter methods as well), using _ before the name automatically appends TEMP to the name

eg.)

CM MA + MB 0.3 Result

1-4. Add Difference

CM A + B - C alpha Result

Add the difference between B and C with the strength of alpha ratio then save it as Result

You can use float between 0 - 1 for the alpha
In addition, you can use Block Weight Ratio (2-1) for the alpha as well

eg.)

CM MA + MB - MC 0.6 Result

1-5. Sum Twice / Triple Sum

CM A + B +S C alpha beta Result # Sum Twice

CM A + B +T C alpha beta Result # Triple Sum

Both methods blends 3 models into one and save it into Result

Difference between 2 methods is the calculation of the ratio

On Sum Twice, merge A and B using alpha as ratio, and then merge the resulted model and C using beta as ratio
This means Sum Twice is the exact same thing as doing Weighted Sum 2 times

On the other hand, Triple Sum is A:B:C = 1-(alpha + beta):alpha:beta, so it's straight up doing the blend of 3

You can use float between 0 - 1 for both alpha and beta
In addition, you can use Block Weight Ratio (2-1) for them as well

eg.)

CM MA + MB +S MC 0.3 0.2 Result

2. Intermediate

In this part, I'll explain some useful methods that enhances your creations

2-1. Block Weight Ratio

"BASE,IN00,IN01,IN02...,IN08,M00,OUT00,OUT01...,OUT08"

Block Weight Ratio is the type of ratio of the merge which allows you to separate the effect to the very part you want

Explanations for each blocks are written on 3-1 so for now, just take this as advanced ratio usage

eg.)

CM MA + MB "0,0,0.3,0.2,0.2,0.3,0.3,0.4,0.3,0.3,0,0.4,0.3,0.3,0.5,0.4,0.4,0.6,0.2,0.2" Result

2-2. LoRA Bake

LB Checkpoint LoRA1:alpha,LoRA2:beta,... Result

Bake LoRA / several LoRAs into checkpoint and save it as Result

You can only use floats as the ratios (alpha, beta, ...)
The strength of them are same thing as using them on t2i so I don't recommend using too much strength on them

eg.)

LB MA LA:0.3,LB:0.2,LC:0.5 Result

2-3. DARE Merge

CM A +D B alpha beta(droprate) Result

DARE (Drop And REscale) Merge allows you to merge models with same structure, different base models

For example, both Illustrious models and Pony models are SDXL structure but they are different base models

This method also allows you to merge VPred and EPS models as well
This is how I apply Illustrious v2.0-stable into NoobAI EPS v1.1

You can use float between 0 - 0.5 for both alpha and beta
In addition, you can use Block Weight Ratio (2-1) for the alpha but not for the beta
I highly recommend using floats below 0.5 for all of these values
And for the beta, I'd recommend using 0.1 if you want to just extend the feature, 0.3 if you want to get the look as well

In addition, using @s seed_num after the Result allows you to set the seed for the droprate into the desired seed_num

eg.)

CM MA +D MB "0.5,0,0.3,0.2,0.2,0.3,0.3,0.4,0.3,0.3,0.3,0.4,0.3,0.3,0.2,0.2,0.3,0.3,0.2,0.2" 0.2 Result @s 1234567

2-4. Swap component

CM A #S B alpha(components) Result

This allows you to swap desired components in the A into B and save it as Result

Components you can use:

  • unet : part where most of model's look is included

  • clip : CLIP, which is the part where encodes the prompt

  • clip-l: One of SDXL and Flux's CLIP which is the part where encodes the tokenized prompt (danbooru tags or any other kind of tags are integrated here)

  • clip-g: One of SDXL and Flux's CLIP which is the part where encodes the general words (normal sentences rather than tags)

eg.)

CM MA #S MB "clip-l" Result

2-5. CLIP XOR

CM A #X B Result

CLIP XOR allows to extend the CLIP by XOR calculation (A + B - A&B)

I use this to extend the knowledge which A isn't trained on using B

eg.)

CM MA #X MB Result

2-6. XDARE

CM A +D B alpha beta(droprate) Result @mode XDARE

Combination of DARE and CLIPXOR, this allows to extend the knowledge between different base models as well

The rest of usages are same as DARE

eg.)

CM MA +D MB "0.3,0,0.2,0.3,0.3,0.2,0.2,0.3,0.2,0.2,0.3,0.2,0.2,0.3,0.3,0.2,0.2,0.3,0.2,0.2" 0.2 Result @mode XDARE @s 1234567


3. Professional

In this part, I'll explain the rest complex part of the merging
Knowing these will give you the perfect control over model merging

3-1. Block Weight Placing

This part documents all of the block weights from my researches for SDXL

I don't know about Flux's block so I cannot give any of great informations about it

Below is SDXL's blocks

Overall analysis:
BASE : text encoder
IN00 - IN05 : handles anatomy and details
IN06 - IN08 : handles tone and poses
MID00 : over all similarity
OUT00 - OUT03 : handles shape of face and body
OUT04 - OUT08 : handles textures

  • BASE: CLIP, text encoder part which should be either 0 or 1 for methods except DARE and XDARE: those 2 methods needs it to be between 0.1 to 0.5

  • IN00: UNet's input part which also has the informations of fingers, contrast and outlines. For most of cases, this needs to be either 0 or 1 in order to avoid finger errors (cases like Nova Furry for example needs to have finger uniqueness so I set some of IN00 values for the merge into 0.3)

  • IN01: Mainly for background and depth of view

  • IN02 and IN03: Anatomy details, hair and clothing

  • IN04 and IN05: Textures, anatomy and NSFW parts

  • IN06: Clothing and posing

  • IN07: Pose structures

  • IN08: Anatomy base

  • M00: Handles overall likeness of the style. This has the exact same principle as BASE has: 0 or 1 for most methods

  • OUT00: Torso, age and accesories

  • OUT01: Upper body and shading

  • OUT02: Body curves and shading

  • OUT03: Eyes and skin colors

  • OUT04: Face shape and overall textures

  • OUT05: Nose, ears and overall textures

  • OUT06: Mouth and smooth lights

  • OUT07: Overall colors and rough draw lines

  • OUT08: UNet's output part which also has the informations of colors and drawing lines

3-2. Fine Tuning

@fine "Detail1,Detail2,Detail3,Contrast,Brightness,Red,Green,Blue"

Fine tuning allows you to change the look of the checkpoint according desired values

Document: https://github.com/hako-mikan/sd-webui-supermerger?tab=readme-ov-file#adjust

Note: Don't use this feature too much
While this allows to adjust the look, this also makes some noises if you put the strength too much

eg.)

CM MA + MB 0.3 Result @fine "0,0.1,0.2,0.2,0.3,5,-2,0"

3-3. LoRA Block Weight Merge

This part isn't actual merge method: it's more like technique to get better at LoRA handling

Combining LoRA Bake and Block Weight Merge, this allows you to adjust the LoRA influences for the parts

eg.)

LB MA LA:0.3 RA
-LA

LB MA LB:0.4 RB
-LB

CM MA + RA +S RB "0,0,1,0.3,0.3,0.2,0.2,0.2,0,0,0,0.2,0.1,0.1,0,0,0,0,0.2,0.2" "0,0,0,0.2,0.2,0.3,0.3,0.5,0.4,0.4,0,0.3,0.3,0.2,0.3,0.3,0.4,0.4,0,0" Result


4. Example

The following example is what I used for Nova Orange XL - IL v13.0

Some elements are different in order to protect exact recipe but 90% of the merge is exact same to the actual one

Credits:

+N12, https://civitai.com/models/967405?modelVersionId=2235952
+NR3, https://civitai.com/models/967405?modelVersionId=2350462
+NF, https://civitai.com/models/503815?modelVersionId=2395247

CM N12 + NR3 +S NF "0,0,0.3,0.35,0.4,0.3,0.3,0.3,0.3,0.3,0,0.3,0.2,0.2,0.1,0.2,0.2,0.3,0.3,0.3" "0,0,0.3,0.4,0.4,0.3,0.3,0.4,0.3,0.3,0,0.3,0.2,0.2,0.2,0.3,0.3,0.2,0.2,0.2" _A
-N12

CM _A #S NR "clip-l,clip-g" _B
-_A
-NR

CM _B +D NF "0.3,0,0.2,0.3,0.3,0.2,0.2,0.3,0.2,0.2,0.2,0.2,0.2,0.2,0.3,0.3,0.2,0.2,0.3,0.3" 0.2 _C @mode XDARE @s 9815782
-_B
-NF

+N5, https://civitai.com/models/967405?modelVersionId=1296896

CM _C + N5 "0,0,0,0,0,0,0.2,0.2,0.2,0.1,0,0.6,0.4,0.4,0.4,0.2,0.2,0.3,0,0" _D
-_B
-N5

+I2, https://civitai.com/models/1489531?modelVersionId=1684946

CM _D +D I2 "0.5,0,0.3,0.3,0.4,0.45,0.45,0.5,0.5,0.4,0.5,0.4,0.3,0.3,0.3,0.45,0.45,0.45,0.45,0.45" 0.2 _E @mode XDARE @s 7496716
-I2

+BB, https://civitai.com/models/839053, %LR

LB _E BB:0.6 _F
-BB
-_E

CM _F + _D "0,0,0.2,0.3,0.3,0.2,0.2,0.3,0.2,0.2,0,0.6,0.5,0.5,0.6,0.4,0.4,0.3,0.3,0.3" _G
-_F
-_D

+LN, https://civitai.com/models/1715577?modelVersionId=2420498

CM _G +D LN "0.3,0,0.2,0.35,0.4,0.3,0.3,0.3,0.3,0.3,0.2,0.3,0.2,0.2,0.1,0.2,0.2,0.3,0.3,0.3" 0.2 _H @mode XDARE @s 85618763
-LN
-_G

+DC, https://civitai.com/models/2037836?modelVersionId=2421107

CM _H + DC "0,0,0.3,0.3,0.3,0.2,0.2,0,0,0,0,0,0,0,0,0,0,0,0.3,0.3" NovaOrangeV13

5. Conclusion

Now you mastered all of the information you need to know to make your own model using merges

I hope this will help you achieve your masterpiece!

47