Card: sample strip, at-a-glance table, jump menu, reordered sections
Browse files- .gitattributes +1 -0
- README.md +67 -42
- assets/hero_samples.png +3 -0
.gitattributes
CHANGED
|
@@ -47,3 +47,4 @@ assets/judge_detail.png filter=lfs diff=lfs merge=lfs -text
|
|
| 47 |
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
|
|
|
|
|
|
| 47 |
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
|
README.md
CHANGED
|
@@ -26,49 +26,25 @@ tags:
|
|
| 26 |
**0.550 on GenEval** with the official scorer, level with SDXL's published 0.55 and above SD 1.5 (0.43),
|
| 27 |
SD 2.1 (0.50) and PixArt-α (0.48). It is small enough to run in under two seconds on a consumer GPU.
|
| 28 |
|
| 29 |
-
|
| 30 |
-
*small* model for icon generation. We want one that places things where you ask, keeps colours bound to the right
|
| 31 |
-
objects, runs on a consumer GPU, and can be trained from scratch on a research budget. This preview is the
|
| 32 |
-
general-purpose base model; it is not yet specialised for icons.
|
| 33 |
-
|
| 34 |
-
**It trains ultra-fast.** The whole training took 144.7 GH200-hours, and the model was trained from scratch in under
|
| 35 |
-
13 hours of wall-clock time:
|
| 36 |
-
- about 5 h 15 min on 16 GPUs (4 nodes × 4) for phases 1 and 2;
|
| 37 |
-
- 7 h 30 min on 8 GPUs (2 nodes × 4) overnight for the caption phase.
|
| 38 |
-
|
| 39 |
-
Retraining from scratch, on your own data or for a new domain, is an overnight job rather than a research
|
| 40 |
-
programme. More of our work is on
|
| 41 |
-
[our Hugging Face page](https://huggingface.co/Logolabs): the Inkvec vectoriser and the LogoBrief-10K dataset.
|
| 42 |
-
|
| 43 |
-
## Where a small model wins
|
| 44 |
-
|
| 45 |
-
Large text-to-image models make better single images. Agate is for the jobs where their size is the problem:
|
| 46 |
-
too slow, too expensive per image, too heavy to ship, or too costly to retrain.
|
| 47 |
-
|
| 48 |
-
| Use | Why a 260M model fits | Why a multi-billion model struggles |
|
| 49 |
-
|---|---|---|
|
| 50 |
-
| **Runs on the device** | About 1 GB of weights in fp32 (half that in fp16); 1.9 s per image on an RTX 4060; small enough for a laptop, and a WebGPU browser build is in progress. Prompts and images never leave the machine. | Needs a datacentre GPU or a paid API, so every prompt goes to a server. |
|
| 51 |
-
| **Previews while you type** | At the measured ~0.04 s per step, an 8-step draft takes about a third of a second, so a design tool can redraw on every keystroke. | Seconds per image make live preview impractical and expensive at scale. |
|
| 52 |
-
| **Generating in bulk** | About 1,900 images an hour on one consumer GPU: icon sets, variations, synthetic training data, A/B candidates. | At API prices or datacentre-GPU time, millions of images cost real money. |
|
| 53 |
-
| **A model per customer or domain** | A full retrain from scratch is an overnight run (under 13 h), and fine-tunes are cheaper still. A brand, an icon style or a product catalogue can have its own model. | Fine-tuning is costly; training from scratch is out of reach for almost everyone. |
|
| 54 |
-
| **Research on a budget** | Reinforcement learning, reward models, new samplers and architecture ablations cost GPU-hours, not GPU-years. Our whole project, every model and benchmark included, cost 323 GPU-hours. | Every experiment costs thousands of GPU-hours, so few groups can run them. |
|
| 55 |
-
| **Layout-first pipelines** | Strong on placement and colour binding (GenEval position 0.22 vs SD 1.5's 0.01), so it can sketch a composition cheaply. A larger model or a vectoriser such as [Inkvec](https://huggingface.co/spaces/Logolabs/inkvec) then finishes it. | Using a large model for the rough draft wastes most of its cost. |
|
| 56 |
-
| **Offline, edge and sovereign deployments** | MIT licence, no gated dependencies, trainable on a single node. It can run air-gapped and be retrained on your own infrastructure. | Licences, gated weights and hardware needs often rule these out. |
|
| 57 |
|
| 58 |
-
|
| 59 |
-
styles. That work rewards a small, fast, retrainable model over a large one.
|
| 60 |
-
|
| 61 |
-
**A preview: not yet converged.** Agate is a preview checkpoint, and it has not finished learning. Every
|
| 62 |
-
benchmark was still rising when training stopped:
|
| 63 |
-
- GenEval went from 0.505 at epoch 16 to 0.533 at step 82.8k and 0.535 at the end.
|
| 64 |
-
- Qwen-Image-Bench went from 24.8 to 27.8 and then 28.4.
|
| 65 |
-
- The loss was still falling.
|
| 66 |
|
| 67 |
-
|
| 68 |
-
the next step.
|
| 69 |
|
| 70 |
-
|
| 71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
- **Generator:** 191M-parameter *thinker-steered convolutional flow model* (FCDM-T2). A small recurrent transformer
|
| 74 |
(the thinker) reads the prompt and plans a 16 × 16 region map. That map steers a convolutional U-Net working on
|
|
@@ -81,9 +57,15 @@ shows all of that in pictures, along with every model we trained on the way to A
|
|
| 81 |
TAESD. The pipeline's default decoder is the full SD-VAE (49.5M), which makes it **308.5M**. The VAE encoder is
|
| 82 |
only needed for training.
|
| 83 |
- **Data:** [FLUX-Reason-6M](https://huggingface.co/datasets/LucasFang/FLUX-Reason-6M), 5,654,461 of its 5,890,279 images, each with up to 8
|
| 84 |
-
English
|
| 85 |
- **Licence:** MIT, for the code and the weights.
|
| 86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
## Quick start
|
| 88 |
|
| 89 |
```bash
|
|
@@ -117,6 +99,49 @@ image.save("teapot.png")
|
|
| 117 |
On an RTX 4060, one image takes 1.9 s (2.9 s with `autoguide`). At 191M parameters, kernel-launch overhead
|
| 118 |
costs more time than the arithmetic, and CUDA graphs remove most of it.
|
| 119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
## Results
|
| 121 |
|
| 122 |
All scores below were measured by us, with the same seeds, sampler and scorer for every model. Each model
|
|
@@ -210,7 +235,7 @@ and aggregation code, greedy decoding, thinking on.
|
|
| 210 |
| **Agate** | **28.4** | 26.3 | 34.2 | 28.9 | 36.8 | 15.5 |
|
| 211 |
| Stable Diffusion 1.5 | **28.9** | 37.5 | 28.2 | 25.1 | 39.3 | 14.3 |
|
| 212 |
|
| 213 |
-
<p align="center"><img src="assets/pareto.png" alt="Qwen-Image-Bench total against
|
| 214 |
|
| 215 |
<p align="center"><img src="assets/judge_detail.png" alt="Every Qwen-Image-Bench area for Agate and the open models" width="100%"></p>
|
| 216 |
|
|
|
|
| 26 |
**0.550 on GenEval** with the official scorer, level with SDXL's published 0.55 and above SD 1.5 (0.43),
|
| 27 |
SD 2.1 (0.50) and PixArt-α (0.48). It is small enough to run in under two seconds on a consumer GPU.
|
| 28 |
|
| 29 |
+
Built by [LogoLabs](https://logolabs.org), which makes AI logo generation, as a better small model for icon generation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
+
<p align="center"><img src="assets/hero_samples.png" alt="Twelve Agate samples at 256 px, seed 0" width="100%"></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
|
| 33 |
+
## At a glance
|
|
|
|
| 34 |
|
| 35 |
+
| | |
|
| 36 |
+
|---|---|
|
| 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 on WebGPU |
|
| 44 |
+
| **Strengths** | Placing objects (left of, on top of), binding colours to objects, faces, styles, flat logos, long prompts |
|
| 45 |
+
| **Weaknesses** | Exact text, counts above three, negation, anything above 256 px; not yet converged |
|
| 46 |
+
| **Licence** | MIT, for code and weights |
|
| 47 |
+
| **Status** | Research preview. A technical report and system card accompany this release. |
|
| 48 |
|
| 49 |
- **Generator:** 191M-parameter *thinker-steered convolutional flow model* (FCDM-T2). A small recurrent transformer
|
| 50 |
(the thinker) reads the prompt and plans a 16 × 16 region map. That map steers a convolutional U-Net working on
|
|
|
|
| 57 |
TAESD. The pipeline's default decoder is the full SD-VAE (49.5M), which makes it **308.5M**. The VAE encoder is
|
| 58 |
only needed for training.
|
| 59 |
- **Data:** [FLUX-Reason-6M](https://huggingface.co/datasets/LucasFang/FLUX-Reason-6M), 5,654,461 of its 5,890,279 images, each with up to 8
|
| 60 |
+
English caption fields. **Compute:** Arrhenius (EuroHPC, NAISS, Sweden), NVIDIA GH200.
|
| 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
|
|
|
|
| 99 |
On an RTX 4060, one image takes 1.9 s (2.9 s with `autoguide`). At 191M parameters, kernel-launch overhead
|
| 100 |
costs more time than the arithmetic, and CUDA graphs remove most of it.
|
| 101 |
|
| 102 |
+
## Why Agate
|
| 103 |
+
|
| 104 |
+
**Why we built it.** [LogoLabs](https://logolabs.org) builds AI logo generation. Agate is our attempt at a better
|
| 105 |
+
*small* model for icon generation. We want one that places things where you ask, keeps colours bound to the right
|
| 106 |
+
objects, runs on a consumer GPU, and can be trained from scratch on a research budget. This preview is the
|
| 107 |
+
general-purpose base model; it is not yet specialised for icons.
|
| 108 |
+
|
| 109 |
+
**It trains ultra-fast.** The whole training took 144.7 GH200-hours, and the model was trained from scratch in under
|
| 110 |
+
13 hours of wall-clock time:
|
| 111 |
+
- about 5 h 15 min on 16 GPUs (4 nodes × 4) for phases 1 and 2;
|
| 112 |
+
- 7 h 30 min on 8 GPUs (2 nodes × 4) overnight for the caption phase.
|
| 113 |
+
|
| 114 |
+
Retraining from scratch, on your own data or for a new domain, is an overnight job rather than a research
|
| 115 |
+
programme. More of our work is on
|
| 116 |
+
[our Hugging Face page](https://huggingface.co/Logolabs): the Inkvec vectoriser and the LogoBrief-10K dataset.
|
| 117 |
+
|
| 118 |
+
### Where a small model wins
|
| 119 |
+
|
| 120 |
+
Large text-to-image models make better single images. Agate is for the jobs where their size is the problem:
|
| 121 |
+
too slow, too expensive per image, too heavy to ship, or too costly to retrain.
|
| 122 |
+
|
| 123 |
+
| Use | Why a 260M model fits | Why a multi-billion model struggles |
|
| 124 |
+
|---|---|---|
|
| 125 |
+
| **Runs on the device** | About 1 GB of weights in fp32 (half that in fp16); 1.9 s per image on an RTX 4060; small enough for a laptop, and it also runs in the browser on WebGPU. Prompts and images never leave the machine. | Needs a datacentre GPU or a paid API, so every prompt goes to a server. |
|
| 126 |
+
| **Previews while you type** | At the measured ~0.04 s per step, an 8-step draft takes about a third of a second, so a design tool can redraw on every keystroke. | Seconds per image make live preview impractical and expensive at scale. |
|
| 127 |
+
| **Generating in bulk** | About 1,900 images an hour on one consumer GPU: icon sets, variations, synthetic training data, A/B candidates. | At API prices or datacentre-GPU time, millions of images cost real money. |
|
| 128 |
+
| **A model per customer or domain** | A full retrain from scratch is an overnight run (under 13 h), and fine-tunes are cheaper still. A brand, an icon style or a product catalogue can have its own model. | Fine-tuning is costly; training from scratch is out of reach for almost everyone. |
|
| 129 |
+
| **Research on a budget** | Reinforcement learning, reward models, new samplers and architecture ablations cost GPU-hours, not GPU-years. Our whole project, every model and benchmark included, cost 323 GPU-hours. | Every experiment costs thousands of GPU-hours, so few groups can run them. |
|
| 130 |
+
| **Layout-first pipelines** | Strong on placement and colour binding (GenEval position 0.22 vs SD 1.5's 0.01), so it can sketch a composition cheaply. A larger model or a vectoriser such as [Inkvec](https://huggingface.co/spaces/Logolabs/inkvec) then finishes it. | Using a large model for the rough draft wastes most of its cost. |
|
| 131 |
+
| **Offline, edge and sovereign deployments** | MIT licence, no gated dependencies, trainable on a single node. It can run air-gapped and be retrained on your own infrastructure. | Licences, gated weights and hardware needs often rule these out. |
|
| 132 |
+
|
| 133 |
+
For LogoLabs the target is icon and logo generation: many candidates per brief, fast iteration, and per-client
|
| 134 |
+
styles. That work rewards a small, fast, retrainable model over a large one.
|
| 135 |
+
|
| 136 |
+
**A preview: not yet converged.** Agate is a preview checkpoint, and it has not finished learning. Every
|
| 137 |
+
benchmark was still rising when training stopped:
|
| 138 |
+
- GenEval went from 0.505 at epoch 16 to 0.533 at step 82.8k and 0.535 at the end.
|
| 139 |
+
- Qwen-Image-Bench went from 24.8 to 27.8 and then 28.4.
|
| 140 |
+
- The loss was still falling.
|
| 141 |
+
|
| 142 |
+
We expect roughly doubling the training, about 145 more GPU-hours, to bring very significant gains. That run is
|
| 143 |
+
the next step.
|
| 144 |
+
|
| 145 |
## Results
|
| 146 |
|
| 147 |
All scores below were measured by us, with the same seeds, sampler and scorer for every model. Each model
|
|
|
|
| 235 |
| **Agate** | **28.4** | 26.3 | 34.2 | 28.9 | 36.8 | 15.5 |
|
| 236 |
| Stable Diffusion 1.5 | **28.9** | 37.5 | 28.2 | 25.1 | 39.3 | 14.3 |
|
| 237 |
|
| 238 |
+
<p align="center"><img src="assets/pareto.png" alt="Qwen-Image-Bench total against full model size, with the Pareto frontier" width="100%"></p>
|
| 239 |
|
| 240 |
<p align="center"><img src="assets/judge_detail.png" alt="Every Qwen-Image-Bench area for Agate and the open models" width="100%"></p>
|
| 241 |
|
assets/hero_samples.png
ADDED
|
Git LFS Details
|