Incorporo-user commited on
Commit
f13cf69
·
verified ·
1 Parent(s): 2e9dfa7

Card: plan-then-paint concept figure with real thinker plans, full benchmark for 5 models, references, energy update

Browse files
.gitattributes CHANGED
@@ -48,3 +48,4 @@ assets/pareto.png filter=lfs diff=lfs merge=lfs -text
48
  assets/dashboard.png filter=lfs diff=lfs merge=lfs -text
49
  assets/loss.png filter=lfs diff=lfs merge=lfs -text
50
  assets/hero_samples.png filter=lfs diff=lfs merge=lfs -text
 
 
48
  assets/dashboard.png filter=lfs diff=lfs merge=lfs -text
49
  assets/loss.png filter=lfs diff=lfs merge=lfs -text
50
  assets/hero_samples.png filter=lfs diff=lfs merge=lfs -text
51
+ assets/concept.png filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -37,7 +37,7 @@ Built by [LogoLabs](https://logolabs.org), which makes AI logo generation, as a
37
  | **What** | Text-to-image, 256 × 256, English prompts |
38
  | **Size** | 260M parameters with TAESD, 308.5M with SD-VAE: 190.9M generator + 68.1M text encoder + decoder |
39
  | **Training** | From scratch, 144.7 GH200-hours, under 13 h wall-clock, 146.9M images seen (≈26 epochs) |
40
- | **Energy** | 81.8 kWh and 2.45 kg CO₂e for Agate; 175.7 kWh for the whole project, measured with perun |
41
  | **GenEval** (official) | **0.550**. SDXL 0.55, SD 2.1 0.50, PixArt-α 0.48, SD 1.5 0.43 (published) |
42
  | **Qwen-Image-Bench** (1,000 prompts) | **28.2**, against SD 1.5's 29.1; on the Pareto frontier among open models of similar size |
43
  | **Speed** | 1.9 s per image on an RTX 4060 (50 steps); also runs in the browser: [WebGPU demo](https://huggingface.co/spaces/Logolabs/agate-webgpu) |
@@ -61,11 +61,37 @@ Built by [LogoLabs](https://logolabs.org), which makes AI logo generation, as a
61
  - **Licence:** MIT, for the code and the weights.
62
 
63
 
64
- **Jump to:** [Quick start](#quick-start) · [Why Agate](#why-agate) · [Results](#results) ·
65
  [Side by side](#side-by-side) · [Test battery](#manual-test-battery) · [How it works](#how-agate-works) ·
66
  [Training](#training) · [Safety](#training-data-and-safety) · [Energy](#compute-and-energy) ·
67
  [Failures](#what-went-wrong-along-the-way) · [Acknowledgements](#acknowledgements)
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  ## Quick start
70
 
71
  ```bash
@@ -153,8 +179,9 @@ its native 512 px; Agate and Supra2-IMG render at 256 px.
153
  <p align="center"><img src="assets/geneval_lineage.png" alt="GenEval overall for every model in the lineage" width="100%"></p>
154
 
155
  The official [GenEval](https://github.com/djghosh13/geneval) pipeline (Mask2Former object detector + CLIP colour
156
- classifier) on all 553 prompts. The lineage runs use one image per prompt; Agate's headline number uses the
157
- benchmark's full four images per prompt (2,212 images):
 
158
 
159
  | | Single | Two obj. | Counting | Colours | Position | Colour attr. | **Overall** |
160
  |---|---|---|---|---|---|---|---|
@@ -217,6 +244,9 @@ and aggregation code, greedy decoding, thinking on.
217
  |---|---|---|---|---|---|---|---|---|---|
218
  | [**Agate**](https://huggingface.co/Logolabs/agate-preview-001) | 191M + 68M text enc. | 256 px | MIT | **28.2** | 25.9 | 33.8 | 28.2 | 36.6 | 14.7 |
219
  | [Stable Diffusion 1.5](https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5) | 860M UNet + 123M CLIP | 512 px | CreativeML OpenRAIL-M | **29.1** | 36.7 | 28.0 | 25.7 | 38.9 | 15.5 |
 
 
 
220
 
221
  **Every model, 300 evenly spaced prompts:**
222
 
@@ -443,12 +473,12 @@ so the totals are a floor.
443
  | **T40r phase 2 (joint Ettin training, to epoch 16)** | 1 | 37.1 | 18.8 | 0.56 |
444
  | **T40r caption phase (2 nodes, 8 h, cosine anneal)** | 1 | 60.3 | 35.2 | 1.06 |
445
  | T40r caption phase, two failed starts | 2 | 3.5 | 0.5 | 0.02 |
446
- | Evaluations, smoke tests, benchmarks | 42 | 28.2 | 10.4 | 0.31 |
447
- | **Whole text-to-image project** | 78 | **322.7** | **175.7** | **5.27** |
448
 
449
  Agate itself cost **144.7 GH200-hours, 81.8 kWh and 2.45 kg CO₂e**, or 156.0 GPU-hours counting its
450
  diverged first try and two failed starts. The whole project, dead ends, evaluations and benchmarks included, cost
451
- 322.7 GPU-hours and 5.27 kg CO₂e.
452
 
453
  ## What went wrong along the way
454
 
@@ -524,6 +554,36 @@ Thanks also to:
524
  | [**Inkvec Super-Resolution**](https://huggingface.co/Logolabs/inkvec-sr-001) | 4× upscaling for logos and icons, fine-tuned MambaIRv2-Small. |
525
  | [**LogoBrief-10K**](https://huggingface.co/datasets/Logolabs/LogoBrief-10K) | 10,000 brand logos with SVGs, design briefs and style tags, opt-out audited before publication. |
526
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
527
  ## Citation
528
 
529
  ```bibtex
 
37
  | **What** | Text-to-image, 256 × 256, English prompts |
38
  | **Size** | 260M parameters with TAESD, 308.5M with SD-VAE: 190.9M generator + 68.1M text encoder + decoder |
39
  | **Training** | From scratch, 144.7 GH200-hours, under 13 h wall-clock, 146.9M images seen (≈26 epochs) |
40
+ | **Energy** | 81.8 kWh and 2.45 kg CO₂e for Agate; 176.7 kWh for the whole project, measured with perun |
41
  | **GenEval** (official) | **0.550**. SDXL 0.55, SD 2.1 0.50, PixArt-α 0.48, SD 1.5 0.43 (published) |
42
  | **Qwen-Image-Bench** (1,000 prompts) | **28.2**, against SD 1.5's 29.1; on the Pareto frontier among open models of similar size |
43
  | **Speed** | 1.9 s per image on an RTX 4060 (50 steps); also runs in the browser: [WebGPU demo](https://huggingface.co/spaces/Logolabs/agate-webgpu) |
 
61
  - **Licence:** MIT, for the code and the weights.
62
 
63
 
64
+ **Jump to:** [The idea](#the-idea-plan-then-paint) · [Quick start](#quick-start) · [Why Agate](#why-agate) · [Results](#results) ·
65
  [Side by side](#side-by-side) · [Test battery](#manual-test-battery) · [How it works](#how-agate-works) ·
66
  [Training](#training) · [Safety](#training-data-and-safety) · [Energy](#compute-and-energy) ·
67
  [Failures](#what-went-wrong-along-the-way) · [Acknowledgements](#acknowledgements)
68
 
69
+ ## The idea: plan, then paint
70
+
71
+ <p align="center"><img src="assets/concept.png" alt="Plan, then paint: the thinker plans the layout on a 16 by 16 grid, the convolutional renderer paints it; real captured plans and the evidence that the split works" width="100%"></p>
72
+
73
+ Agate's central design choice is to split image generation between two specialists.
74
+
75
+ - **The thinker is a transformer.** It sees the whole noisy canvas at once. It is told how far denoising has
76
+ come, and it cross-attends to up to 512 text tokens, so it can pick out what matters in a long prompt. It knows
77
+ 2D positions, so "left of" and "above" are real relations. It thinks in four loops, then writes a 16 × 16
78
+ *plan* of regions in latent space.
79
+ - **The renderer is a convolutional U-Net built on FCDM.** Its 7 × 7 convolutions carry strong image priors:
80
+ edges, textures, light. It stays cheap at full resolution. It has no attention and never sees the text. It
81
+ only follows the plan.
82
+
83
+ Convolutions paint well but cannot reason about a sentence or relate one side of the image to the other.
84
+ Transformers reason well but are expensive and prior-poor at pixel level. So Agate plans with attention where
85
+ planning happens, on a coarse grid, and paints with convolutions.
86
+
87
+ The hypothesis held, and the figure shows the evidence:
88
+ - At the same size and epoch, adding the thinker raised GenEval and Qwen-Image-Bench and lowered the loss.
89
+ - Making the planner recurrent and 2D-aware lifted position and colour binding.
90
+ - The finished model binds colours to objects far better than a 1B model whose renderer reads the text directly.
91
+
92
+ The plans above are real: we captured the thinker's output while Agate generated. The layout is already visible
93
+ at step 5 of 50.
94
+
95
  ## Quick start
96
 
97
  ```bash
 
179
  <p align="center"><img src="assets/geneval_lineage.png" alt="GenEval overall for every model in the lineage" width="100%"></p>
180
 
181
  The official [GenEval](https://github.com/djghosh13/geneval) pipeline (Mask2Former object detector + CLIP colour
182
+ classifier) on all 553 prompts. We scored **every model**: all our checkpoints, SD 1.5 and Supra2-IMG, one image per
183
+ prompt (the chart above and the table below). Agate's headline number uses the benchmark's full four images per
184
+ prompt (2,212 images). The four-image run for every other model is in progress and will be added here:
185
 
186
  | | Single | Two obj. | Counting | Colours | Position | Colour attr. | **Overall** |
187
  |---|---|---|---|---|---|---|---|
 
244
  |---|---|---|---|---|---|---|---|---|---|
245
  | [**Agate**](https://huggingface.co/Logolabs/agate-preview-001) | 191M + 68M text enc. | 256 px | MIT | **28.2** | 25.9 | 33.8 | 28.2 | 36.6 | 14.7 |
246
  | [Stable Diffusion 1.5](https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5) | 860M UNet + 123M CLIP | 512 px | CreativeML OpenRAIL-M | **29.1** | 36.7 | 28.0 | 25.7 | 38.9 | 15.5 |
247
+ | [HobbyLM-Image](https://huggingface.co/rootxhacker/HobbyLM-Image) | 334M DiT + CLIP-L | 1024 px | Apache-2.0 | **24.0** | 31.5 | 26.0 | 18.1 | 34.7 | 8.7 |
248
+ | [TinyDiT-256](https://huggingface.co/ivanmikhnenkov/tinydit-256) | 209M DiT + Flan-T5-base | 256 px | CC BY-NC 4.0 | **26.0** | 22.3 | 30.2 | 27.8 | 37.2 | 12.7 |
249
+ | [Supra2-IMG](https://huggingface.co/SupraLabs/Supra2-IMG) | 104M DiT + Flan-T5-base | 256 px | Apache-2.0 | **17.8** | 12.7 | 23.5 | 16.5 | 33.3 | 5.9 |
250
 
251
  **Every model, 300 evenly spaced prompts:**
252
 
 
473
  | **T40r phase 2 (joint Ettin training, to epoch 16)** | 1 | 37.1 | 18.8 | 0.56 |
474
  | **T40r caption phase (2 nodes, 8 h, cosine anneal)** | 1 | 60.3 | 35.2 | 1.06 |
475
  | T40r caption phase, two failed starts | 2 | 3.5 | 0.5 | 0.02 |
476
+ | Evaluations, smoke tests, benchmarks | 44 | 30.4 | 11.4 | 0.34 |
477
+ | **Whole text-to-image project** | 80 | **325.0** | **176.7** | **5.30** |
478
 
479
  Agate itself cost **144.7 GH200-hours, 81.8 kWh and 2.45 kg CO₂e**, or 156.0 GPU-hours counting its
480
  diverged first try and two failed starts. The whole project, dead ends, evaluations and benchmarks included, cost
481
+ 325.0 GPU-hours and 5.30 kg CO₂e.
482
 
483
  ## What went wrong along the way
484
 
 
554
  | [**Inkvec Super-Resolution**](https://huggingface.co/Logolabs/inkvec-sr-001) | 4× upscaling for logos and icons, fine-tuned MambaIRv2-Small. |
555
  | [**LogoBrief-10K**](https://huggingface.co/datasets/Logolabs/LogoBrief-10K) | 10,000 brand logos with SVGs, design briefs and style tags, opt-out audited before publication. |
556
 
557
+ ## References
558
+
559
+ Architecture and training:
560
+ - Kwon et al., *Reviving ConvNeXt for Efficient Convolutional Diffusion Models* (FCDM), [arXiv:2603.09408](https://arxiv.org/abs/2603.09408): the renderer's block and U-Net.
561
+ - Liu et al., *A ConvNet for the 2020s*, [arXiv:2201.03545](https://arxiv.org/abs/2201.03545); Woo et al., *ConvNeXt V2* (GRN), [arXiv:2301.00808](https://arxiv.org/abs/2301.00808).
562
+ - Jabri et al., *Scalable Adaptive Computation for Iterative Generation* (RIN), [arXiv:2212.11972](https://arxiv.org/abs/2212.11972); Jaegle et al., *Perceiver* / *Perceiver IO*, [arXiv:2103.03206](https://arxiv.org/abs/2103.03206), [arXiv:2107.14795](https://arxiv.org/abs/2107.14795): latent cells that read the image.
563
+ - Geiping et al., *Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach*, [arXiv:2502.05171](https://arxiv.org/abs/2502.05171): the thinker's looped core.
564
+ - Su et al., *RoFormer* (RoPE), [arXiv:2104.09864](https://arxiv.org/abs/2104.09864); Henry et al., *Query-Key Normalization*, [arXiv:2010.04245](https://arxiv.org/abs/2010.04245); Wortsman et al., *Small-scale proxies for large-scale Transformer training instabilities*, [arXiv:2309.14322](https://arxiv.org/abs/2309.14322).
565
+ - Perez et al., *FiLM*, [arXiv:1709.07871](https://arxiv.org/abs/1709.07871); Park et al., *SPADE*, [arXiv:1903.07291](https://arxiv.org/abs/1903.07291): per-region steering.
566
+ - Zhang et al., *ControlNet*, [arXiv:2302.05543](https://arxiv.org/abs/2302.05543): zero-initialised growth.
567
+ - Liu et al., *Rectified Flow*, [arXiv:2209.03003](https://arxiv.org/abs/2209.03003); Lipman et al., *Flow Matching*, [arXiv:2210.02747](https://arxiv.org/abs/2210.02747); Esser et al., *SD3*, [arXiv:2403.03206](https://arxiv.org/abs/2403.03206).
568
+ - Ho & Salimans, *Classifier-Free Guidance*, [arXiv:2207.12598](https://arxiv.org/abs/2207.12598); Karras et al., *Guiding a Diffusion Model with a Bad Version of Itself* (autoguidance), [arXiv:2406.02507](https://arxiv.org/abs/2406.02507).
569
+ - Weller et al., *Ettin* (Seq vs Seq), [arXiv:2507.11412](https://arxiv.org/abs/2507.11412); Warner et al., *ModernBERT*, [arXiv:2412.13663](https://arxiv.org/abs/2412.13663).
570
+ - Rombach et al., *Latent Diffusion*, [arXiv:2112.10752](https://arxiv.org/abs/2112.10752); SD-VAE-ft-MSE; TAESD.
571
+ - Loshchilov & Hutter, *AdamW*, [arXiv:1711.05101](https://arxiv.org/abs/1711.05101); Kumar et al., *Fine-Tuning can Distort Pretrained Features* (LP-FT), [arXiv:2202.10054](https://arxiv.org/abs/2202.10054).
572
+
573
+ Data and evaluation:
574
+ - Fang et al., *FLUX-Reason-6M & PRISM-Bench*, [arXiv:2509.09680](https://arxiv.org/abs/2509.09680).
575
+ - Ghosh et al., *GenEval*, [arXiv:2310.11513](https://arxiv.org/abs/2310.11513); Cheng et al., *Mask2Former*, [arXiv:2112.01527](https://arxiv.org/abs/2112.01527); Radford et al., *CLIP*, [arXiv:2103.00020](https://arxiv.org/abs/2103.00020).
576
+ - Li et al., *Qwen-Image-Bench*, [arXiv:2605.28091](https://arxiv.org/abs/2605.28091); Kwon et al., *vLLM*, [arXiv:2309.06180](https://arxiv.org/abs/2309.06180).
577
+ - Heusel et al., *FID*, [arXiv:1706.08500](https://arxiv.org/abs/1706.08500); Stein et al., *FD-DINOv2*, [arXiv:2306.04675](https://arxiv.org/abs/2306.04675); Oquab et al., *DINOv2*, [arXiv:2304.07193](https://arxiv.org/abs/2304.07193).
578
+ - Gutiérrez Hermosillo Muriedas et al., *perun*, Euro-Par 2023.
579
+
580
+ Compared and related models:
581
+ - Podell et al., *SDXL*, [arXiv:2307.01952](https://arxiv.org/abs/2307.01952); Chen et al., *PixArt-α*, [arXiv:2310.00426](https://arxiv.org/abs/2310.00426) and *PixArt-Σ*, [arXiv:2403.04692](https://arxiv.org/abs/2403.04692); Bai et al., *Meissonic*, [arXiv:2410.08261](https://arxiv.org/abs/2410.08261).
582
+ - Xie et al., *SANA*, [arXiv:2410.10629](https://arxiv.org/abs/2410.10629); Sehwag et al., *MicroDiT*, [arXiv:2407.15811](https://arxiv.org/abs/2407.15811); Pernias et al., *Würstchen*, [arXiv:2306.00637](https://arxiv.org/abs/2306.00637); Hu et al., *SnapGen*, [arXiv:2412.09619](https://arxiv.org/abs/2412.09619).
583
+ - [Supra2-IMG](https://huggingface.co/SupraLabs/Supra2-IMG), [TinyDiT-256](https://huggingface.co/ivanmikhnenkov/tinydit-256), [HobbyLM-Image](https://huggingface.co/rootxhacker/HobbyLM-Image).
584
+
585
+ The technical report cites 119 works in full.
586
+
587
  ## Citation
588
 
589
  ```bibtex
assets/concept.png ADDED

Git LFS Details

  • SHA256: 8d0e8a11ac34eef12ebe682d1bff6b9530956b3e7acebd1d26fc3fc929873daf
  • Pointer size: 131 Bytes
  • Size of remote file: 978 kB
assets/judge_detail.png CHANGED

Git LFS Details

  • SHA256: 0ce2273c035adf0736ecf7d67c52f7ac4eb22091065a6e19c37e299914b5ca47
  • Pointer size: 131 Bytes
  • Size of remote file: 315 kB

Git LFS Details

  • SHA256: 7dcdc330b663617e653c247ad04a6785d0242b93ab2e6c9e7eac651118003094
  • Pointer size: 131 Bytes
  • Size of remote file: 316 kB
assets/pareto.png CHANGED

Git LFS Details

  • SHA256: 78590d9044cf952c1063e4babef43a2068d90fd7c9d1d568568946d804aabe4b
  • Pointer size: 131 Bytes
  • Size of remote file: 166 kB

Git LFS Details

  • SHA256: f2b8bd23b981bc5e4e5cd9b8b6b902e9528793961823b0744ed0397f68defc45
  • Pointer size: 131 Bytes
  • Size of remote file: 166 kB
assets/qib.png CHANGED

Git LFS Details

  • SHA256: c3cb1cc92c688b27a1942b6235b6047118045981170fd0b5ebbfa7fea611bb71
  • Pointer size: 131 Bytes
  • Size of remote file: 186 kB

Git LFS Details

  • SHA256: b425e88ff52be89b528b692489986fb3e9b22107785700e2ce6779248b6b2ac5
  • Pointer size: 131 Bytes
  • Size of remote file: 187 kB