Kolors Sampler
The payoff node for a model the internet forgot
- kolors_model
- kolors_embeds
- latent
- latent
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_linearbetas, 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 ModelandKolors Text Encoderespectively. 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_karrasis the usual second pick. - latent + denoise_strength (optional) - wire a
LATENTin 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.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| kolors_model | KOLORSMODEL | — | |
| kolors_embeds | KOLORS_EMBEDS | — | |
| width | INT | 102464–2048 | — |
| height | INT | 102464–2048 | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 251–200 | — |
| cfg | FLOAT | 5.000–20 | — |
| scheduler | COMBO | EulerDiscreteScheduler | 6 options: EulerDiscreteScheduler, EulerAncestralDiscreteScheduler, DPMSolverMultistepScheduler, DPMSolverMultistepScheduler_SDE_karras, UniPCMultistepScheduler, DEISMultistepScheduler |
| latentopt | LATENT | — | |
| denoise_strengthopt | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |