smallAI's picture
Add stage-1 decoder + normalization stats for whole-pipeline decoding
1f75ef4 verified
|
Raw
History Blame Contribute Delete
2.96 kB
---
pipeline_tag: unconditional-image-generation
tags:
- diffusion-transformer
- imagenet
- registers
- outlier-tokens
---
# DSR β€” RAE-DiT-XL ImageNet-256 reference checkpoints
Stage-2 diffusion-transformer checkpoints accompanying
**[DSR: Dual-Stage Registers](https://github.com/a-little-hoof/DSR)**
(*Taming Outlier Tokens in Diffusion Transformers*), released so the outlier-token
visualizations can be reproduced without retraining.
Both are EMA weights of a **DiT-XL** (depth 28, hidden 1152, 16 heads, patch 1,
`in_channels` 768) operating in the SigLIP2-B RAE latent space (16Γ—16Γ—768,
ImageNet-256 class-conditional), matching the DSR repo's
`configs/stage2/sampling/ImageNet256/DiT-XL_SigLIP2-B_data_lognormal.yaml`.
| File | Model | Training config (DSR repo) | Notes |
|---|---|---|---|
| `dit_xl_siglip2b_lognormal_ema.pt` | baseline, no registers | `DiT-XL_SigLIP2-B_data_lognormal` | full training run |
| `dit_xl_siglip2b_lognormal_in_context_36_ep80_ema.pt` | + 36 in-context diffusion registers at block 8 | `*_data_lognormal-in_context_36` | **epoch-80 snapshot** (early): samples look under-trained; intended for comparing token-norm structure, where the register effect is already fully developed |
## Usage
The DSR notebook [`reproduce_outlier_tokens.ipynb`](https://github.com/a-little-hoof/DSR)
downloads these automatically when no local checkpoint is found. Manual loading:
```python
import torch
from huggingface_hub import hf_hub_download
path = hf_hub_download("smallAI/DSR-DiT-XL-ImageNet256",
"dit_xl_siglip2b_lognormal_ema.pt")
state_dict = torch.load(path, map_location="cpu", weights_only=True)
# build LightningDiT from the DSR repo's sampling config, then:
# model.load_state_dict(state_dict, strict=True)
```
Both files are plain `state_dict`s (no optimizer state) and load with
`torch.load(..., weights_only=True)`.
## What they demonstrate
Sampling the baseline while recording per-token L2 norms at every block shows outlier
tokens β€” max/median patch-token norm rising to ~20Γ— in blocks ~14–24, at fixed spatial
positions shared across samples. In the register model the patch tokens stay near-flat
and the 36 register tokens carry the outlier mass instead. See the DSR repository for
the full method and the notebook that produces these figures.
## License / intended use
Released for research reproducibility. The models were trained on ImageNet-1k; use of
these weights must comply with the ImageNet terms of access.
## Stage-1 artifacts (for pixel-space decoding)
Mirrors of the stage-1 release linked from the DSR README (Google Drive), needed only
for the notebook's whole-pipeline figure (encode β†’ noise β†’ DiT β†’ decode):
| File | What |
|---|---|
| `rae_decoder_vitxl_siglip2b_256.pt` | RAE ViT-XL decoder for the SigLIP2-B latent space (ImageNet-256) |
| `rae_stats_siglip2b_imagenet1k.pt` | Per-channel latent normalization statistics (`mean` / `var`) |