Nodes/CMK Flow/CMK Sampler Prepare Z-Image Turbo -Pipe-
ComfyUI Node

CMK Sampler Prepare Z-Image Turbo -Pipe-

Z-Image Turbo in 8 steps, with the plumbing ComfyUI Core makes you do by hand

By CMKFlow·Created 3 months ago·Updated 2 days ago· 6
CMK Sampler Prepare Z-Image Turbo -Pipe-
  • MODEL
  • PROCESS
  • LOG
  • IMAGE
  • SAMPLER
  • LOG
  • diagnostic
◄seed1565304366►
◄steps8►
◄samplerres_multistep►
◄schedulersimple►
◄cfg1.0►
◄model_shift3.00►
◄inpaint_model_patchZ-Image-Turbo-Fun-Controlnet-Union-2.1.safetensors►

Z-Image Turbo is the model that made near-Flux quality fit on a 12GB card, and it is genuinely a pleasure to sample: 8 steps, CFG 1, done. What's not pleasant is the setup around it. Four separate model files, an AuraFlow sampling patch, an empty SD3 latent, a zeroed-out negative, and - if you want the union ControlNet - a model patch loader wired into the diffusion model. CMK Sampler Prepare Z-Image Turbo -Pipe- is that setup, as one node, with the SAMPLER pipe as its output.

What it builds

Give it a MODEL pipe from the CMK Z-Image Turbo Loader and a PROCESS whose family is Z-Image Turbo, and it:

  • loads any LoRA stack carried by the process onto model and text encoder;
  • encodes the positive prompt with CLIPTextEncode - natural language, not tags, this is a Qwen3-4B text encoder;
  • derives the negative by running the positive through ConditioningZeroOut. That's not laziness, that's the model: Turbo is guidance-distilled, CFG 1 means the negative prompt is inert anyway, and pretending otherwise wastes an encode;
  • patches the model with ModelSamplingAuraFlow at model_shift (default 3);
  • for text-to-image, creates an EmptySD3LatentImage at the process dimensions;
  • releases the text encoder afterwards when the process asks for it, which on a 12GB card is the difference between comfortable and swapping.

For the experimental inpaint path it also takes the optional IMAGE input - lazily, only when an inpaint or hybrid process is active, which is why the socket is optional rather than required. That path uses InpaintModelConditioning plus the union ControlNet patch, selected through inpaint_model_patch (a single-entry enum pointing at Z-Image-Turbo-Fun-Controlnet-Union-2.1.safetensors), and if zit_controlnet_image is present it wires QwenImageDiffsynthControlnet with the process's control strength. The pack labels ZIT inpaint EXPERIMENTAL and freezes it there; it is memory-hungry and slow, and they say so rather than pretending.

Inputs you'll touch: seed, steps (8), sampler (res_multistep), scheduler (simple), cfg (1.0), model_shift (3.0). Everything else is wired or advanced. Outputs: SAMPLER, LOG, diagnostic.

The shift argument

The most repeated Z-Image Turbo tweak in the community is bumping ModelSamplingAuraFlow's shift to 7 instead of the default 3. CMK ships 3, which is the model's own default and the safe value. If your Turbo portraits come out looking like a skincare advert - the single most common complaint about this model - that's the knob to try, and one of the sampler-sweep comparisons from mid-2026 is worth reading before you spend an evening on it. model_shift is right there in the advanced inputs, no code changes needed.

Installing

Manager: search CMK Flow, install the CMKFlow entry, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/CMKFlow/cmk_nodes.git cmk_nodes
python3 cmk_nodes/scripts/install_cmk_requirements.py
python3 cmk_nodes/scripts/check_cmk_resources.py --models-root "/path/to/shared/models"

CMK ships its own loaders for the ZIT trio - diffusion model, Lumina2 text encoder, VAE - on ComfyUI Core only, no extra packs. The weights are not in the pip package: several Z-Image and ControlNet files are multiple gigabytes, and the resource script confirms each one individually before downloading anything.

Where it bites

If the process family doesn't match, this node says so plainly - it requires MODEL FAMILY = Z-Image Turbo in 01 START HERE and a model pipe from the ZIT loader, and it will reject a Z-Image Turbo LoRA on a Base model or vice versa. Note that the Z-Image KB says more than one LoRA at a time tends to collapse quality, so the process's LoRA stack is best left at a single entry. And as with everything CMK, Vue Nodes / Nodes 2.0 needs to be on, or the dynamic inputs won't render the way the shipped workflows expect.

CategoryCMK/Flow/Sampling

Inputs (11)

NameTypeDefaultDescription
MODELCMK_MODEL_PIPE—
PROCESSCMK_PROCESS_Z_IMAGE—
seedINT15653043660–18446744073709550000—
stepsINT81–100—
samplerCOMBOres_multistep44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOsimple9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
cfgFLOAT1.00–30—
model_shiftFLOAT3.000–100—
inpaint_model_patchCOMBOZ-Image-Turbo-Fun-Controlnet-Union-2.1.safetensors1 options: Z-Image-Turbo-Fun-Controlnet-Union-2.1.safetensors
LOGoptCMK_LOG_PIPE—
IMAGEoptIMAGE—

Outputs (3)

NameTypeDescription
SAMPLERCMK_SAMPLER_PIPE—
LOGCMK_LOG_PIPE—
diagnosticCMK_DIAGNOSTIC—