Marigold examples / benchmark-image-gen / models

benchmark-image-gen: models

Declared by version 0.1.0: 27.

Model Type Provider Input Output
segmind/tiny-sd txt2img huggingface text image
segmind/small-sd txt2img huggingface text image
stable-diffusion-v1-5/stable-diffusion-v1-5 txt2img huggingface text image
stabilityai/stable-diffusion-2-1 txt2img huggingface text image
segmind/segmind-vega txt2img huggingface text image
segmind/ssd-1b txt2img huggingface text image
stabilityai/stable-diffusion-xl-base-1.0 txt2img huggingface text image
playgroundai/playground-v2.5-1024px-aesthetic txt2img huggingface text image
kwai-kolors/kolors-diffusers txt2img huggingface text image
stabilityai/sd-turbo txt2img huggingface text image
stabilityai/sdxl-turbo txt2img huggingface text image
idkiro/sdxs-512-dreamshaper txt2img huggingface text image
efficient-large-model/sana_600m_1024px_diffusers txt2img huggingface text image
efficient-large-model/sana_1600m_1024px_diffusers txt2img huggingface text image
pixart-alpha/pixart-xl-2-1024-ms txt2img huggingface text image
pixart-alpha/pixart-sigma-xl-2-1024-ms txt2img huggingface text image
tencent-hunyuan/hunyuandit-v1.2-diffusers txt2img huggingface text image
alpha-vllm/lumina-next-sft-diffusers txt2img huggingface text image
black-forest-labs/flux.1-schnell txt2img huggingface text image
tongyi-mai/z-image-turbo txt2img huggingface text image
qwen/qwen-image txt2img huggingface text image
warp-ai/wuerstchen txt2img huggingface text image
kandinsky-community/kandinsky-2-2-decoder txt2img huggingface text image
stabilityai/stable-cascade txt2img huggingface text image
huggingface/amused-512 txt2img huggingface text image
dream-textures/texture-diffusion txt2img huggingface text image
arrexel/pattern-diffusion txt2img huggingface text image

models.yaml

# Image generation benchmark catalogue.
#
# All names lowercase -- required, not just tidy: the submission path
# (receiver_logic.py) always lowercases the incoming model name before a
# case-sensitive DB lookup, so any mixed-case entry here is otherwise
# unreachable regardless of what the client sends.
#
# Grouped by architecture, which is the axis the measurements are about.
# No hardware annotations: the deployment chooses the instance, and a
# model that does not fit produces a load failure, which is itself a
# result worth recording.
#
# Sizes and step figures are measured on an A10G unless marked
# estimated. Names and availability need checking before each run --
# FLUX became gated between two runs in the same week:
#
#   marigold cache populate . 2>&1 | grep -E "ERROR|loading"

_templates:

  txt2img: &txt2img
    provider: huggingface
    type: txt2img
    input: text
    output: image

