Stable Diffusion 3.5 को शुद्ध PyTorch में शुरुआत से दोबारा इम्प्लीमेंट किया गया
(github.com/yousef-rafat)- miniDiffusion प्रोजेक्ट एक ओपन सोर्स प्रयास है, जिसमें Stable Diffusion 3.5 मॉडल को केवल PyTorch का उपयोग करके शुरुआत से फिर से इम्प्लीमेंट किया गया है
- इस प्रोजेक्ट की संरचना की खासियत यह है कि इसका फोकस शैक्षणिक उद्देश्य और प्रयोग, हैकिंग पर है
- पूरा कोडबेस लगभग 2800 लाइनों का है, और VAE से लेकर DiT, ट्रेनिंग तथा डेटासेट स्क्रिप्ट्स तक सब कुछ न्यूनतम कोड में व्यवस्थित है
- प्रमुख कॉम्पोनेंट्स में VAE, CLIP, T5 टेक्स्ट एन्कोडर, मल्टीमॉडल डिफ्यूजन ट्रांसफॉर्मर, Joint Attention आदि शामिल हैं
- इसमें अभी भी प्रायोगिक फीचर्स शामिल हैं, इसलिए इसे और अधिक टेस्टिंग की आवश्यकता है
miniDiffusion प्रोजेक्ट परिचय
miniDiffusion एक ओपन सोर्स प्रोजेक्ट है, जो Stable Diffusion 3.5 की मुख्य क्षमताओं को केवल PyTorch के साथ दोबारा इम्प्लीमेंट करता है
मौजूदा Stable Diffusion 3.5 की तुलना में इस प्रोजेक्ट के निम्नलिखित फायदे हैं
- लगभग 2,800 लाइनों का छोटा कोडबेस होने के कारण, यह खुद इसकी संरचना का विश्लेषण करने और सीखने के लिए बेहद उपयुक्त है
- इसे विभिन्न मशीन लर्निंग प्रयोगों और मॉडल हैकिंग में उपयोगी रूप से इस्तेमाल किया जा सकता है
- इसकी dependencies बहुत कम हैं और यह केवल न्यूनतम लाइब्रेरीज़ का उपयोग करता है
मुख्य संरचना और कॉन्फ़िगरेशन फ़ाइलें
- dit.py : मुख्य Stable Diffusion मॉडल इम्प्लीमेंटेशन
- dit_components.py : embedding, normalization, patch embedding, और DiT helper functions
- attention.py : Joint Attention एल्गोरिदम इम्प्लीमेंटेशन
- noise.py : Rectified Flow के लिए Euler ODE scheduler शामिल
- t5_encoder.py, clip.py : T5 और CLIP टेक्स्ट एन्कोडर इम्प्लीमेंटेशन
- tokenizer.py : Byte-Pair और Unigram tokenizer इम्प्लीमेंटेशन
- metrics.py : FID(Fréchet inception distance) मूल्यांकन मेट्रिक इम्प्लीमेंटेशन
- common.py : ट्रेनिंग के लिए आवश्यक helper functions प्रदान करता है
- common_ds.py : इमेज को DiT के ट्रेनिंग डेटा में बदलने वाला iterable dataset इम्प्लीमेंटेशन
- model फ़ोल्डर : ट्रेनिंग के बाद मॉडल checkpoints और logs स्टोर करता है
- encoders फ़ोल्डर : VAE, CLIP आदि अलग मॉड्यूल्स के checkpoints स्टोर करता है
⚠️ प्रायोगिक फीचर्स और टेस्टिंग की आवश्यकता miniDiffusion में अभी भी प्रायोगिक फीचर्स शामिल हैं और इसे अधिक टेस्टिंग की आवश्यकता है
प्रमुख फीचर्स का विस्तृत विन्यास
Core Image Generation Modules
- VAE, CLIP, T5 टेक्स्ट एन्कोडर इम्प्लीमेंटेशन
- Byte-Pair, Unigram tokenizer इम्प्लीमेंटेशन
SD3 Components
- Multi-Modal Diffusion Transformer Model
- Flow-Matching Euler Scheduler इम्प्लीमेंटेशन
- Logit-Normal Sampling
- Joint Attention एल्गोरिदम का उपयोग
मॉडल ट्रेनिंग और इन्फरेंस स्क्रिप्ट्स
- SD3(Stable Diffusion 3.5) के लिए ट्रेनिंग और इन्फरेंस स्क्रिप्ट्स उपलब्ध हैं
लाइसेंस
- यह MIT लाइसेंस के तहत जारी किया गया है और शिक्षा एवं प्रयोगात्मक उद्देश्य के लिए बनाया गया है
इस ओपन सोर्स प्रोजेक्ट का महत्व और फायदे
- Stable Diffusion 3.5 स्तर के आधुनिक इमेज जनरेशन मॉडल आर्किटेक्चर को शुद्ध PyTorch में सीधे सीखना और हैक करना संभव बनाता है
- कोड संक्षिप्त और स्वतंत्र है, इसलिए यह संरचना विश्लेषण/मॉडल ट्यूनिंग/नए एल्गोरिदम शोध के लिए अनुकूलित है
- आधुनिक multimodal, transformer, attention जैसी तकनीकों का सीधे hands-on अभ्यास किया जा सकता है
- कमर्शियल प्रोजेक्ट्स से अलग सुरक्षित रूप से प्रयोग करने के लिए एक आधार प्रदान करता है
1 टिप्पणियां
Hacker News की राय
Flux reference implementation वाकई बहुत minimal structure वाला है, इसलिए अगर किसी की रुचि हो तो उसे एक बार देखना काफ़ी उपयोगी हो सकता है
Flux GitHub
minRF प्रोजेक्ट का फ़ायदा यह है कि यह rectified flow का उपयोग करके छोटे diffusion model को train करते समय आसानी से शुरुआत करने देता है
minRF GitHub
Stable Diffusion 3.5 का reference implementation भी काफ़ी संक्षिप्त तरीके से लिखा गया है, इसलिए संदर्भ के लिए उपयुक्त है
SD 3.5 GitHub
reference implementations अक्सर ठीक से maintain नहीं किए जाते और उनमें bugs भी काफ़ी होते हैं
यह जिज्ञासा होती है कि क्या miniDiffusion प्रोजेक्ट का मतलब Stable Diffusion 3.5 model का उपयोग करना है
संबंधित code
training dataset बहुत छोटा है और इसमें सिर्फ़ fashion से जुड़ी तस्वीरें शामिल हैं
fashion dataset
यह dataset diffusion model की fine-tuning को अभ्यास में देखने के लिए है
यह जानने की जिज्ञासा है कि pure PyTorch इस्तेमाल करने पर NVIDIA के अलावा दूसरे GPU पर performance advantage मिलता है या नहीं, या फिर PyTorch इतना CUDA-optimized है कि दूसरे GPU vendors के लिए प्रतिस्पर्धा करना मुश्किल है
PyTorch, Apple Silicon पर भी काफ़ी अच्छी तरह काम करता है
AMD जैसे non-NVIDIA devices पर भी ML workloads को Vulkan के ज़रिए चलाया जा सकता है
PyTorch का ROCm support बहुत धीमी रफ़्तार से आगे बढ़ रहा है, और काम कर भी जाए तो speed धीमी रहती है
PyTorch, ROCm पर काम तो काफ़ी ठीक करता है, लेकिन क्या वह पूरी तरह "same-tier" स्तर तक अच्छा है, यह स्पष्ट नहीं है
PyTorch code में
के बजाय
जैसा कुछ आज़माने का सुझाव है
यह learners के लिए अच्छा material लगता है
यह जानने की जिज्ञासा है कि क्या कोई tutorial या guide भी है जिसे beginners follow कर सकें
fast.ai में Stable Diffusion को सीधे implement करने वाला एक course है
यह जिज्ञासा है कि क्या Stable Diffusion को बिना license restrictions के इस्तेमाल किया जा सकता है
सच कहूँ तो थोड़ा शर्मनाक लग सकता है, लेकिन यह जिज्ञासा है कि इस repository के आने से पहले और बाद की तुलना में हमने नया क्या हासिल किया
व्यक्तिगत रूप से मैंने model बनाने से दूरी बनाए रखी है और ज़्यादातर सिर्फ़ नतीजों को बाहर से देखा है
मुझे धुंधला-सा लगता था कि पहले से ही PyTorch-आधारित inference/training scripts सार्वजनिक होंगी
कम से कम inference scripts तो model distribution के साथ दी जाती होंगी, और fine-tuning/training scripts भी उपलब्ध होंगी, ऐसा सोचा था
यह स्पष्ट नहीं है कि यह प्रोजेक्ट एक तरह का "clean room" या "dirty room" शैली का rewrite है, या फिर मौजूदा PyTorch code भी CUDA/C-आधारित होकर इतना जटिल था कि pure PyTorch version का महत्व बहुत बड़ा है
कुल मिलाकर मुझे ठीक से समझ नहीं है, इसलिए अगर कोई समझा दे तो अच्छा होगा
इस प्रोजेक्ट की मुख्य value "minimal dependency implementation" है
Stability AI, Stable Diffusion model को Stability AI Community License के तहत distribute करता है, जो MIT की तरह "पूरी तरह स्वतंत्र" नहीं है
SD 3.5 (या किसी भी version) के बारे में सोचते समय, मेरे लिए training process से बने weights ही मुख्य हिस्सा हैं
Ludwig Maximilian University के CompViz group द्वारा जारी original academic source की practical usability को लेकर जिज्ञासा है
यहाँ के diffusion transformer (DiT) implementation में क्या SD 3.5 full version की तरह cross-token attention सही ढंग से implement किया गया है, या code readability के लिए इसे simplify किया गया है, यह जानने की जिज्ञासा है