- miniDiffusion เป็นโปรเจ็กต์ที่นำโมเดล Stable Diffusion 3.5 มาสร้างใหม่ด้วย PyTorch ล้วนและมี dependency น้อยที่สุด โดยออกแบบมาสำหรับการเรียนรู้ การทดลอง และการแฮ็ก
- การติดตั้งใช้งานทั้งหมดมีขนาดราว 2,800 บรรทัด ตั้งแต่ VAE, DiT ไปจนถึงสคริปต์ฝึกและสคริปต์ชุดข้อมูล โดยมุ่งลดโค้ดที่จำเป็นต่อการทำซ้ำ Stable Diffusion 3.5 ตั้งแต่ต้นให้น้อยที่สุด
- โค้ดโมเดลหลักอยู่ใน
dit.py, dit_components.py, attention.py โดยแยก Joint Attention, embedding, normalization, patch embedding และฟังก์ชันช่วยของ DiT ออกจากกัน
- องค์ประกอบที่มีรวมถึง VAE, CLIP, ตัวเข้ารหัสข้อความ T5, tokenizer แบบ Byte-Pair และ Unigram, Multi-Modal Diffusion Transformer, Flow-Matching Euler Scheduler และ Logit-Normal Sampling
- ในคลังเก็บยังมี ฟีเจอร์เชิงทดลอง อยู่และยังต้องการการทดสอบเพิ่มเติม โดยเผยแพร่ภายใต้ MIT License เพื่อการศึกษาและการทดลอง
เป้าหมายและขอบเขตของ miniDiffusion
- miniDiffusion เป็นโปรเจ็กต์ที่นำโมเดล Stable Diffusion 3.5 มาสร้างใหม่ด้วย PyTorch ล้วนและมี dependency น้อยที่สุด
- สร้างขึ้นเพื่อการเรียนรู้ การทดลอง และการแฮ็ก โดยเน้นลดปริมาณโค้ดที่จำเป็นต่อการทำซ้ำ Stable Diffusion 3.5 ตั้งแต่ต้น
- ขนาดการติดตั้งใช้งานอยู่ที่ประมาณ 2,800 บรรทัด ครอบคลุมทั้ง VAE, DiT, สคริปต์ฝึก และสคริปต์ชุดข้อมูล
โครงสร้างไฟล์หลัก
- โค้ดแกนหลักของโมเดล Stable Diffusion อยู่ในไฟล์ต่อไปนี้
dit.py: โค้ด โมเดล DiT หลัก
dit_components.py: embedding, normalization, patch embedding และฟังก์ชันช่วยของ DiT
attention.py: การติดตั้งใช้งาน Joint Attention
- ใน
noise.py มี Euler Scheduler สำหรับแก้ ODE ของ Rectified Flow
- ตัวเข้ารหัสข้อความและ tokenizer ถูกแยกไว้เป็นไฟล์ต่างหาก
t5_encoder.py: ตัวเข้ารหัสข้อความ T5
clip.py: การติดตั้งใช้งาน CLIP
tokenizer.py: tokenizer ของ T5 และ CLIP
metrics.py ติดตั้งใช้งาน Fréchet Inception Distance(FID)
- โค้ดช่วยสำหรับการฝึกและโค้ดแปลงข้อมูลอยู่ในไฟล์ต่อไปนี้
common.py: ฟังก์ชันช่วยสำหรับการฝึก
common_ds.py: การติดตั้งใช้งาน iterable dataset ที่แปลงข้อมูลภาพให้เป็นข้อมูลสำหรับฝึก DiT
โฟลเดอร์และเช็กพอยต์
- โฟลเดอร์
model ใช้เก็บเช็กพอยต์โมเดลและล็อกหลังการฝึก
- โฟลเดอร์
encoders ใช้เก็บเช็กพอยต์ของโมดูลอื่น เช่น VAE และ CLIP
องค์ประกอบที่รวมมา
- โมดูลหลักสำหรับการสร้างภาพ
-
VAE
-
CLIP
-
T5 Text Encoders
- tokenizer แบบ Byte-Pair และ Unigram
- องค์ประกอบที่เกี่ยวข้องกับ Stable Diffusion 3
- โมเดล Multi-Modal Diffusion Transformer
- 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
- ก่อนติดตั้งเช็กพอยต์ของโมเดล ต้องเพิ่ม Hugging Face Token ลงใน
get_checkpoints.py
python3 encoders/get_checkpoints.py
สถานะและไลเซนส์
- ในคลังเก็บยังมี ฟีเจอร์เชิงทดลอง อยู่และต้องการการทดสอบเพิ่มเติม
- โปรเจ็กต์เผยแพร่ภายใต้ MIT License เพื่อการศึกษาและการทดลอง
ยังไม่มีความคิดเห็น