इस प्रोजेक्ट के बारे में

## LLM को शुरू से प्रशिक्षित करें यह रिपोजिटरी आपके स्वयं के बड़े भाषा मॉडल (LLM) को प्रशिक्षित करने के लिए एक सीधा, अंत-से-अंत तरीका प्रदान करती है, जो कच्चे डेटा को डाउनलोड करने से लेकर टेक्स्ट उत्पन्न करने तक है। इसे Fareed Khan द्वारा बनाया गया है और यह "Attention is All You Need" पेपर के Transformer आर्किटेक्चर पर आधारित है। यह परियोजना छात्रों, डेवलपर्स और शोधकर्ताओं के लिए सुलभ होने के लिए डिज़ाइन की गई है, जिसमें हर एल्गोरिदम को सादे PyTorch में शुरू से लागू किया गया है (बिना `trl`, `peft`, या `transformers` जैसी लाइब्रेरी का उपयोग किए)। ### मुख्य पाइपलाइन रिपोजिटरी आपको एक पूर्ण LLM प्रशिक्षण यात्रा के माध्यम से मार्गदर्शन करती है: ``` कच्चा टेक्स्ट -> टोकन -> एक Transformer -> अगला-टोकन हानि -> एक बेस मॉडल बेस मॉडल -> SFT -> रिवॉर्ड मॉडल -> {PPO, DPO} -> GRPO -> मूल्यांकन और चैट ``` ### मुख्य विशेषताएं - **शुरू से कार्यान्वयन**: सभी मॉडल और एल्गोरिदम PyTorch में हाथ से लिखे गए हैं, जो अंतर्निहित तंत्रों की गहरी समझ प्रदान करते हैं। - **चरण-दर-चरण मार्गदर्शिका**: README और कोड एक तार्किक पथ का पालन करने के लिए संरचित हैं, स्पष्ट स्पष्टीकरण और कोड ब्लॉक के साथ। - **कई प्रशिक्षण चरण**: प्रीट्रेनिंग, पर्यवेक्षित फाइन-ट्यूनिंग (SFT), रिवॉर्ड मॉडल प्रशिक्षण, और DPO, PPO, GRPO जैसे उन्नत सुदृढ़ीकरण सीखने के तरीकों को शामिल करता है। - **व्यावहारिक और लचीला**: सीमित हार्डवेयर पर बड़े मॉडल को प्रशिक्षित करने के लिए वैकल्पिक मेमोरी-बचत सुविधाएं (AMP, ग्रेडिएंट चेकपॉइंटिंग, ग्रेडिएंट संचय) शामिल हैं। - **व्यापक उपकरण**: डेटा तैयार करने, प्रशिक्षण, मूल्यांकन और निगरानी के लिए Streamlit नियंत्रण पैनल के लिए स्क्रिप्ट शामिल हैं। ### कोड संरचना रिपोजिटरी स्पष्ट मॉड्यूल में व्यवस्थित है: - `src/models/`: छोटे, पुन: प्रयोज्य घटकों (MLP, attention, blocks) से निर्मित Transformer मॉडल शामिल है। - `src/post_training/`: SFT, रिवॉर्ड मॉडल, PPO, DPO, GRPO, मूल्यांकन और अनुमान लागू करता है। - `scripts/`: पाइपलाइन के प्रत्येक चरण के लिए सभी चलाने योग्य स्क्रिप्ट शामिल हैं। - `config/` और `configs/`: मॉडल हाइपरपैरामीटर और प्रशिक्षण सेटिंग्स के लिए कॉन्फ़िगरेशन फ़ाइलें (Python और JSON)। - `data_loader/`: विभिन्न डेटा प्रकारों के लिए बैच इटरेटर। - `ui/`: मॉडल के साथ बातचीत और निगरानी के लिए एक Streamlit नियंत्रण पैनल। - `docs/`: सिद्धांत और आरेखों के साथ एक दस्तावेज़ीकरण साइट। ### आरंभ करना 1. **क्लोन और इंस्टॉल करें**: रिपोजिटरी को क्लोन करें और `pip install -e .` का उपयोग करके इसे संपादन योग्य मोड में स्थापित करें। विशिष्ट सुविधाओं (प्रशिक्षण, UI, दस्तावेज़) के लिए वैकल्पिक अतिरिक्त उपलब्ध हैं। 2. **डेटा तैयार करें**: The Pile (प्रीट्रेनिंग के लिए), Alpaca, Dolly, और GSM8K (निर्देश ट्यूनिंग के लिए), और Anthropic HH-RLHF (प्राथमिकता सीखने के लिए) जैसे डेटासेट को टोकनाइज़ करने के लिए प्रदान की गई स्क्रिप्ट का उपयोग करें। 3. **मॉडल बनाएं और प्रशिक्षित करें**: `scripts/train_transformer.py` का उपयोग करके एक छोटे 13M पैरामीटर मॉडल से शुरू करें या वितरित प्रशिक्षण और ग्रेडिएंट संचय जैसी सुविधाओं के साथ बड़े मॉडल के लिए अधिक उन्नत `scripts/pretrain_base.py` का उपयोग करें। 4. **पोस्ट-ट्रेन और मॉडल का उपयोग करें**: SFT के साथ बेस मॉडल को फाइन-ट्यून करें, एक रिवॉर्ड मॉडल को प्रशिक्षित करें, और मॉडल को मानव प्राथमिकताओं के साथ संरेखित करने के लिए DPO या PPO जैसी RLHF तकनीकों को लागू करें। अंत में, अपने मॉडल का मूल्यांकन और बातचीत करने के लिए मूल्यांकन और चैट स्क्रिप्ट का उपयोग करें। ### उदाहरण आउटपुट यहां एक प्रशिक्षित 13M पैरामीटर मॉडल द्वारा उत्पन्न टेक्स्ट का एक उदाहरण है: ``` In ***1978, The park was returned to the factory-plate that the public share to the lower of the electronic fence that follow from the Station's cities. The Canal of ancient Western nations were confined to the city spot. The villages were directly linked to cities in China that revolt that the US budget and in Odambinais is uncertain and fortune established in rural areas. ``` ### दस्तावेज़ीकरण रिपोजिटरी में अधिक विस्तृत सिद्धांत, आरेख और स्पष्टीकरण के साथ एक दस्तावेज़ीकरण साइट शामिल है, जो README में दिए गए लिंक पर उपलब्ध है।