Skip to page content
SAVRN
Search Plan a project

Open-weight model · Text to image

agate-preview-002-4step

by ML-Intern-lab ML-Intern-lab/agate-preview-002-4step

agate-preview-002-4step is an open-weight model for text to image from ML-Intern-lab, released under MIT License. Its published files total 2.0 GB. It draws 1 downloads a month.

An unofficial distillation of LogoLabs' Agate Preview 002 (260M parameters, MIT) into a 4-step model with classifier-free guidance baked in: 4 network passes per image instead of the teacher's 100 (50 Euler steps × a conditional and an unconditional pass).

Parameters—
Context—
Weights1.9 GB
Licensemit
AccessOpen weights
Monthly Downloads1

Model Card

By ML-Intern-lab, published under mit, revision 2ac9e636c078.

An unofficial distillation of LogoLabs' Agate Preview 002 (260M parameters, MIT) into a 4-step model with classifier-free guidance baked in: 4 network passes per image instead of the teacher's 100 (50 Euler steps × a conditional and an unconditional pass). Same architecture, same 256 px output, same agate/ code; only the weights differ. in your browser (WebGPU, nothing leaves your machine) · Use steps=4, cfg=1.0. The bundled pipeline skips the unconditional pass when cfg == 1.0. Every image carries Agate's invisible watermark (payload AGATE002) and provenance metadata; pass watermark=False only for images that go into metrics. A WebGPU build (webgpu/, same graph I/O as Agate's own) runs in…

Read ML-Intern-lab's full model card

Agate Preview 002, 4-step (unofficial distillation)

An unofficial distillation of LogoLabs' Agate Preview 002 (260M parameters, MIT) into a 4-step model with classifier-free guidance baked in: 4 network passes per image instead of the teacher's 100 (50 Euler steps × a conditional and an unconditional pass). Same architecture, same 256 px output, same agate/ code; only the weights differ.

Try it: live, redraws on every keystroke (GPU) · in your browser (WebGPU, nothing leaves your machine) · everything in one collection

import sys
from huggingface_hub import snapshot_download

path = snapshot_download("ML-Intern-lab/agate-preview-002-4step")
sys.path.insert(0, path)
from agate import AgatePipeline

pipe = AgatePipeline.from_pretrained(path, device="cuda")
image = pipe("a red cube on top of a blue sphere", steps=4, cfg=1.0, seed=0)[0]   # cfg=1.0: one pass per step
image.save("cube.png")

Use steps=4, cfg=1.0. The bundled pipeline skips the unconditional pass when cfg == 1.0. Every image carries Agate's invisible watermark (payload AGATE002) and provenance metadata; pass watermark=False only for images that go into metrics. A WebGPU build (webgpu/, same graph I/O as Agate's own) runs in the browser with onnxruntime-web.

Results

GenEval with the official scorer (Mask2Former + CLIP), 4 images per prompt (2,212 images per row), mean of the six task accuracies, with 95% bootstrap intervals over the 553 prompts. Image metrics on 5,000 held-out FLUX-Reason captions at 256 px.

model network passes GenEval 95% CI FID-5k FD-DINOv2 CLIPScore
teacher, 50 steps + CFG 3 100 0.563 [0.534, 0.591] 11.40 130.8 27.03
teacher, 16 steps + CFG 3 32 0.564 [0.535, 0.592] 11.90 130.0 26.74
this model (s4p, 4 steps) 4 0.536 [0.508, 0.564] 12.57 142.2 26.97
previous version (s4, 4 steps, in v1/) 4 0.509 [0.480, 0.538] 12.96 146.5 26.25
guidance-distilled model before step halving, 4 steps 4 0.447 [0.418, 0.474] – – –
teacher, 4 steps + CFG 3 (1 image per prompt) 8 0.466 – 20.07 218.2 26.62

Paired differences (same prompts and seeds): this model vs the previous version +0.027 [+0.014, +0.041]; vs the teacher at 50 steps −0.027. Per task (this model / teacher at 50 steps): single object 0.91 / 0.92, two objects 0.56 / 0.63, counting 0.33 / 0.38, colours 0.77 / 0.74, position 0.23 / 0.27, colour attribution 0.41 / 0.45.

Speed: about 0.046 s per image at batch 1 on an A100 with CUDA graphs, against 0.59 s for the teacher at 50 steps (12.8× faster; measured for the previous version, and this version has the identical network and step count). FID and FD-DINOv2 are only comparable within this table.

Top row: teacher at 50 steps with CFG. Middle: previous version (s4). Bottom: this model (s4p). The two student rows share seeds; the teacher row was generated with different seeds, so compare the student rows with each other, and the teacher row only for overall look.

How it was made

