ComfyUI Node

Kolors Sampler

The payoff node for a model the internet forgot

By kijai·Created 2 years ago·Updated 2 years ago· 592
Kolors Sampler
  • kolors_model
  • kolors_embeds
  • latent
  • latent
width1024
height1024
seed0
steps25
cfg5.00
schedulerEulerDiscreteScheduler
denoise_strength1.00

Kolors Sampler is the last node you touch in Kijai's Kolors wrapper, and the only one that actually draws anything. It takes the loaded Kolors UNet and the text embeddings from Kolors Text Encode, runs the denoising loop, and hands you back a LATENT - one you can feed straight into a normal SDXL VAE Decode. No special VAE node needed, and that's the whole point.

Worth the trip? Kolors is Kuaishou's text-to-image model from mid-2024 - a UNet architecture with a big ChatGLM3 LLM doing prompt duty instead of CLIP or T5, which gave it unusually strong Chinese-language handling and genuinely solid general quality. It reviewed well and then vanished, because it launched in the same window Flux did. Nobody's claiming it beats Flux in 2026. But it's free, it runs at roughly SDXL cost, and its Chinese prompt comprehension is still a thing most Western models do worse. If that sounds like a fun side model, this node is where the fun happens.

How it works

Under the hood it's a diffusers pipeline - the pack vendors its own StableDiffusionXLPipeline and calls it with the pre-built embeddings. A few mechanics worth knowing:

  • Every run it rebuilds the scheduler from a fixed config (SDXL-style scaled_linear betas, 1100 timesteps), so whichever scheduler you pick actually applies.
  • It scales latents by the SDXL VAE factor (0.13025) on the way in and divides back out before returning. That's why the output drops cleanly into a stock SDXL VAE Decode.
  • No VAE is loaded at all here. The model download deliberately skips vae/, and the README says to just use the base SDXL VAE.

The inputs that matter

  • kolors_model and kolors_embeds - the only wires, from (Down)load Kolors Model and Kolors Text Encode respectively. Everything else is tuning.
  • width / height - 64 to 2048 in steps of 64, default 1024. Kolors is 1024-native; keep the step of 64.
  • steps (default 25) and cfg (default 5). The cfg range goes to 20 but 4–7 is the sensible band.
  • scheduler - six choices, EulerDiscrete by default. If you want a bit more pop, DPMSolverMultistepScheduler_SDE_karras is the usual second pick.
  • latent + denoise_strength (optional) - wire a LATENT in and drop denoise below 1 and you're doing img2img or partial re-sampling. That's the whole workflow the pack's img2img example is built on.

The output is one LATENT named latent. It goes to a VAE Decode (any SDXL-compatible VAE) and then to the Save Image.

Installing it

The node ships with the whole pack, so it's one install for all five:

cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-KwaiKolorsWrapper
cd ComfyUI-KwaiKolorsWrapper
pip install -r requirements.txt

Restart ComfyUI and it's in the KwaiKolorsWrapper category. ComfyUI Manager also finds it if you search "KwaiKolorsWrapper" - it'll read requirements.txt and offer the deps itself. First run downloads the models automatically (about 16.5 GB), so give the first (Down)load Kolors Model a minute.

Where people get burned

  • The text encoder is the VRAM hog - 13 GB in fp16. Sampling itself is SDXL-class. If you're OOMing, fix the encoder first (quant4/quant8 on the ChatGLM3 loader), not this node.
  • It's a diffusers wrapper, not a native ComfyUI sampler. Don't expect to feed it ComfyUI-native scheduler tweaks or ControlNet from another pack without a fight. Kijai himself calls the wrapper "rudimentary."
  • There are known python-package compatibility clashes (diffusers/transformers versions fighting other packs). If this pack won't import cleanly, the community fallback is the MinusZoneAI/Kolors-MZ wrapper, which implements a native sampler instead.
  • If your output looks soft or washed, check you're actually using an SDXL VAE - the wrapper doesn't bring one.
CategoryKwaiKolorsWrapper

Inputs (10)

NameTypeDefaultDescription
kolors_modelKOLORSMODEL
kolors_embedsKOLORS_EMBEDS
widthINT102464–2048
heightINT102464–2048
seedINT00–18446744073709550000
stepsINT251–200
cfgFLOAT5.000–20
schedulerCOMBOEulerDiscreteScheduler6 options: EulerDiscreteScheduler, EulerAncestralDiscreteScheduler, DPMSolverMultistepScheduler, DPMSolverMultistepScheduler_SDE_karras, UniPCMultistepScheduler, DEISMultistepScheduler
latentoptLATENT
denoise_strengthoptFLOAT1.000–1

Outputs (1)

NameTypeDescription
latentLATENT