name: z-image-xy-plot
display_name: Z-Image Turbo XY-Plot (LoRA comparison)
family: z-image
kind: utility
description: >-
  A utility workflow that compares trained Z-Image Turbo LoRAs side by side on an
  XY grid. Builds on Z-Image Turbo (GGUF UNet + Qwen3-4B GGUF text encoder + ae
  VAE) and uses Easy-Use loraNames selectors, KJNodes Get/Set + ImageConcatMulti,
  tinyterraNodes text, and rgthree labels to render a labelled grid of multiple
  LoRAs (and/or training checkpoints) at once. Bring your own trained LoRAs.
vram: "<8GB"
workflow: workflow.json
skill: z-image-txt2img
launch_args: []
sources:
  model: https://huggingface.co/Tongyi-MAI/Z-Image-Turbo
  mirror: https://huggingface.co/Aitrepreneur/FLX
notes:
  - >-
    Run the generated installer from your ComfyUI root (the folder containing
    custom_nodes/ and models/).
  - >-
    Bring your own trained LoRAs. This pack installs NO LoRAs — drop your trained
    Z-Image LoRA .safetensors into models/loras/, then pick them in the workflow's
    "easy loraNames" selector nodes to compare them on the XY grid. The five
    selectors ship the placeholders YOUR-LORA-step1000/1500/2000/2500 and
    YOUR-LORA-final.safetensors; ComfyUI reports those missing until you replace
    them, which is expected.
  - >-
    Need to train a Z-Image LoRA first? See the anima-lora-trainer skill (Citron's
    local kohya trainer) or an ai-toolkit-based trainer; export the resulting
    .safetensors into models/loras/.
  - >-
    GGUF quant tier - the upstream installer prompts Q5_K_S (<8GB) / Q6_K
    (8-12GB) / Q8_0 (12-16GB+). The manifest ships Q8_0 active, matching the
    bundled workflow's UnetLoaderGGUF and every other z-image-* pack. For a
    smaller tier, swap the commented line in manifest.yaml and select your
    installed GGUF in the UnetLoaderGGUF node.
  - >-
    The text encoder loads via CLIPLoaderGGUF with type "lumina2"; the VAE is
    z-image-ae.safetensors. Both are downloaded by this pack.
post_install:
  - >-
    Restart ComfyUI (or use ComfyUI-Manager then Install missing custom nodes
    for any node Python deps).
  - >-
    If you hit "Torch not compiled with CUDA enabled", reinstall the CUDA torch
    build into the embedded/venv python, e.g.
    python -m pip install --force-reinstall torch torchvision torchaudio
    --index-url https://download.pytorch.org/whl/cu121
  - >-
    Load workflow.json, then set each "easy loraNames" node to one of your trained
    LoRAs in models/loras/ to populate the comparison grid.
# Declared external so packs:check-models knows they're intentionally not shipped.
# Placeholders, not real weights — see the "bring your own" note above (#1767).
external_models:
  - YOUR-LORA-step1000.safetensors
  - YOUR-LORA-step1500.safetensors
  - YOUR-LORA-step2000.safetensors
  - YOUR-LORA-step2500.safetensors
  - YOUR-LORA-final.safetensors