Two runs by ML Intern on Hugging Face Jobs, about $37 of GPU in total.

  1. Run 1 (29–30 Sep, $22.43): - Guidance distillation: a student learns the teacher's CFG-3 velocity in one pass (3,000 steps). - Progressive distillation: the step count is halved 32 → 16 → 8 → 4 (Salimans & Ho 2022; Meng et al. 2023). - Data: 150k SD-VAE latents from LucasFang/FLUX-Reason-6M, Agate's own training set (Apache-2.0).
  2. Run 2 (30 Sep – 1 Oct, $14.70): a perceptual fine-tune of the 4-step model. - Targets: 24k images from the teacher at 16 steps with CFG, each paired with its starting noise. GenEval and held-out captions were excluded. - Training: backpropagation through all 4 sampling steps. Loss = latent MSE + LPIPS + DINOv2 cosine on TAESD decodes; 1,125 steps. - Ship gate: shipped only after passing a gate on GenEval, LPIPS and FID.

Per-stage logs, checkpoints, scripts and every evaluation image are kept in private repos by the author; the evaluation images and raw scores are in agate-preview-002-4step-eval (private for now).

Run 1 results (1 image per prompt, for reference)

model steps network passes GenEval FID-5k LPIPS to teacher@50 s / image (A100)
teacher 50 100 0.562 11.40 – 0.591
teacher 16 32 0.569 11.90 0.196 0.189
teacher 8 16 0.533 13.47 0.298 0.095
teacher 4 8 0.466 20.07 0.416 0.047
8-step student (8step/) 8 8 0.521 12.35 0.262 0.093
4-step student (v1/) 4 4 0.527 12.96 0.307 0.046

With one image per prompt each GenEval number is only accurate to about ±0.02; the 4-image table above supersedes it.

Files

path what
generator.safetensors this model (s4p), bf16
v1/generator.safetensors the previous 4-step version (s4, run 1)
8step/generator.safetensors the 8-step student from run 1 (use steps=8, cfg=1.0)
agate/, text_encoder/, config.json Agate 002's code and text encoder; config.json sets 4 steps, CFG 1
webgpu/ ONNX build for the browser (opset 17, fp16 weights, fp32 compute); parity ≤ 2/255 per pixel vs PyTorch

Limitations

  • No negative prompts. Guidance is baked into the weights; negative_prompt is ignored at cfg=1.0.
  • 256 × 256 only, like the teacher.
  • Agate's weaknesses remain: exact text, counts above three, negation. The student is still about 0.03 GenEval below the teacher, mostly on two-object and colour-attribution prompts.
  • People can come out partly unclothed without being asked, a tendency the teacher's card documents. Use an output classifier for public deployments; the live Space does.
  • LPIPS in run 2 was measured on 200 prompts in single-pair processes after batched loops gave inconsistent values; treat LPIPS as supporting evidence and GenEval and FID as the main results.

Credits and licence

Model architecture, code and teacher weights: LogoLabs, Agate Preview 002 (MIT). Training data: FLUX-Reason-6M (Apache-2.0). Distillation by ML Intern for ysharma; not affiliated with LogoLabs. The distilled weights are released under the MIT licence, like the teacher.

Configuration

Model type
agate

Identity and Version

Repository
ML-Intern-lab/agate-preview-002-4step
Publisher
ML-Intern-lab
Task
Text to image
Modality
Image
Library
Not stated by the source
Parameters
Not stated by the source
Languages
en
Revision
2ac9e636c07839ccfcb415b17bd694a8caad7277
First published
2026-09-30
Last updated
2026-10-01

Files and Weights

31 files, 2.0 GB in total. The weights are 7 files totalling 1.9 GB in onnx, safetensors.

Weights7 files · 1.9 GB
Configuration11 files · 71.0 KB
Tokenizer4 files · 7.2 MB
Documentation2 files · 8.5 KB
Other6 files · 9.4 MB
Repository1 file · 2.7 KB
Every file
FileTypeSizeSHA-256
8step/generator.safetensorsWeights381.9 MB 5a1a849a9a8a
generator.safetensorsWeights381.9 MB 961139566142
text_encoder/model.safetensorsWeights272.6 MB d9dc54182970
v1/generator.safetensorsWeights381.9 MB a1c2c5ed4354
webgpu/generator.onnxWeights385.9 MB 1bc9e0a43ca0
webgpu/taesd_decoder.onnxWeights4.9 MB e98516c3f1f8
webgpu/text_encoder.onnxWeights136.6 MB 2cfc6a41f1a6
agate/__init__.pyConfiguration332 B —
agate/fcdm_planner.pyConfiguration16.6 KB —
agate/fcdm_t2i.pyConfiguration10.3 KB —
agate/fcdm_thinker2.pyConfiguration15.4 KB —
agate/marking.pyConfiguration4.7 KB —
agate/pipeline.pyConfiguration8.2 KB —
agate/text_encoder.pyConfiguration9.9 KB —
config.jsonConfiguration2.5 KB —
text_encoder/config.jsonConfiguration1.3 KB —
text_encoder/special_tokens_map.jsonConfiguration731 B —
webgpu/manifest.jsonConfiguration1.2 KB —
LICENSEDocumentation1.1 KB —
README.mdDocumentation7.4 KB —
assets/loss_curves.pngOther162.9 KB 9fa1845d5032
assets/run2_teacher50_s4_s4p.pngOther4.5 MB 63cc5a6d793a
assets/s4_prev.pngOther1.5 MB 6cc59e152ddd
assets/s4_teacher50.pngOther1.6 MB 672582cdec69
assets/s4_this.pngOther1.5 MB b3c79bbe9a64
requirements.txtOther101 B —
.gitattributesRepository2.7 KB —
text_encoder/tokenizer.jsonTokenizer3.6 MB —
text_encoder/tokenizer_config.jsonTokenizer21.8 KB —
webgpu/tokenizer.jsonTokenizer3.6 MB —
webgpu/tokenizer_config.jsonTokenizer21.8 KB —

