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
Computer (Minimum: Windows 10/11, macOS 12+ (Intel or Apple Silicon), Linux (Ubuntu recommended))
Python (Latest, Installation: https://www.python.org/downloads/)
Git (Installation: https://git-scm.com/install/)
Aria2 >> Installation: 0-3
Huggingface account / API >> Kaggle Guide
CivitAI account / API >> Kaggle Guide
VSCode (Latest, Installation: https://code.visualstudio.com/)
0-3. Aria2 Installation
Windows
🧩 Step 1: Download aria2
Go to the official aria2 releases page on GitHub:
👉 https://github.com/aria2/aria2/releasesScroll down to find the latest release.
Download the Windows prebuilt binary — a file named something like:
aria2-x.x.x-win-64bit-build1.zip
🗂 Step 2: Extract the archive
Once downloaded, right-click the ZIP file and choose “Extract All…”.
Extract it to a folder such as:
C:\Program Files\aria2or anywhere else you prefer.
⚙️ Step 3: Add aria2 to PATH
Open the Start Menu, search for “Environment Variables”, and select
“Edit the system environment variables.”In the System Properties window, click “Environment Variables…”.
Under “System variables,” find and select Path, then click Edit.
Click New, and add the path to the folder where you extracted aria2, e.g.:
C:\Program Files\aria2Click OK on all dialogs to save and close.
🧪 Step 4: Test the installation
Open Command Prompt (cmd) or PowerShell.
Type:
aria2c --versionIf 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.0Linux
✅ 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 --version0-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:
Open the
.ipynbfile via VSCode (If you saw the pop ups regarding installation, please install them)Select newest Python as the Kernel
Execute first block (Dependencies, comment out the aria2 parts)
Execute the block that has the Title you named
(Optional) Upload the checkpoint to huggingface using next block
(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, %LRSpecify 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.)
bothhttps://civitai.com/models/376130?modelVersionId=2392184
andhttps://civitai.com/api/download/models/2392184?type=Model&format=SafeTensor&size=pruned&fp=fp16
Can be used as model_link
1-2. Delete Model
-ModelNamePut - 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 ResultBlend 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 Result1-4. Add Difference
CM A + B - C alpha ResultAdd 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 Result1-5. Sum Twice / Triple Sum
CM A + B +S C alpha beta Result # Sum Twice
CM A + B +T C alpha beta Result # Triple SumBoth 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 Result2. 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" Result2-2. LoRA Bake
LB Checkpoint LoRA1:alpha,LoRA2:beta,... ResultBake 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 Result2-3. DARE Merge
CM A +D B alpha beta(droprate) ResultDARE (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 12345672-4. Swap component
CM A #S B alpha(components) ResultThis 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" Result2-5. CLIP XOR
CM A #X B ResultCLIP 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 Result2-6. XDARE
CM A +D B alpha beta(droprate) Result @mode XDARECombination 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 12345673. 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" Result4. 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" NovaOrangeV135. 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!

