- miniDiffusion là dự án tái triển khai mô hình Stable Diffusion 3.5 bằng PyTorch thuần với ít phụ thuộc nhất, được thiết kế cho mục đích giáo dục, thử nghiệm và hacking
- Toàn bộ phần triển khai có quy mô khoảng 2.800 dòng, từ VAE đến DiT, các script huấn luyện và dataset, theo hướng tối giản hóa lượng mã cần thiết để tái tạo Stable Diffusion 3.5 từ đầu
- Mã mô hình chính nằm trong
dit.py, dit_components.py, attention.py, với Joint Attention, embedding, chuẩn hóa, patch embedding và các hàm phụ trợ cho DiT được tách riêng
- Các thành phần bao gồm VAE, CLIP, bộ mã hóa văn bản T5, tokenizer Byte-Pair và Unigram, Multi-Modal Diffusion Transformer, Flow-Matching Euler Scheduler, Logit-Normal Sampling
- Kho lưu trữ vẫn còn các tính năng thử nghiệm và cần thêm kiểm thử; được cung cấp theo MIT License cho mục đích giáo dục và thử nghiệm
Mục tiêu và phạm vi của miniDiffusion
- miniDiffusion là dự án triển khai lại mô hình Stable Diffusion 3.5 bằng PyTorch thuần với ít phụ thuộc nhất
- Được tạo ra cho mục đích giáo dục, thử nghiệm và hacking, tập trung vào việc giảm lượng mã cần thiết để tái tạo Stable Diffusion 3.5 từ đầu
- Quy mô triển khai khoảng 2.800 dòng, bao gồm VAE, DiT, script huấn luyện và script dataset
Cấu trúc các tệp chính
- Mã cốt lõi của mô hình Stable Diffusion nằm trong các tệp sau
dit.py: mã mô hình DiT chính
dit_components.py: embedding, chuẩn hóa, patch embedding, hàm phụ trợ cho DiT
attention.py: triển khai Joint Attention
noise.py chứa Euler Scheduler để giải ODE của Rectified Flow
- Bộ mã hóa văn bản và tokenizer được tổ chức thành các tệp riêng
t5_encoder.py: bộ mã hóa văn bản T5
clip.py: triển khai CLIP
tokenizer.py: tokenizer T5 và CLIP
metrics.py triển khai Fréchet Inception Distance(FID)
- Mã hỗ trợ huấn luyện và mã chuyển đổi dữ liệu nằm trong các tệp sau
common.py: hàm phụ trợ cho huấn luyện
common_ds.py: triển khai iterable dataset để chuyển dữ liệu ảnh thành dữ liệu dùng cho huấn luyện DiT
Thư mục và checkpoint
- Thư mục
model lưu checkpoint mô hình và log sau khi huấn luyện
- Thư mục
encoders lưu checkpoint của các mô-đun khác như VAE, CLIP
Các thành phần được bao gồm
- Mô-đun cốt lõi cho sinh ảnh
-
VAE
-
CLIP
-
T5 Text Encoders
- Tokenizer Byte-Pair và Unigram
- Các thành phần liên quan đến Stable Diffusion 3
- Mô hình Multi-Modal Diffusion Transformer
- Flow-Matching Euler Scheduler
- Logit-Normal Sampling
- Joint Attention
- Bao gồm các script huấn luyện và suy luận cho Stable Diffusion 3
Cài đặt và chuẩn bị trước khi sử dụng
git clone "https://github.com/yousef-rafat/miniDiffusion"
pip install -r requirements.txt
- Trước khi cài đặt checkpoint mô hình, cần thêm Hugging Face Token vào
get_checkpoints.py
python3 encoders/get_checkpoints.py
Trạng thái và giấy phép
- Kho lưu trữ vẫn còn các tính năng thử nghiệm và cần thêm kiểm thử
- Dự án được cung cấp theo MIT License và phục vụ mục đích giáo dục, thử nghiệm
Chưa có bình luận nào.