License and Download

License
mit
Access
Open weights, no gate
Download size
1.9 GB
Download from ML-Intern-lab

Released by ML-Intern-lab through its official repository on Hugging Face. Read the license.

Built From

  • Derived from Logolabs/agate-preview-002
  • Trained on (disclosed) LucasFang/FLUX-Reason-6M

Memory Requirements

PrecisionWeights in memory
As published1.9 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About agate-preview-002-4step

Can I use agate-preview-002-4step commercially?

Yes. agate-preview-002-4step is released under MIT License. The MIT License is a short permissive license. It permits commercial use, modification and redistribution, provided the copyright notice and permission notice are included.

Similar Models

GGUF, Safetensors, and MLX quantized formats of Qwen/Qwen-Image-2.1 for local image generation using the original upstream base weights. Q4KM is recommended for the best balance of size and quality for GGUF. INT8 ConvRot and NVFP4 offer high performance on supported GPUs, while MLX formats are optimized for Apple Silicon. Companion model files packaged for ComfyUI: Use the model with ComfyUI and ComfyUI-GGUF. All required companion files (GGUF transformer, text encoder, and VAE) are hosted directly in this repository. Download the files and place them in their respective ComfyUI directories: 1. Install ComfyUI-GGUF: Use the maintained fork with native Qwen-Image 2.1 support by cloning…

Open weights other gguf

GGUF quantizations of Qwen/Qwen-Image-2.1 for local image generation using the original upstream base weights. Q4KM is recommended for the best balance of size and quality. Companion model files packaged for ComfyUI: Use the model with ComfyUI and ComfyUI-GGUF. All required companion files (GGUF transformer, text encoder, and VAE) are hosted directly in this repository. Download the files and place them in their respective ComfyUI directories: 1. Install ComfyUI-GGUF: Use the maintained fork with native Qwen-Image 2.1 support by cloning leejet/ComfyUI-GGUF into your custom nodes: (Note: If you have the older city96/ComfyUI-GGUF installed and encounter an Unknown model architecture! error…

Open weights other gguf

Model · Text to image

Qwen-Image-2.1-GGUF

Unsloth AI

This is a GGUF quantized version of Qwen-Image-2.1. unsloth/Qwen-Image-2.1-GGUF uses Unsloth Dynamic 2.0 methodology for SOTA performance. - Important layers are upcasted to higher precision, per tensor, from a measured sensitivity scan. - Run these with Unsloth Desktop, stable-diffusion.cpp and more. A GGUF is the denoiser only, so it needs the VAE and the Qwen3-VL text encoder alongside it. See below for image editing operating inside of Unsloth Desktop: Rendered with the Q4KM denoiser and the Q4KM text encoder, 1024x1024, 20 steps, cfg 6.0, euler. We are excited to open-source Qwen-Image-2.1, a unified text-to-image generation and image editing model in the Qwen family. With just 7B…

Open weights other

Model · Text to image

Z-Image-Turbo-GGUF

Unsloth AI

Welcome to the official repository for the Z-Image(造相)project! Z-Image is a powerful and highly efficient image generation model with 6B parameters. Currently there are three variants: - Z-Image-Turbo – A distilled version of Z-Image that matches or exceeds leading competitors with only 8 NFEs (Number of Function Evaluations). It offers sub-second inference latency on enterprise-grade H800 GPUs and fits comfortably within 16G VRAM consumer devices. It excels in photorealistic image generation, bilingual text rendering (English & Chinese), and robust instruction adherence. - Z-Image-Base – The non-distilled foundation model. By releasing this checkpoint, we aim to unlock the full potential…

Open weights apache-2.0 ggml

Model · Text to image

Juggernaut-XL-v9

RunDiffusion

The SDXL ecosystem is the single most mature corner of open image generation, and v9 is its most refined photorealism checkpoint. Choose Juggernaut XL v9 when you want: - Photorealism that holds up under scrutiny — skin texture, micro-contrast, and natural lighting that translates from concept to print. - Reasonable hardware — runs comfortably on 8 GB of VRAM, unlike newer DiT-based models that demand 16+ GB. - The full SDXL toolbox — drop-in compatibility with the thousands of SDXL ControlNets, IP-Adapter variants, AnimateDiff, regional prompting tools, and LoRAs already in your workflow. - Battle-tested reliability — 26+ months in production, used in agencies, studios, and shipping…

Open weights creativeml-openrail-m diffusers

Model · Text to image

Qwen-Image-Lightning

Lightx2v

Please refer to Qwen-Image-Lightning github to learn how to use the models. make sure to install diffusers from main (pip install git+https://github.com/huggingface/diffusers.git)

Open weights apache-2.0 diffusers