मॉडल की ट्रेनिंग एक बार का ख़र्च है। आपके सवाल का जवाब देना वह बिल है जो कभी बंद नहीं होता
🌐 Read this article in English
संक्षेप में: AI का काम GPU पर इसलिए चलता है कि न्यूरल नेटवर्क अंततः विशाल मैट्रिक्स गुणाओं में बदल जाते हैं, जो पूरी तरह समानांतर चलते हैं। यह लेख बताता है कि यही काम CPU पर क्यों नहीं जमता, कम बिट वाली संख्याएँ रफ़्तार कैसे बढ़ाती हैं, एक-एक टोकन बनाते समय सीमा गणित नहीं मेमोरी बैंडविड्थ क्यों होती है, बैचिंग सेवा का सबसे बड़ा आर्थिक दाँव क्यों है, लोकप्रिय मॉडलों में जवाब देने की कुल बिजली ट्रेनिंग से ज़्यादा क्यों हो जाती है, प्रति-सवाल आँकड़े इतने अलग क्यों आते हैं, और स्पार्सिटी, क्वांटाइज़ेशन, डिस्टिलेशन तथा डिवाइस पर चलने वाले मॉडल बिल सचमुच कैसे घटाते हैं।
आर्टिफिशियल इंटेलिजेंस की लागत पर बात आम तौर पर ट्रेनिंग से शुरू होती है: महीनों की गणना, हज़ारों प्रोसेसर, और एक तैयार मॉडल बनाने में खप गई बिजली। यह सचमुच बड़ा आँकड़ा है, और जिस मॉडल को लोग असल में इस्तेमाल करते हैं उसके लिए यह कहानी का छोटा आधा हिस्सा भी है। ट्रेनिंग एक बार होती है। इन्फ़रेंस — यानी मॉडल का सवाल का जवाब देना — तब-तब होती है जब कोई कुछ भी टाइप करता है, हमेशा के लिए; और यही वह लगातार चलने वाला ख़र्च है जो तय करता है कि कोई सेवा चल भी सकती है या नहीं।
इसकी वजह समझने के लिए यह जानना पड़ता है कि हार्डवेयर सचमुच कर क्या रहा है — और जवाब शब्दावली से कहीं कम रहस्यमय है।
न्यूरल नेटवर्क ज़्यादातर एक ही क्रिया है
शब्दजाल हटा दीजिए तो न्यूरल नेटवर्क मैट्रिक्स गुणाओं की एक लंबी शृंखला है, जिनके बीच एक सादा अरैखिक फलन लगा दिया जाता है। संख्याओं के एक खंड को वज़नों के खंड से गुणा कीजिए, नतीजे को थोड़ा मोड़िए, और यही सौ बार दोहराइए। यही फ़ॉरवर्ड पास है, और ट्रेनिंग वही चीज़ उल्टी दिशा में चलाकर यह निकालना है कि हर वज़न कितना बदलना चाहिए।
हार्डवेयर का सवाल इसी बनावट से दिलचस्प बनता है। मैट्रिक्स गुणा असल में लाखों छोटे गुणा-और-जोड़ हैं, जो एक-दूसरे से पूरी तरह स्वतंत्र हैं — किसी क़दम को दूसरे के नतीजे का इंतज़ार नहीं करना पड़ता। आप उन्हें किसी भी क्रम में कर सकते हैं, या सब एक साथ।
CPU ठीक उलटी स्थिति के लिए बना है। उसमें कुछ ही बेहद परिष्कृत कोर होते हैं, जो निर्देशों की एक शृंखला को जितनी तेज़ी से हो सके चलाने के लिए बने हैं — गहरी पाइपलाइन, अगली शाख़ का अनुमान, बड़े कैश — क्योंकि आम सॉफ़्टवेयर ऐसे फ़ैसलों से भरा होता है जो पिछले जवाब पर टिके होते हैं। उसे दस लाख स्वतंत्र गुणा दे दीजिए और यह सारी मशीनरी बेकार पड़ी रह जाती है।
GPU उलटा सौदा करता है: हज़ारों कहीं सादे कोर, जो एक ही समय पर अलग-अलग डेटा पर वही एक क्रिया करते हैं। शाख़ाओं वाले तर्क में यह कमज़ोर है और भारी मात्रा में एक ही गणितीय पैटर्न दोहराने में शानदार — और न्यूरल नेटवर्क संयोग से ठीक यही है। आज के एक्सेलरेटर इससे आगे जाकर मैट्रिक्स गुणा की समर्पित इकाइयाँ सिलिकॉन में ही बना देते हैं, ताकि डीप लर्निंग की बुनियादी क्रिया कोई लूप नहीं, एक अकेला हार्डवेयर निर्देश हो।
एक दूसरा दाँव भी है: परिशुद्धता। वैज्ञानिक गणना में परंपरागत रूप से हर संख्या 32 या 64 बिट की होती है, पर न्यूरल नेटवर्क इससे कहीं कम में काम चला लेते हैं। ट्रेनिंग अब आम तौर पर 16 या 8 बिट के रूपों में चलती है, और मॉडल परोसते समय वज़न 8 या 4 बिट तक दबा दिए जाते हैं। बिट आधे कीजिए तो गणित की रफ़्तार लगभग दोगुनी हो जाती है और जितना डेटा इधर-उधर ले जाना है वह आधा — और डेटा ले जाना ही, जैसा कि निकलता है, असली समस्या है।
सीमा आम तौर पर मेमोरी है, गणित नहीं
यह वह तथ्य है जो ज़्यादातर लोगों की समझ को उलट देता है: AI के बहुत सारे काम में प्रोसेसर ख़ाली बैठा इंतज़ार कर रहा होता है।
गणित जिस रफ़्तार से तेज़ हुआ, मेमोरी उस रफ़्तार से आँकड़े पहुँचाने में तेज़ नहीं हुई। आज का एक्सेलरेटर उससे कहीं तेज़ गणना कर सकता है जितनी तेज़ी से उसकी मेमोरी उसे खिला सकती है — यानी प्रदर्शन अक्सर गणना-शक्ति से नहीं, मेमोरी बैंडविड्थ से तय होता है। इसीलिए एक्सेलरेटर के साथ उसी पैकेज पर चिपकी हुई उच्च-बैंडविड्थ मेमोरी की परतें बेची जाती हैं, और इसीलिए चिप की भौतिक बनावट अब उसकी घड़ी की रफ़्तार जितनी ही अहम हो गई है।
टेक्स्ट बनाते समय यह सबसे साफ़ दिखता है। भाषा मॉडल एक बार में एक टोकन बनाता है, और हर टोकन के लिए मॉडल के लगभग सारे वज़न मेमोरी से पढ़ने पड़ते हैं। किसी एक उपयोगकर्ता की अकेली माँग पर चिप हर पढ़े गए बाइट के मुक़ाबले बहुत कम गणित करती है — उसका ज़्यादातर समय गुणा करने में नहीं, वज़न बहाने में जाता है।
इसका इलाज है बैचिंग। अगर आप बहुत सारे उपयोगकर्ताओं की माँगें एक साथ निपटाएँ, तो मेमोरी से पढ़ा गया हर वज़न-समूह उन सबके काम एक ही बार में आ जाता है। उतनी ही मेमोरी आवाजाही अब एक नहीं, सौ माँगों को परोसती है, और प्रति-माँग लागत ढह जाती है। इसीलिए करोड़ों लोगों को परोसा जा रहा बड़ा मॉडल किफ़ायती हो सकता है, जबकि वही मॉडल किसी अकेले कंप्यूटर पर चलते हुए फ़ुज़ूलख़र्ची लगता है — और इसीलिए सर्विंग सिस्टम की इंजीनियरिंग का बड़ा हिस्सा यही कला है कि बैच भरे रहें और किसी को ज़्यादा इंतज़ार भी न करना पड़े।
दिलचस्प आँकड़ा यह नहीं कि चिप कितनी क्रियाएँ कर सकती है। दिलचस्प यह है कि मेमोरी से गुज़री हर इकाई ऊर्जा पर कितने काम के जवाब निकले — और यह चिप का नहीं, पूरे सिस्टम का सवाल है।
प्रति-सवाल बिजली के आँकड़े इतने अलग क्यों आते हैं
एक AI सवाल में लगी बिजली के प्रकाशित अनुमान सौ गुना तक अलग-अलग हैं, और इस फ़ासले की ज़्यादातर वजह नाप को लेकर मतभेद नहीं है। वजह यह है कि सवाल ही अधूरा पूछा गया है।
बिजली इस पर निर्भर है कि जवाब किस मॉडल ने दिया — किसी सँकरे काम के लिए ढाला छोटा मॉडल और अग्रिम पंक्ति का बड़ा मॉडल, दोनों में ज़मीन-आसमान का फ़र्क़ है। यह इस पर निर्भर है कि जवाब कितना लंबा था, क्योंकि लागत बने हुए टोकनों के साथ बढ़ती है। यह इनपुट की लंबाई पर निर्भर है, क्योंकि लंबे संदर्भ पर ध्यान देना महँगा है और बीच में सँभाली गई अवस्था भी उसी के साथ बढ़ती है। यह इस पर निर्भर है कि माँग सैकड़ों दूसरी माँगों के साथ बैच में गई या अकेले। और यह हार्डवेयर की पीढ़ी तथा इस बात पर निर्भर है कि डेटा सेंटर ग्रिड की बिजली को कितनी कुशलता से काम की गणना में बदलता है।
इसलिए "एक AI सवाल" के लिए एक आँकड़ा बताना लगभग उतना ही सार्थक है जितना "एक यात्रा" के लिए एक आँकड़ा बताना। ईमानदार बात यह है कि अकेले सवाल की बिजली छोटी है और जोड़ में भारी — और ठीक इसीलिए बार-बार चलने वाला ख़र्च हावी हो जाता है। जो मॉडल एक बार सिखाया जाए और फिर अरबों बार पूछा जाए, वह अपने तैनात जीवन में जवाब देने पर ट्रेनिंग से काफ़ी ज़्यादा बिजली खर्च करेगा।
यह जोड़ अब राष्ट्रीय ढाँचे के स्तर पर दिखने लगा है। कई देशों में डेटा सेंटरों की बिजली माँग ग्रिड चलाने वालों के लिए योजना की जीवंत अड़चन बन चुकी है, और कहाँ डेटा सेंटर बने यह फ़ैसला अब ज़मीन या नेटवर्क से ज़्यादा बिजली की उपलब्धता और ठंडा करने के पानी पर टिकता है। रैक का बिजली घनत्व इतना बढ़ चुका है कि हवा से गरमी निकालना मुश्किल हो रहा है, जिससे उद्योग सीधे तरल शीतलन की ओर बढ़ रहा है — कंप्यूटिंग की भौतिक नलसाज़ी में यह बदलाव पूरी तरह इसी एक काम का लाया हुआ है।
बिल सचमुच घटाता क्या है
चार दाँव मायने रखते हैं, और इनमें से कोई भी "छोटा मॉडल लो और घटिया जवाब झेलो" नहीं है।
स्पार्सिटी। मिक्सचर-ऑफ़-एक्सपर्ट्स ढाँचे में पैरामीटर बहुत बड़ी संख्या में होते हैं, पर किसी एक टोकन के लिए उनमें से थोड़े ही सक्रिय होते हैं। क्षमता बढ़ती है और प्रति-टोकन लागत उसी अनुपात में नहीं बढ़ती — हाल के वर्षों का सबसे असरदार दक्षता-विचार यही है।
क्वांटाइज़ेशन। वज़न 16 के बजाय 8 या 4 बिट में रखकर मॉडल परोसने से मेमोरी की जगह भी घटती है और आवाजाही भी — यानी सीधे असली अड़चन पर चोट। सँभलकर किया जाए तो गुणवत्ता का नुक़सान कम है; लापरवाही से किया जाए तो नहीं — और यह फ़र्क़ जानना अपने आप में एक हुनर है।
डिस्टिलेशन। जिन कामों की आपको परवाह है, उन्हीं पर बड़े मॉडल की नक़ल करने के लिए छोटा मॉडल सिखाइए। ज़्यादातर व्यावसायिक सिस्टमों को अग्रिम पंक्ति का मॉडल नहीं चाहिए; उन्हें ऐसा कुछ चाहिए जो उनके अपने ट्रैफ़िक को ठीक से सँभाले — और डिस्टिल किया मॉडल परोसने में दस गुना तक सस्ता पड़ सकता है।
काम डेटा सेंटर से बाहर ले जाना। फ़ोन और लैपटॉप अब ऐसी न्यूरल प्रोसेसिंग इकाइयों के साथ आते हैं जो छोटे मॉडल स्थानीय रूप से चला सकती हैं। जो काम डिवाइस पर हो गया, उसकी कंपनी को कोई लागत नहीं और वह नेटवर्क पर जाता ही नहीं।
इन चारों के सामने एक पुराना पैटर्न खड़ा है, जिसका नाम लेना ज़रूरी है: दक्षता से जो बचत होती है वह जमा नहीं होती, ज़्यादा इस्तेमाल में ख़र्च हो जाती है। प्रति-सवाल लागत में हर कमी के बाद अब तक सवाल और बढ़े हैं, संदर्भ और लंबे हुए हैं, और मॉडलों से हर माँग पर और ज़्यादा कराया गया है। दक्षता ज़रूरी है, पर उसे योजना समझ लेना ग़लती होगी।
विद्यार्थियों और शोधकर्ताओं के लिए क्यों मायने रखता है
इस क्षेत्र का गुरुत्व-केंद्र खिसक चुका है। एक दशक पहले दिलचस्प सवाल आर्किटेक्चर था; आज, उन लगभग सबके लिए जो अग्रिम पंक्ति की प्रयोगशालाओं में नहीं हैं, दिलचस्प सवाल सर्विंग है — मॉडल को उस हार्डवेयर पर कैसे चलाया जाए जो आपके बजट में हो, उस देरी के साथ जो उपयोगकर्ता झेल ले, और उस लागत पर जो सेवा टिका सके।
कमी वहीं है, और यहाँ यह बात असामान्य रूप से प्रासंगिक है। भारत में अग्रिम पंक्ति की प्री-ट्रेनिंग बहुत कम होगी; फ़ाइन-ट्यूनिंग, तैनाती और सर्विंग बहुत ज़्यादा होगी — और नौकरियाँ वहीं हैं। इनमें उन लोगों की क़दर है जो मेमोरी की सीढ़ियाँ, बैचिंग, क्वांटाइज़ेशन और प्रोफ़ाइलिंग समझते हों — यानी मशीन लर्निंग पर लगी सिस्टम इंजीनियरिंग, न कि मॉडल का डिज़ाइन।
यही वह परत भी है जहाँ टिकाऊपन की बहस नारेबाज़ी से निकलकर ठोस बनती है। "क्या AI पर्यावरण के लिए बुरा है" ऐसा सवाल है जिसका काम का जवाब कोई नहीं दे सकता। "इस तैनाती में हर काम के जवाब पर कितनी बिजली लगती है, और बैचिंग, क्वांटाइज़ेशन या डिस्टिलेशन से वह कितनी बदलेगी" — ऐसा सवाल है जिसके आख़िर में एक संख्या होती है, और उस संख्या तक पहुँचना आम इंजीनियरिंग है।
अक्सर पूछे जाने वाले सवाल
AI को साधारण प्रोसेसर के बजाय GPU क्यों चाहिए?
क्योंकि न्यूरल नेटवर्क अंततः बहुत बड़ी संख्या में स्वतंत्र गुणा-और-जोड़ बन जाते हैं। CPU में कुछ ही जटिल कोर होते हैं जो क्रमवार तर्क के लिए बने हैं, जबकि GPU में हज़ारों सादे कोर होते हैं जो एक साथ अलग-अलग डेटा पर वही क्रिया करते हैं — और यही इस काम से पूरी तरह मेल खाता है।
ट्रेनिंग ज़्यादा बिजली लेती है या मॉडल चलाना?
ट्रेनिंग एक बार का बड़ा ख़र्च है, पर जो मॉडल व्यापक रूप से इस्तेमाल होता है उसमें सवालों के जवाब देने की कुल बिजली तैनाती के जीवनकाल में उससे आगे निकल जाती है, क्योंकि इन्फ़रेंस तब तक चलती रहती है जब तक सेवा चलती है।
एक AI सवाल की बिजली के अनुमान इतने अलग-अलग क्यों हैं?
क्योंकि यह आँकड़ा मॉडल के आकार, इनपुट और जवाब की लंबाई, माँग बैच में गई या नहीं, हार्डवेयर की पीढ़ी और डेटा सेंटर की दक्षता — सब पर निर्भर है। ये बताए बिना "एक सवाल" के लिए कोई एक संख्या सार्थक नहीं होती।
मेमोरी बैंडविड्थ की अड़चन क्या है?
आज के एक्सेलरेटर उतनी तेज़ी से गणना कर सकते हैं जितनी तेज़ी से मेमोरी उन्हें डेटा नहीं दे पाती। एक-एक टोकन बनाते समय पूरा मॉडल बार-बार पढ़ना पड़ता है, इसलिए रफ़्तार गणना-शक्ति से नहीं, इस बात से तय होती है कि वज़न मेमोरी से कितनी जल्दी आते हैं।
AI सिस्टम को ज़्यादा किफ़ायती कैसे बनाया जा सकता है?
मुख्यतः हर माँग पर बड़े मॉडल का थोड़ा हिस्सा ही सक्रिय करके, वज़न कम बिट में रखकर, बड़े मॉडल से छोटा काम-विशिष्ट मॉडल डिस्टिल करके, माँगों को बैच में जोड़कर मेमोरी की आवाजाही साझा करके, और छोटे मॉडल सीधे उपयोगकर्ता के डिवाइस पर चलाकर।