models:

  # -----------------------------------------------------------------
  # unet, Stable Diffusion family
  #
  # One architecture across four parameter counts, so the per-step cost
  # against model size comes out of this group directly.
  # -----------------------------------------------------------------

  - <<: *txt2img
    name: segmind/tiny-sd
    description: >
      ~2 GB estimated. Distilled SD 1.5. The floor of the range: if a
      measurement cannot separate this from SDXL, the measurement is
      not working.

  - <<: *txt2img
    name: segmind/small-sd
    description: >
      ~2.5 GB estimated. One step up from tiny-sd, same distillation
      family.

  - <<: *txt2img
    name: stable-diffusion-v1-5/stable-diffusion-v1-5
    description: >
      ~4 GB estimated. The original 512px unet, and the architecture
      most third-party checkpoints derive from.

  - <<: *txt2img
    name: stabilityai/stable-diffusion-2-1
    description: >
      ~5 GB estimated. 768px, OpenCLIP text encoder rather than CLIP.

  - <<: *txt2img
    name: segmind/segmind-vega
    description: >
      ~3.5 GB estimated. Heavily distilled SDXL.

  - <<: *txt2img
    name: segmind/ssd-1b
    description: >
      ~7 GB estimated. 50% distilled SDXL. Third point on the SDXL
      scaling line with segmind-vega and sdxl-base.

  - <<: *txt2img
    name: stabilityai/stable-diffusion-xl-base-1.0
    description: >
      14 GB. 6.95 GB VRAM allocated, 11.14 GB peak, 0.289 s/step on an
      A10G, 0.675 s/step on an RTX 3060. The reference point.

  - <<: *txt2img
    name: playgroundai/playground-v2.5-1024px-aesthetic
    description: >
      ~14 GB estimated. SDXL architecture, retrained from scratch. Any
      difference against sdxl-base is training rather than structure.

  - <<: *txt2img
    name: kwai-kolors/kolors-diffusers
    extra_env:
      TRUST_REMOTE_CODE: "1"
    description: >
      ~20 GB estimated. SDXL-family unet with a ChatGLM text encoder,
      so it needs remote code. The compose worker sets REMOTE_CODE=0,
      making this the test of whether extra_env overrides it.

  # -----------------------------------------------------------------
  # distilled, few-step
  #
  # The step sweep on these measures cost against a flat quality curve,
  # which is the point.
  # -----------------------------------------------------------------

  - <<: *txt2img
    name: stabilityai/sd-turbo
    extra_env:
      NUM_STEPS: "1"
    description: >
      ~2.5 GB estimated. Adversarially distilled SD 2.1, single-step.
      Non-commercial licence -- note it if the results are published.

  - <<: *txt2img
    name: stabilityai/sdxl-turbo
    extra_env:
      NUM_STEPS: "1"
    description: >
      ~7 GB estimated. Adversarially distilled SDXL. Non-commercial
      licence.

  - <<: *txt2img
    name: idkiro/sdxs-512-dreamshaper
    extra_env:
      NUM_STEPS: "1"
    description: >
      ~2.5 GB estimated. One-step SD 1.5 derivative.

  # -----------------------------------------------------------------
  # DiT
  # -----------------------------------------------------------------

  - <<: *txt2img
    name: efficient-large-model/sana_600m_1024px_diffusers
    description: >
      ~3 GB estimated. Linear-attention DiT. Pairs with sana_1600m:
      same architecture, 2.7x the parameters, so the two give the
      per-step slope against model size on one architecture. The
      cleanest scaling measurement in the set.

  - <<: *txt2img
    name: efficient-large-model/sana_1600m_1024px_diffusers
    description: >
      16 GB. 9.07 GB allocated, 0.157 s/step on an A10G, 0.356 on a
      3060 -- the fastest model in the A10G run.

  - <<: *txt2img
    name: pixart-alpha/pixart-xl-2-1024-ms
    description: >
      ~10 GB estimated. DiT with a T5 text encoder.

  - <<: *txt2img
    name: pixart-alpha/pixart-sigma-xl-2-1024-ms
    description: >
      ~10 GB estimated. Successor to PixArt-alpha. Same-family pair, so
      the difference is architecture revision rather than scale.

  - <<: *txt2img
    name: tencent-hunyuan/hunyuandit-v1.2-diffusers
    description: >
      ~15 GB estimated. Bilingual DiT, two text encoders.

  - <<: *txt2img
    name: alpha-vllm/lumina-next-sft-diffusers
    description: >
      ~10 GB estimated. Next-DiT with a Gemma text encoder.

  - <<: *txt2img
    name: black-forest-labs/flux.1-schnell
    extra_env:
      NUM_STEPS: "4"
      LOAD_IN_4BIT: "1"
    description: >
      34 GB. Fails fp16 on an A10G by ~100 MB: 21.80 GiB allocated
      against 22.06 usable. At NF4: 5.95 GB weights, 13.44 GB
      allocated, 1.675 s/step. Guidance-distilled, so the guidance
      sweep is flat -- measured, not assumed.

      Gated since 2026-09: needs HF_TOKEN and licence acceptance.

  - <<: *txt2img
    name: tongyi-mai/z-image-turbo
    extra_env:
      NUM_STEPS: "4"
    description: >
      33 GB. 20.53 GB allocated, 23.09 GB peak on a 22.06 GB card, with
      allocator warnings throughout and 2.534 s/step -- the slowest in
      the set.

      Produced 3 KB PNGs on the A10G run: pipeline ran, output blank.
      LOAD_IN_4BIT removed here as the first hypothesis.

  - <<: *txt2img
    name: qwen/qwen-image
    description: >
      ~40 GB estimated. The largest here.

  # -----------------------------------------------------------------
  # multi-stage and non-diffusion
  #
  # Combined pipelines with several stages, and one model that is not
  # diffusion at all. These exercise loader paths nothing else here
  # touches, so a failure is as informative as a measurement.
  # -----------------------------------------------------------------

  - <<: *txt2img
    name: warp-ai/wuerstchen
    description: >
      ~5 GB estimated. Three-stage cascade in a 42x compressed latent
      space against SD's 8x. Combined pipeline: load_diffusion_pipeline
      calls .to(target) once, which may not place every stage.

  - <<: *txt2img
    name: kandinsky-community/kandinsky-2-2-decoder
    description: >
      ~5 GB estimated decoder. Two-stage prior plus decoder, combined
      pipeline.

  - <<: *txt2img
    name: stabilityai/stable-cascade
    description: >
      ~20 GB estimated. Wuerstchen v3, three stages. The largest
      combined pipeline here.

  - <<: *txt2img
    name: huggingface/amused-512
    description: >
      ~1.5 GB estimated. MaskGIT over VQ tokens: parallel decoding, no
      denoising loop. num_inference_steps may mean something different
      or nothing. The most architecturally distant entry, and the one
      most likely to break the loader, which is why it is here.

  # -----------------------------------------------------------------
  # texture and pattern
  #
  # Fine-tunes aimed at game and material work. Tileability in these is
  # a property of the inference recipe rather than the weights, and the
  # txt2img handler implements none of it -- see the note below.
  # -----------------------------------------------------------------

  - <<: *txt2img
    name: dream-textures/texture-diffusion
    description: >
      ~4 GB estimated. SD 1.5 DreamBooth fine-tune for flat diffuse
      textures, minimal baked lighting. Prompts need the token "pbr" to
      invoke the style, so the benchmark prompt set produces
      off-distribution output for this entry. Loads as a standard
      StableDiffusionPipeline.

  - <<: *txt2img
    name: arrexel/pattern-diffusion
    description: >
      ~5 GB estimated. SD 2.0 fine-tune for seamless tileable patterns.
      The model card's recipe is DDPM scheduler, roll the latents for
      the first ~80% of steps, circular padding on unet and VAE for the
      last ~20%. The handler does none of that, so output here is
      pattern-styled and not tileable. Measured as a cost data point;
      the seamless result needs handler work.