ComfyUI Node

Save Kolors

The Full Checkpoint Export for Uploading Your Kolors Merges

By lrzjason·Created 2 years ago·Updated about a year ago· 17
Save Kolors
  • model
  • vae
    filenamecheckpoints/ComfyUI

    If you've been merging Kolors models in ComfyUI, there are exactly two things you can do with the result: keep it locally, or upload it to a Chinese online generator like LiblibAI or Tusiart so people can run it without a local GPU. The first is easy. The second is why this node exists. "Save Kolors" writes your merged model out as a complete, standard-format .safetensors checkpoint - model weights plus VAE, in the naming convention those platforms actually accept.

    Kolors itself is the mid-2024 Kuaishou model that western reddit largely moved past once Flux landed (it's a UNet paired with ChatGLM3 for the text encoder, which is why it handles Chinese prompts so well). But on LiblibAI and Tusiart, Kolors is still a going concern, and their uploaders don't want a diffusers folder dump - they want one self-contained checkpoint file. This node is the export step in that pipeline.

    How it works

    It's the same save logic as ComfyUI's built-in Save Checkpoint node, minus the text encoder. The node calls state_dict_for_saving(None, vae.get_sd(), None) on your model - that's ComfyUI's way of saying "give me the weights for the UNet and this VAE, fused into one state dict" - then writes it out as a safetensors with metadata: {'format': 'pt'}.

    Note the None where the CLIP state dict would go. This is a UNet-plus-VAE file, not a self-contained model with a baked-in text encoder. The README's phrase for it is "sd format Kolors": the standard checkpoint layout that the updated ComfyUI-Kolors-MZ loader knows how to handle, and that LiblibAI/Tusiart can serve. You aren't exporting a text encoder, because for Kolors that's ChatGLM3 and those platforms provide it themselves.

    The inputs that matter

    Three required inputs, two of which you'll actually touch:

    • model (MODEL) - the merged Kolors UNet. Same source as the pack's other node: load Kolors via ComfyUI-Kolors-MZ, merge, and pipe the result in here.
    • vae (VAE) - gets baked into the file. This matters more than it looks: feed the VAE you actually want in the output, because once it's written you're carrying it around. For Kolors the SDXL-compatible VAE is the usual choice.
    • filename (STRING) - defaults to checkpoints/ComfyUI, and like its sibling node it writes into ComfyUI's output directory. So the default lands at ComfyUI/output/checkpoints/ComfyUI.safetensors. Pick something descriptive so you can find it later, because you'll be dragging it into a browser upload form.

    No outputs - it's an output node, run it and grab the file.

    Installing it

    Same story as the whole pack - no dependencies, no model downloads:

    cd ComfyUI/custom_nodes
    git clone https://github.com/lrzjason/Comfyui-Kolors-Utils.git
    

    Restart ComfyUI and search for "Save Kolors". The pack ships only the two node classes plus a Kolors key map, so this is a thirty-second install.

    Where people get burned

    The naming is the trap. Because it's called "Save Kolors" you might expect it to produce a fully self-contained Kolors model. It doesn't - there's no text encoder in the file, by design. Local use always needs ComfyUI-Kolors-MZ (or another Kolors loader) to supply ChatGLM3. Uploading to LiblibAI/Tusiart works because those platforms already have the encoder side set up; if you're not uploading, this node's only real advantage over the built-in Save Checkpoint is that the MZ loader was updated to recognize its output.

    The other gotcha is scope. This node saves whatever MODEL you give it, full stop - merge an SDXL model and export, and you'll get an SDXL checkpoint with a Kolors-ish name. It's a file writer, not a validator. Keep it pointed at actual Kolors merges and it'll serve you fine.

    CategoryKolorsUtils/model_merging

    Inputs (3)

    NameTypeDefaultDescription
    modelMODEL
    filenameSTRINGcheckpoints/ComfyUI
    vaeVAE

    Outputs (0)

    No outputs