• llm.c का उपयोग करके GPT-2 (124M) मॉडल को 90 मिनट में $20 में पुन: निर्मित करने का तरीका समझाया गया है
  • GPT-2 (124M), OpenAI द्वारा 2019 में जारी किया गया सबसे छोटा मॉडल है
  • Lambda में 8X A100 80GB SXM नोड का उपयोग करने पर लगभग $14 प्रति घंटा, कुल लागत लगभग $20 आती है
    • एकल GPU पर भी ट्रेनिंग संभव है, लेकिन इसमें अधिक समय लगता है (4-24 घंटे)

परिणाम तुलना

  • FineWeb validation dataset पर OpenAI द्वारा जारी checkpoint से बेहतर प्रदर्शन दिखाता है
    • हालांकि, GPT-2 को WebText पर प्रशिक्षित किया गया था, इसलिए यह पूरी तरह निष्पक्ष तुलना नहीं है
  • HellaSwag accuracy भी मापी गई, जिसमें GPT-3 Small(124M) के 33.7 के करीब 29.9 हासिल किया गया
    • GPT-2(124M) के 29.4 को पहले ही पार कर लिया गया है
    • हालांकि, यहां 10B tokens पर ट्रेनिंग की गई थी, जबकि GPT-3 को 300B tokens पर ट्रेनिंग दी गई थी

न्यूनतम वातावरण सेटअप

  • GPU आवश्यक है (Lambda labs की सिफारिश)
  • Linux x86 64bit Ubuntu 22.04 with CUDA 12 के आधार पर गाइड
  • miniconda इंस्टॉल करने के बाद PyTorch nightly version इंस्टॉल करना (वैकल्पिक)
  • tokenizer के लिए आवश्यक पैकेज इंस्टॉल करना
  • गति के लिए cuDNN इंस्टॉल करना (वैकल्पिक)
  • कई GPU उपयोग करने पर MPI इंस्टॉल करना (वैकल्पिक)
  • FineWeb 10B tokens dataset को preprocess करना (~1 घंटे का समय)
  • llm.c को compile करना (mixed precision, cuDNN FlashAttention का उपयोग)

ट्रेनिंग चलाना

  • single GPU उपयोग करने पर उदाहरण command
  • multi GPU (8) उपयोग करने पर mpirun से चलाना
  • मुख्य arguments की व्याख्या
    • -i, -j : training/validation data path
    • -o : logs, checkpoint save path
    • -e : model initialization (depth 12 GPT-2)
    • -b : microbatch size (memory कम होने पर घटाएं)
    • -t : अधिकतम sequence length
    • -d : कुल batch size (GPT-3 paper संदर्भ)
    • -r : Recompute सेटिंग (memory बचत)
    • -z : ZeRO-1 (optimizer state sharding)
    • अन्य weight decay, learning rate, checkpoint interval आदि सेटिंग्स

ट्रेनिंग प्रक्रिया

  • 10B training tokens, 0.5M batch size के आधार पर लगभग 20K steps अपेक्षित हैं
  • A100 40GB PCIe GPU के आधार पर प्रति step लगने वाला समय, MFU, token throughput आउटपुट होता है
  • ट्रेनिंग की शुरुआत में gradient exploding की समस्या होती है, लेकिन clipping से इसका समाधान किया गया

visualization

  • log file को parse करके training curve visualize करने के लिए Jupyter notebook प्रदान की गई है

Tokenizer

  • integer tokens को string में बदलने के लिए आवश्यक
  • PyTorch script से बनाया जा सकता है

Sampling

  • फिलहाल inference के लिए optimize नहीं किया गया है
  • थोड़े से code बदलाव से unconditional/conditional sampling संभव है

कोड संरचना

  • train_gpt2.cu फ़ाइल में अधिकांश implementation शामिल है
  • शुरुआती 500 lines में MPI, NCCL, cuDNN, cuBLAS आदि का सेटअप है
  • उसके बाद 1500 lines में Transformer का forward/backward है
  • अगली 1000 lines में GPT-2 मॉडल implementation है
  • अंतिम 1000 lines में training loop, argument parsing आदि हैं

350M मॉडल

  • 10B tokens पर्याप्त नहीं हैं और 30B tokens उपयोग किए गए
  • 8X A100 80GB पर 14 घंटे लगे, लागत लगभग $200 रही

FAQ

  • क्या sampling संभव है: हां, लेकिन यह अक्षम है.
  • क्या chat संभव है: फिलहाल केवल pretraining संभव है, chat fine-tuning नहीं.
  • multi-node distributed training: संभव है, लेकिन अभी परीक्षण नहीं किया गया है.
  • क्या यह bit-level deterministic है: लगभग deterministic है, लेकिन कुछ kernel patches की आवश्यकता है.
  • क्या FP8 training संभव है: फिलहाल BF16 में ट्रेनिंग हो रही है, FP8 समर्थन जल्द आने वाला है.
  • क्या non-NVIDIA GPU समर्थित हैं: फिलहाल केवल C/CUDA समर्थित है.

GN⁺ की राय

  • GPT-2 आधुनिक LLM का शुरुआती आधार होने के नाते बहुत महत्वपूर्ण मॉडल है. इसके बाद आए GPT-3 या अन्य LLM भी GPT-2 से बहुत अलग नहीं हैं.
  • यह प्रोजेक्ट किसी भी व्यक्ति को GPT-2 स्तर के मॉडल को उचित लागत पर स्वयं ट्रेन करके देखने की सुविधा देता है. LLM की समझ बढ़ाने में यह बहुत मददगार लगता है.
  • हालांकि, यह अभी inference के लिए optimize नहीं है, इसलिए वास्तविक सेवाओं में उपयोग के लिए इसकी सीमाएं हैं. इसे conversational model के रूप में fine-tune करने का समर्थन भी नहीं है.
  • फिलहाल केवल NVIDIA GPU का समर्थन है, लेकिन भविष्य में AMD या Apple Silicon जैसे विभिन्न platforms के समर्थन की उम्मीद है.
  • समान उद्देश्य वाले open source projects में Megatron-LM, DeepSpeed, FairSeq आदि शामिल हैं. इनके अपने-अपने फायदे और सीमाएं हैं, इसलिए उपयोग के अनुसार चुनना बेहतर होगा.
  • LLM development ecosystem को सक्रिय करने के लिहाज़ से यह बहुत उत्साहजनक प्रोजेक्ट है. आगे इससे और अधिक अपेक्षाएं हैं.

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

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