Nodes Browser

ComfyDeploy: How Auto-MBW works in ComfyUI?

What is Auto-MBW?

Auto-MBW for ComfyUI loosely based on sdweb-auto-MBW. Nodes: auto merge block weighted

How to install it in ComfyDeploy?

Head over to the machine page

  1. Click on the "Create a new machine" button
  2. Select the Edit build steps
  3. Add a new step -> Custom Node
  4. Search for Auto-MBW and select it
  5. Close the build step dialig and then click on the "Save" button to rebuild the machine

Auto-MBW for ComfyUI loosely based on sdweb-auto-MBW

Purpose

This node "advanced > auto merge block weighted" takes two models, merges individual blocks together at various ratios, and automatically rates each merge, keeping the ratio with the highest score. Whether this is a good idea or not is anyone's guess. In practice this makes models that make images the classifier says are good. You would probably disagree with the classifiers' decisions often.

Settings

  • Prompt: to generate sample images to be rated
  • Sample Count: number of samples per ratio per block to generate
  • Search Depth: number of branches to take while choosing ratios to test
  • Classifier: model used to rate images

Search Depth

To calculate ratios to test, the node branches out from powers of 0.5

  • A depth of 2 will examine 0.0, 0.5, 1.0
  • A depth of 4 will examine 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0
  • A depth of 6 will examine 33 different ratios

There are 25 blocks to examine. If you use a depth of 4 and create 2 samples each, 25 * 9 * 2 = 450 images will be generated.

Classifier

The classifier models have been taken from the sdweb-auto-MBW repo.

Notes

  • many hardcoded settings are arbitrary such as the seed, sampler and block processing order
  • generated images are not saved
  • the resulting model will contain the text encoder and VAE sent to the node

Bugs

  • merging process doesn't use the comfy ModelPatcher method and takes hundreds of milliseconds
    • as a result, --highvram flag recommended. both models will be kept in VRAM and the process is much faster
  • the unet will (probably) be fp16 and the rest fp32. that's how they're sent to the node
    • see: model_management.should_use_fp16()