- miniDiffusion は、Stable Diffusion 3.5モデルを最小限の依存関係を持つ純粋なPyTorchで再実装したプロジェクトであり、教育・実験・ハッキング目的に合わせて設計されている
- 全体実装はVAEからDiT、学習およびデータセットスクリプトまで約 2,800行 規模で、Stable Diffusion 3.5をゼロから再現するために必要なコードを最小化する方針となっている
- 主要なモデルコードは
dit.py、dit_components.py、attention.py にあり、Joint Attention、埋め込み、正規化、パッチ埋め込み、DiT補助関数に分かれている
- 構成要素には VAE、CLIP、T5テキストエンコーダ、Byte-PairおよびUnigramトークナイザ、Multi-Modal Diffusion Transformer、Flow-Matching Euler Scheduler、Logit-Normal Sampling が含まれる
- リポジトリにはまだ 実験的機能 があり、さらに多くのテストが必要で、MIT License の下で教育および実験目的で提供されている
miniDiffusionの目的と範囲
- miniDiffusion は、Stable Diffusion 3.5モデルを純粋なPyTorchと最小限の依存関係で再実装したプロジェクトである
- 教育、実験、ハッキング目的に合わせて作られており、Stable Diffusion 3.5をゼロから再現するのに必要なコード量を減らすことに焦点を当てている
- 実装規模は、VAE、DiT、学習スクリプト、データセットスクリプトまで含めて約 2,800行 である
主要ファイル構成
- Stable Diffusionモデルの中核コードは次のファイルにある
dit.py: メインの DiTモデル コード
dit_components.py: 埋め込み、正規化、パッチ埋め込み、DiT補助関数
attention.py: Joint Attention の実装
noise.py には、Rectified Flow のODEを解くための Euler Scheduler がある
- テキストエンコーダとトークナイザは別ファイルで構成されている
t5_encoder.py: T5テキストエンコーダ
clip.py: CLIP実装
tokenizer.py: T5とCLIPのトークナイザ
metrics.py は Fréchet Inception Distance(FID) を実装している
- 学習補助コードとデータ変換コードは次のファイルにある
common.py: 学習用補助関数
common_ds.py: 画像データをDiT学習用データに変換する iterable dataset の実装
フォルダとチェックポイント
model フォルダは学習後のモデルチェックポイントとログを保存する
encoders フォルダはVAEやCLIPのような他モジュールのチェックポイントを保存する
含まれる構成要素
- 画像生成の中核モジュール
-
VAE
-
CLIP
-
T5 Text Encoders
- Byte-PairおよびUnigramトークナイザ
- Stable Diffusion 3関連の構成要素
- Multi-Modal Diffusion Transformer Model
- Flow-Matching Euler Scheduler
- Logit-Normal Sampling
- Joint Attention
- Stable Diffusion 3向けの学習および推論スクリプトを含む
インストールと使用前の準備
git clone "https://github.com/yousef-rafat/miniDiffusion"
pip install -r requirements.txt
- モデルチェックポイントをインストールする前に、
get_checkpoints.py に Hugging Face Token を追加する必要がある
python3 encoders/get_checkpoints.py
状態とライセンス
- リポジトリにはまだ 実験的機能 があり、さらに多くのテストが必要である
- プロジェクトは MIT License で提供され、教育および実験目的となっている
まだコメントはありません。