CoolFace
Modelpublic

Glint-Research/Anthos-1

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
12likes35downloads
Model Card

<p align="center"> <img src="GlintResearchModelCardHeader.jpg" width="800"> </p>

<div align="center"> <a href="https://huggingface.co/Glint-Research" target="blank"><img alt="Hugging Face" src="https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Glint%20Research-ffc107?color=ffc108&logoColor=white"/></a> <a href="https://discord.gg/y2jTct6Cxv" target="blank"><img alt="Discord" src="https://img.shields.io/badge/Discord-Join%20the%20Discord-white?logo=discord&logoColor=white"/></a> <a href="https://ko-fi.com/F1F31YAC4I" target="_blank"><img alt="Ko-fi" src="https://img.shields.io/badge/Ko--fi-Support%20Us-FF5E5B?logo=ko-fi&logoColor=white"/></a> </div>


Anthos

Anthos is a class-conditional latent diffusion model trained with rectified flow matching on the Oxford Flowers 102 dataset. It generates 256x256 images across 102 flower categories using a DiT-Nano/2 architecture of approximately 984K parameters. It is a research artifact: a minimal, transparent, end-to-end training and sampling demonstration.

Notice Anthos is a research prototype. It is not Stable Diffusion, does not include a text encoder, safety filter, or upscaler, and operates exclusively over the 102 Oxford Flowers class vocabulary. Output quality reflects the scale of the model. Use accordingly.

At a Glance

PropertyValue
Parameters983,808
ArchitectureDiT-Nano/2 (6 blocks, hidden dim 96, 4 heads, patch size 2, SwiGLU)
Training Steps120,000
Training Duration~18 minutes on an RTX Pro 6000
Precisionbfloat16
Output Resolution256 x 256
Latent Shape32 x 32 x 4
Number of Classes102
Final Loss1.843 → 0.880 (flow-matching MSE)
SamplerHeun, 50 steps, CFG scale 4.0

Background

The name derives from the Greek word for flower. The model was built as a sanity check on a rectified flow training loop and turned into a functional flower generator in the process.

Rather than predicting noise, the network predicts the velocity field transporting a sample from Gaussian noise to the data distribution. The architecture is a standard DiT with adaLN-Zero conditioning, SwiGLU MLPs, and sinusoidal 2D positional embeddings. The latent space is provided by the Stability AI VAE (stabilityai/sd-vae-ft-ema), which compresses 256x256 images to 32x32x4 latents at an 8x spatial downsampling factor.

The entire Oxford Flowers 102 dataset, including train, validation, and test splits (8,189 images), was encoded once through the VAE, augmented with horizontal flips to yield 16,378 latents, and stored in VRAM as BF16 channels-last tensors. A custom GPULatentLoader shuffles and batches directly from VRAM, reducing each training step to a forward pass and an optimizer update.

At approximately 111 iterations per second, 120,000 steps completed in under 18 minutes. Loss decreased monotonically from 1.843 to 0.880.


Sample Output

[image]

4x4 class-conditional grid, step 120,000, CFG scale 4.0, Heun sampler, 50 steps. Each tile corresponds to a distinct Oxford Flowers 102 class.


Model Specification

ParameterValue
ArchitectureDiffusion Transformer (DiT)
VariantDiT-Nano/2
Depth6 blocks
Hidden Size96
Attention Heads4 (head dimension 24)
Patch Size2
Token Grid16 x 16 = 256 tokens
MLP TypeSwiGLU, expansion ratio 2.0
NormalizationLayerNorm; adaLN-Zero on block norms
AttentionQK-LayerNorm, scaled dot-product attention
ConditioningAdaLN-Zero on timestep and class label
Class Dropout Rate0.1
Class Embedding102 classes + 1 null token
Positional Embedding2D sinusoidal, frozen
VAEstabilityai/sd-vae-ft-ema, 8x downsample, 4 channels
VAE Scaling Factor0.18215
Output Channels4 (velocity prediction; no learned sigma)

Training Details

ParameterValue
DatasetOxford Flowers 102 (train + val + test, 8,189 images)
AugmentationIdentity + horizontal flip = 16,378 latents
Latent StorageFull dataset in VRAM, channels-last BF16
Batch Size256
Gradient Accumulation1
OptimizerAdamW, beta=(0.9, 0.95), weight decay=0, fused
Learning Rate1e-4, 1,000-step linear warmup, then constant
Gradient Clipping1.0
EMA Decay0.9999
Timestep SamplerLogit-normal (mu=0, sigma=1)
Loss FunctionFlow-matching MSE on velocity field
CFG Dropout0.1 (10% of labels replaced with null token)
PrecisionBF16 autocast, FP32 reductions
Compilationtorch.compile(mode="max-autotune")
HardwareRTX Pro 6000, 96 GB VRAM, sm_120
Throughput~111 steps/second
Total Wall Time1,078 seconds for 120,000 steps

Loss Curve

Loss was logged throughout training. Selected values are reported below. No FID or Inception Score was computed; evaluation was performed by visual inspection of sample grids saved every 2,000 steps.

StepLoss
01.843
1,0001.710
10,0001.310
50,0001.040
100,0000.910
120,0000.880

Usage

Python API

python
from pipeline import AnthosPipeline

pipe = AnthosPipeline(repo_dir=".")

# Generate one image per class across all 102 classes
imgs = pipe(classes="all", seed=0)
imgs[0].save("out.png")

# Generate images for specific classes by name or ID
imgs = pipe("rose,sunflower,daffodil", n_per_class=2, seed=42)
for i, img in enumerate(imgs):
    img.save(f"flower_{i:02d}.png")

# Fine-grained sampler control
imgs = pipe(73, steps=100, cfg_scale=2.5, sampler="euler", seed=7)
imgs[0].save("class_73.png")

Command-Line Interface

bash
python pipeline.py "rose,sunflower,daffodil" --n-per-class 2 --seed 42 --out out.png

Gradio Demo

An interactive demo is available at Glint-Research/Anthos-1.


Repository Contents

FileDescription
model.safetensorsEMA weights, 3.95 MB
config.jsonArchitecture and sampling configuration
modeling.pyDiT implementation and sampler definitions
pipeline.pyAnthosPipeline inference wrapper
classes.txt102 class names in id\tname format
convert_checkpoint.pyConverts final.pt training checkpoint to safetensors
sample_grid.png4x4 sample grid at step 120,000
requirements.txtPython dependencies

Limitations

  • Fixed vocabulary. The model conditions on one of 102 discrete class labels. Free-form text prompts are not supported.
  • Fixed resolution. Output is 256x256. Higher-resolution output requires an external upscaler.
  • Scale constraints. At 984K parameters, the model cannot match the fidelity of large-scale generative models. Fine structure, particularly complex petal arrangements and unusual stamen geometry, is occasionally incorrect.
  • Class imbalance. Oxford Flowers 102 is not class-balanced, and no rebalancing was applied. Several classes, including Barberton daisy and Mexican petunia, exhibit noticeably lower output quality.
  • No quantitative evaluation. FID and Inception Score were not computed. Assessment is based on visual inspection only.
  • Not for production or publication. This model is a research prototype and should not be used in production systems or as a primary source in academic or journalistic work.

Citation

bibtex
@misc{anthos2026,
  author    = {Glint Research},
  title     = {Anthos: A 984K-Parameter Class-Conditional DiT on Oxford Flowers 102},
  year      = {2026},
  publisher = {Hugging Face},
  url       = {https://huggingface.co/Glint-Research/Anthos}
}

<p align="center"> Built by <a href="https://huggingface.co/Glint-Research">Glint Research</a> </p>