yuanchenyang/smalldiffusion
Simple and readable code for training and sampling from diffusion models
What it solves
smalldiffusion は、拡散モデルやフローモデルの学習とサンプリングのプロセスを簡素化することを目的とした軽量ライブラリです。ゼロから実装する手間を省き、研究者や開発者が新しいモデルやサンプラーを試す際に拡張しやすい、100 行未満のコンパクトなコアを提供します。
How it works
ライブラリは主に 3 つのコンポーネントの相互作用で動作します。
- Data: 学習には PyTorch の
DatasetとDataLoaderを使用します。2D のおもちゃデータセット、ピクセル空間画像、潜在空間画像データセットを標準でサポートしています。 - Model: MLP、U‑Net、Diffusion Transformer(DiT)など様々なアーキテクチャに対応し、スコア予測、フロー予測、データ予測(x0)といったパラメータ化を選択できます。
- Schedule: 学習・サンプリング時に使用するノイズレベル(シグマ)を管理します。LogLinear、DDPM、LDM(Stable Diffusion 方式)、Flow matching など複数のスケジュールが組み込みで利用可能です。
サンプリングは統一された samples() ジェネレータで行われ、gam や mu といったハイパーパラメータを調整することで DDPM、DDIM、その他の高速サンプリングアルゴリズムを実装できます。
Who it’s for
小〜中規模データセット(CIFAR‑10 や FashionMNIST など)での実験や学習、あるいは事前学習済み Hugging Face の diffusers モデルからのサンプリングを行いたい研究者・開発者向けです。
Highlights
- Minimalist Core: 学習とサンプリングのロジックは 100 行未満に収められています。
- Versatile Model Support: U‑Net と Diffusion Transformer(DiT)の実装を含みます。
- Flexible Parameterizations: スコア、フロー、データ予測の目的をサポート。
- Pretrained Model Integration: ライブラリのサンプラーを事前学習済み Stable Diffusion モデルと組み合わせて使用できるラッパーを提供。
- High Performance: Flow matching を用いた ImageNet 256×256 の学習例では、無条件 FID が約 27 と高い性能を示します。