नमस्ते, लगभग एक महीने पहले मैंने शुरुआत से एक text Diffusion मॉडल implement करके public किया था। हाल ही में GeekNews देखते हुए अचानक इसका ख़याल आया, इसलिए अब जाकर इसे पोस्ट कर रहा हूँ.


इसे बनाने की प्रेरणा

Andrej Karpathy का MicroGPT देखकर मुझ पर यह प्रभाव पड़ा कि "इतने छोटे code से भी GPT के core को समझाया जा सकता है।" उसी समय मैं Diffusion भी पढ़ना चाहता था, इसलिए दोनों को मिलाकर "अगर उसी तरीके से Diffusion को समझाने वाला code बनाया जाए तो मज़ेदार होगा" इस सोच के साथ यह educational project शुरू किया।


AR vs Diffusion: क्या फ़र्क है?

LLM युग में text generation लगभग पूरी तरह Autoregressive(AR) तरीके से होता है। यानी बाएँ से दाएँ token को एक-एक करके predict किया जाता है।

Discrete Diffusion इसका उल्टा है। इसमें पूरे sequence को एक साथ रखा जाता है, और noise (masking) से उसे धीरे-धीरे restore किया जाता है।

नाम "emma" को उदाहरण के रूप में लें:  
  
Forward (training - noise जोड़ना):  
  t=0 :  e m m a   ← मूल  
  t=25:  e _ m a   ← आंशिक masking  
  t=50:  _ _ m _   ← अधिक masking  
  t=100: _ _ _ _   ← पूरी masking  
  
Reverse (generation - noise हटाना):  
  t=100: _ _ _ _   ← खाली अवस्था से शुरुआत  
  t=75:  _ m _ _   ← जहाँ confidence ज़्यादा है वहाँ से restore  
  t=50:  e m _ a  
  t=0 :  e m m a   ← पूरा  

अगर AR "शब्द को एक-एक अक्षर लिखने" जैसा है, तो Diffusion "crossword puzzle हल करने" के ज़्यादा क़रीब है।


implementation संरचना

तीन version हैं, इसलिए आप कठिनाई के स्तर के अनुसार चुनकर देख सकते हैं।

  • train_minimal.py — 2-layer MLP / केवल NumPy उपयोग (सबसे सरल)
  • train_pure.py — 3-layer MLP + skip connection / केवल NumPy उपयोग
  • train.py — 4-layer Transformer / PyTorch उपयोग

तीनों version एक ही diffusion loop साझा करते हैं। केवल denoiser architecture अलग है।
training data में 32,000 अंग्रेज़ी नाम हैं, और parameters लगभग 170K~239K के स्तर पर हैं।

इसे तुरंत चलाकर देखा जा सकता है:

pip install numpy  # न्यूनतम version  
python train_minimal.py  

feedback और PR का स्वागत है!

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.