2 पॉइंट द्वारा GN⁺ 2024-12-13 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • ChatGPT क्लोन का इम्प्लीमेंटेशन

    • यह प्रोग्राम GPT-2 का dependency-free इम्प्लीमेंटेशन है.
    • यह TensorFlow फ़ाइलों से weight matrices और BPE फ़ाइल लोड करता है, और इनपुट को एक सरल byte pair encoder से tokenize करता है.
    • यह एक बेसिक linear algebra package इम्प्लीमेंट करता है, transformer architecture को परिभाषित करता है, transformer inference चलाता है, और BPE decoder से आउटपुट को detokenize करता है.
    • यह लगभग 3000 बाइट C में लिखा गया है.
    • इसे कुशलता से optimize किया गया है ताकि GPT-2 Small मॉडल आधुनिक डिवाइसों पर कुछ सेकंड के भीतर जवाब दे सके.
    • यह KV caching और कुशल matrix multiplication algorithms इम्प्लीमेंट करता है.
  • प्रोग्राम संरचना

    • बेसिक matrix math library (700 बाइट)
    • तेज़ matrix multiplication (300 बाइट)
    • neural network layers (300 बाइट)
    • transformer model (600 बाइट)
    • byte pair encoding (400 बाइट)
    • input/output (200 बाइट)
    • weight loading (300 बाइट)
    • byte pair encoding loading (300 बाइट)
  • ChatGPT और transformer की पृष्ठभूमि

    • ChatGPT एक ऐसा application है जो language model के साथ बातचीत करने देता है.
    • GPT-4 नवीनतम मॉडल है और बेहद प्रभावशाली है.
    • यह C प्रोग्राम 2019 के अपेक्षाकृत कमजोर मॉडल GPT-2 का उपयोग करके ChatGPT के काम करने के तरीके को इम्प्लीमेंट करता है.
    • GPT-2 एक transformer है जो निश्चित आकार की शब्द श्रृंखला को इनपुट के रूप में लेकर अगले शब्द की भविष्यवाणी करता है.
  • C कोड का विवरण

    • matrix math की शुरुआत (700 बाइट)

      • neural network matrix operations से बना होता है.
      • यह न्यूनतम matrix definitions का उपयोग करके matrix library बनाता है.
      • यह common logic को meta routines में निकालने के लिए macros का उपयोग करता है.
    • तेज़ matrix multiplication (300 बाइट)

      • बेसिक matrix multiplication को तीन loops का उपयोग करके इम्प्लीमेंट किया गया है.
      • memory और cache के काम करने के तरीके की वजह से एक ही memory को बार-बार पढ़ना और लिखना अधिक तेज़ होता है.
    • neural network layers (300 बाइट)

      • transformer लिखने के लिए कुछ विशेष neural network layers परिभाषित की गई हैं.
      • यह GELU activation function और causal attention के लिए आवश्यक subdiagonal-setting function जैसी चीज़ें इम्प्लीमेंट करता है.
    • transformer architecture (600 बाइट)

      • transformer को 600 बाइट में इम्प्लीमेंट किया गया है.
      • हर layer में keys, queries और values की गणना की जाती है, attention matrix बनाई जाती है, और परिणामों को जोड़ा जाता है.
    • byte pair encoding (400 बाइट)

      • language model को निश्चित आकार के इनपुट की ज़रूरत होती है, इसलिए tokens बनाने के लिए word pieces का उपयोग किया जाता है.
      • दिए गए शब्द को अलग-अलग characters में बाँटा जाता है, फिर adjacent token pairs को merge किया जाता है.
    • weight loading (300 बाइट)

      • neural network के weights को disk से लोड किया जाता है.
      • weights को 32-bit floating point के रूप में serialize किया गया है.
    • byte pair encoding loading (300 बाइट)

      • byte pair encoding vocabulary को disk से लोड किया जाता है.
      • फ़ाइल फ़ॉर्मेट byte pair encodings की सूची से बना होता है.
  • निष्कर्ष

    • machine learning के दशकों के विकास को कुछ हज़ार बाइट में संकुचित किया जा सकता है.
    • यह एक सरल neural network का उदाहरण है, जिसमें वास्तविक model weights को छोड़कर सब कुछ शामिल है.

1 टिप्पणियां

 
GN⁺ 2024-12-13
Hacker News की राय
  • जब GPT-2 का इस्तेमाल करके किसी दोस्त के साथ बातचीत का सिमुलेशन किया, तो यह मज़ेदार था और कभी-कभी हैरान करने वाली हद तक सटीक भी। सोच रहा हूँ कि GPT-2 और GPT-3 के बीच जो बड़ी छलांग थी, वह बड़े मॉडल, ज़्यादा डेटा, या दोनों की वजह से थी। RLHF बड़ा फ़र्क लाता है, लेकिन बेस GPT-3 मॉडल भी पर्याप्त उदाहरण दिए जाने पर काफ़ी उपयोगी था

  • यह इस बात का अच्छा उदाहरण है कि एक साधारण neural network वास्तव में कितना साधारण हो सकता है। AI वह काला जादू है जिसका इस्तेमाल हम पैसे कमाने के लिए करते हैं

  • मैंने कोड चलाकर नहीं देखा, लेकिन इसके छोटे आकार ने प्रभावित किया। शुरुआती ELISA प्रोग्राम इससे बड़े थे। पिछले 4 सालों में इसे byte स्तर तक फिट करना संभव हो गया है। अगर किसी के पास इस बात का संकेत हो कि जादू कहाँ है, तो समझाना अच्छा होगा। सोच रहा हूँ कि क्या यह GELU function में है या bash script से डाउनलोड किए गए मॉडल में

  • GPT-2 ने मेरी पसंदीदा परीकथा लिखी। लिंक: The Princess, the Fairy Godmother, and the Chest

  • सोच रहा हूँ कि क्या GPT-2 को सच में chat के लिए इस्तेमाल होने लायक fine-tune किया गया है। अगर नहीं, तो इसे ChatGPT clone कहना मुझे कुछ ज़्यादा लगता है

  • LISP हमेशा C से बेहतर नहीं होता। इस बार यह मान्य है। अगर आप code link चूक गए हों, तो यह रहा: C-Chat-GPT-2

  • सोच रहा हूँ कि यह किस hardware पर चल सकता है। क्या यह huggingface के quantized weights का इस्तेमाल कर सकता है, और किन समस्याओं या queries के लिए यह खास तौर पर अच्छा है

  • आजकल gptscript का इस्तेमाल करके आसानी से अपना खुद का ChatGPT इम्प्लीमेंट किया जा सकता है। लिंक: gptscript

  • मुझे समझ नहीं आता कि C macro regular expression के जैसा कैसे है। C macro शब्दों को match करता है और उन्हें दूसरे text से बदल देता है। regular expression अपेक्षाकृत जटिल pattern से text को match करता है, और अपने आप text replacement नहीं करता

  • सोच रहा हूँ कि क्या किसी ने इसे लोकल में चलाकर देखा है कि यह GP2 किस तरह का output जनरेट करता है