{ "id": "00000000-0000-0000-0000-000004ea24e7", "revision": 0, "last_node_id": 11, "last_link_id": 10, "nodes": [ { "id": 1, "type": "UNETLoader", "pos": [40, 60], "size": [370, 82], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [ { "name": "MODEL", "type": "MODEL", "links": [1], "slot_index": 0 } ], "properties": { "Node name for S&R": "UNETLoader", "cnr_id": "comfy-core" }, "widgets_values": ["krea2_turbo_bf16.safetensors", "default"] }, { "id": 2, "type": "LoraLoaderModelOnly", "pos": [40, 190], "size": [370, 82], "flags": {}, "order": 1, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", "link": 1 } ], "outputs": [ { "name": "MODEL", "type": "MODEL", "links": [2], "slot_index": 0 } ], "properties": { "Node name for S&R": "LoraLoaderModelOnly", "cnr_id": "comfy-core" }, "widgets_values": [ "krea2_turbo_2step_rank_64_lora_comfyui.safetensors", 1.0 ] }, { "id": 3, "type": "CLIPLoader", "pos": [40, 320], "size": [370, 106], "flags": {}, "order": 2, "mode": 0, "inputs": [], "outputs": [ { "name": "CLIP", "type": "CLIP", "links": [3], "slot_index": 0 } ], "properties": { "Node name for S&R": "CLIPLoader", "cnr_id": "comfy-core" }, "widgets_values": ["qwen3vl_4b_bf16.safetensors", "krea2", "default"] }, { "id": 8, "type": "VAELoader", "pos": [40, 470], "size": [370, 58], "flags": {}, "order": 3, "mode": 0, "inputs": [], "outputs": [ { "name": "VAE", "type": "VAE", "links": [9], "slot_index": 0 } ], "properties": { "Node name for S&R": "VAELoader", "cnr_id": "comfy-core" }, "widgets_values": ["qwen_image_vae.safetensors"] }, { "id": 4, "type": "CLIPTextEncode", "pos": [450, 60], "size": [430, 200], "flags": {}, "order": 4, "mode": 0, "inputs": [ { "name": "clip", "type": "CLIP", "link": 3 } ], "outputs": [ { "name": "CONDITIONING", "type": "CONDITIONING", "links": [4, 5], "slot_index": 0 } ], "properties": { "Node name for S&R": "CLIPTextEncode", "cnr_id": "comfy-core" }, "widgets_values": [ "Portrait of a young woman with freckles and windswept auburn hair, soft window light, shallow depth of field, photograph, sharp detail" ] }, { "id": 5, "type": "ConditioningZeroOut", "pos": [450, 300], "size": [430, 30], "flags": {}, "order": 5, "mode": 0, "inputs": [ { "name": "conditioning", "type": "CONDITIONING", "link": 5 } ], "outputs": [ { "name": "CONDITIONING", "type": "CONDITIONING", "links": [6], "slot_index": 0 } ], "properties": { "Node name for S&R": "ConditioningZeroOut", "cnr_id": "comfy-core" }, "widgets_values": [] }, { "id": 6, "type": "EmptyLatentImage", "pos": [450, 380], "size": [430, 106], "flags": {}, "order": 6, "mode": 0, "inputs": [], "outputs": [ { "name": "LATENT", "type": "LATENT", "links": [7], "slot_index": 0 } ], "properties": { "Node name for S&R": "EmptyLatentImage", "cnr_id": "comfy-core" }, "widgets_values": [1024, 1024, 1] }, { "id": 7, "type": "KSampler", "pos": [930, 60], "size": [330, 262], "flags": {}, "order": 7, "mode": 0, "inputs": [ { "name": "model", "type": "MODEL", "link": 2 }, { "name": "positive", "type": "CONDITIONING", "link": 4 }, { "name": "negative", "type": "CONDITIONING", "link": 6 }, { "name": "latent_image", "type": "LATENT", "link": 7 } ], "outputs": [ { "name": "LATENT", "type": "LATENT", "links": [8], "slot_index": 0 } ], "properties": { "Node name for S&R": "KSampler", "cnr_id": "comfy-core" }, "widgets_values": [0, "randomize", 2, 1, "euler", "simple", 1] }, { "id": 9, "type": "VAEDecode", "pos": [1300, 60], "size": [210, 46], "flags": {}, "order": 8, "mode": 0, "inputs": [ { "name": "samples", "type": "LATENT", "link": 8 }, { "name": "vae", "type": "VAE", "link": 9 } ], "outputs": [ { "name": "IMAGE", "type": "IMAGE", "links": [10], "slot_index": 0 } ], "properties": { "Node name for S&R": "VAEDecode", "cnr_id": "comfy-core" }, "widgets_values": [] }, { "id": 10, "type": "SaveImage", "pos": [1300, 150], "size": [420, 460], "flags": {}, "order": 9, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", "link": 10 } ], "outputs": [], "properties": { "Node name for S&R": "SaveImage", "cnr_id": "comfy-core" }, "widgets_values": ["krea2_turbo_2step_lora"] }, { "id": 11, "type": "MarkdownNote", "pos": [930, 380], "size": [560, 400], "flags": {}, "order": 10, "mode": 0, "inputs": [], "outputs": [], "properties": {}, "widgets_values": [ "## Krea 2 Turbo \u2014 2-step distillation LoRA\n\nKrea 2 Turbo normally needs **8 steps**. With this LoRA it runs at **2** \u2014 a fast preview, a quarter of the cost.\n\n### Files\n| file | put it in |\n| --- | --- |\n| `krea2_turbo_bf16.safetensors` | `models/diffusion_models/` |\n| `qwen3vl_4b_bf16.safetensors` | `models/text_encoders/` |\n| `qwen_image_vae.safetensors` | `models/vae/` |\n| `krea2_turbo_2step_rank_64_lora_comfyui.safetensors` | `models/loras/` |\n\nThe first three are from [Comfy-Org/Krea-2](https://huggingface.co/Comfy-Org/Krea-2).\n\n**The LoRA is independent of the base build.** It is applied on top of the diffusion model by ComfyUI's own loader, which handles any dequantisation, so a quantised or otherwise optimised build of Krea 2 Turbo behaves just as bf16 does. Please use whichever variant suits your hardware \u2014 set it in **Load Diffusion Model** and leave the rest of the workflow untouched.\n\nThis workflow ships **full bf16** only because it is the one build guaranteed to run everywhere: bf16 needs no backend-specific kernel, so it works on CUDA, Apple Silicon and CPU alike. Smaller options: `krea2_turbo_int8_convrot` (13.5 GB, either platform), or `krea2_turbo_fp8_scaled` (13.1 GB) which is **NVIDIA-only** \u2014 MPS has no `Float8_e4m3fn` support and fails at the sampler. The text encoder has bf16 and fp8 builds only; there is no int8 one.\n\n> **Do not use `fp8_scaled` on Apple Silicon.** MPS has no `Float8_e4m3fn` support, so it fails at the sampler with *\"Trying to convert Float8_e4m3fn to the MPS backend\"*. It is fine on NVIDIA. `krea2_turbo_bf16` (26.3 GB) also works everywhere if you prefer full precision \u2014 just set the matching name in the loader.\n\n### Settings that matter\n- **steps 2**, **cfg 1.0** (Turbo is CFG-free), sampler **euler**, scheduler **simple**\n- LoRA strength **1.0**\n- The negative is a `ConditioningZeroOut` \u2014 at cfg 1.0 it is not evaluated, so there is nothing to write in it\n\nSet steps back to 8 and bypass the LoRA node (Ctrl+B) to compare against stock Turbo.\n\n### Metadata\nThe LoRA file in this repository is always the **latest** published checkpoint of the run \u2014 the file name never changes, so this workflow never needs updating. Which checkpoint it is today is in `krea2_turbo_2step_rank_64_lora_checkpoint_info.md` next to it, and in the file's own safetensors metadata along with the base model, the method and the inference settings above." ], "color": "#432", "bgcolor": "#653" } ], "links": [ [1, 1, 0, 2, 0, "MODEL"], [2, 2, 0, 7, 0, "MODEL"], [3, 3, 0, 4, 0, "CLIP"], [4, 4, 0, 7, 1, "CONDITIONING"], [5, 4, 0, 5, 0, "CONDITIONING"], [6, 5, 0, 7, 2, "CONDITIONING"], [7, 6, 0, 7, 3, "LATENT"], [8, 7, 0, 9, 0, "LATENT"], [9, 8, 0, 9, 1, "VAE"], [10, 9, 0, 10, 0, "IMAGE"] ], "groups": [], "config": {}, "extra": { "ds": { "scale": 0.85, "offset": [0, 0] } }, "version": 0.4 }