Skip to content

[Bug] Krea2 Turbo: cfg-scale 0 seems to ignore prompt conditioning #1781

Description

@knb

Git commit

$git rev-parse HEAD
b5d8120

Operating System & Version

Ubuntu 24.04

GGML backends

Vulkan

Command-line arguments used

sd-cli --diffusion-model "$DIFFUSION" --llm "$LLM" --vae "$VAE" --prompt "A quiet Japanese mountain temple after rain, wet stone steps, soft morning mist, hydrangeas, natural diffused light, detailed documentary photography, restrained colors" --steps 8 --cfg-scale 1.0 --sampling-method euler --width 512 --height 512 --seed 42 --diffusion-fa --offload-to-cpu --output krea2-turbo.png --verbose

Steps to reproduce

  1. Load Krea2 Turbo.
  2. Generate an image using --cfg-scale 0.
  3. Observe the warning:
    "unconditioned mode, images won't follow the prompt".
  4. The prompt is ignored.
  5. Repeat with --cfg-scale 1; prompt conditioning works as expected.

What you expected to happen

Krea2 Turbo should follow the prompt when using --cfg-scale 0.

According to the official Krea2 documentation, Turbo is intended to be used with:

  • 8 sampling steps
  • CFG = 0

Therefore, I expected prompt conditioning to work normally with --cfg-scale 0.

What actually happened

When --cfg-scale 0 is used, stable-diffusion.cpp switches to unconditional generation.

The following warning is printed:

unconditioned mode, images won't follow the prompt
(use cfg-scale=1 for distilled models)

The generated image largely ignores the prompt.

Changing only --cfg-scale from 0 to 1 makes prompt conditioning work correctly.

Logs / error messages / stack trace

Version:
stable-diffusion.cpp master-714
commit b5d8120

sample_params:
txt_cfg: 0.00
img_cfg: 0.00
distilled_guidance: 3.50

[WARN] unconditioned mode, images won't follow the prompt
(use cfg-scale=1 for distilled models)

Additional context / environment details

Environment:

  • OS: Ubuntu 24.04
  • Backend: Vulkan
  • GPU: AMD Radeon 780M (RADV PHOENIX)

Models:

  • Krea-2-Turbo-Q4_K_M.gguf
  • Qwen3VL-4B-Instruct-Q4_K_M.gguf
  • wan_2.1_vae.safetensors

Command options:

--steps 8
--sampling-method euler
--cfg-scale 0

The same command with --cfg-scale 1 follows the prompt correctly.

The prompt is successfully tokenized and encoded by the Qwen3VL text encoder, so it appears that conditioning is disabled only because cfg-scale == 0.

I'm not sure whether this is intentional or an implementation issue. If this behavior is expected, it might be worth documenting in docs/krea2.md, since the official Krea2 documentation recommends CFG=0 for Turbo.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions