Roblox पर 3D क्रिएशन के लिए AI इंफरेंस को तेज करना
7.8 गुना तेज़, अधिक प्रतिक्रियाशील 3D वस्तु निर्माण

- Roblox ने अधिक प्रतिक्रियाशील पुनरावृत्ति के लिए 3D मेष निर्माण को गति देने हेतु CUDA ग्राफ़ और KV कैशिंग लागू किया।
- लॉन्च के समय, क्यूब 3डी मॉडल 7.8 मिलीसेकंड में टोकन (पहले 60.5 मिलीसेकंड में) और 4 सेकंड में पूर्ण ऑब्जेक्ट (पहले 31 सेकंड में) उत्पन्न कर सकता था।
इस साल की शुरुआत में, Roblox ने हमारे क्यूब 3डी फ़ाउंडेशन मॉडल की पहली क्षमता साझा की। क्यूब 3डी के साथ, क्रिएटर टेक्स्ट प्रॉम्प्ट से सीधे 3डी मॉडल और वातावरण बना सकते हैं। शुरुआत से ही, हमने विलंबता अनुकूलन को प्राथमिकता दी, यह मानते हुए कि धीमी जेनरेशन समय एक ऐसी प्रक्रिया में बाधा डालती है जो स्वाभाविक रूप से पुनरावृत्ति वाली है। मार्च में क्यूब 3D के लॉन्च से पहले, हम पहले ही डेवलपर्स और उपयोगकर्ताओं दोनों के लिए इंफरेंस चरण को 7.8 गुना तेज़ और अधिक प्रतिक्रियाशील बना चुके थे।
लॉन्च के बाद से, कई उल्लेखनीय अनुभवों में 578,000 से अधिक ऑब्जेक्ट बनाए जा चुके हैं। डेवलपर्स ने "बिल्लियाँ", "बर्गर" आदि जैसे टेक्स्ट प्रॉम्प्ट के साथ अनुभवों के भीतर उपयोगकर्ताओं को 3D ऑब्जेक्ट बनाने में सक्षम बनाने में भी रुचि दिखाई। सबसे खास बात यह है कि वॉयस चैट का उपयोग करने वाली एक लोकप्रिय हैंगआउट गेम, माइक अप (Mic Up) ने खिलाड़ियों को ऑब्जेक्ट बनाने का एक मजेदार और इंटरैक्टिव तरीका देने के लिए क्यूब 3D का लाभ उठाया। अपने कार्यान्वयन में, खिलाड़ी अतिरिक्त क्षमताओं का एक बाएँ हाथ का मेनू खोल सकते हैं, जिसमें एक एआई आइकन भी शामिल है। उस आइकन पर क्लिक करने के बाद, खिलाड़ी 3डी ऑब्जेक्ट बनाने के लिए एक टेक्स्ट प्रॉम्प्ट दर्ज कर सकते हैं। उपयोगकर्ताओं के लिए, लंबा जेनरेशन समय बाधा पैदा करता है, जिससे वे वास्तविक समय में अपने विचारों को 3डी में बदलते देखने के जादू से वंचित रह जाते हैं।
हम 3D जनरेशन के अनुभव को एक रुकने-और-इंतजार करने वाले इंटरैक्शन से बदलकर कुछ ऐसा बनाना चाहते थे जो प्रतिक्रियाशील और प्राकृतिक लगे, और जिससे त्वरित प्रयोग संभव हो सके। किसी सीन में वस्तुओं को जल्दी से जोड़ने की क्षमता डेवलपर्स के लिए महत्वपूर्ण है। Cube 3D को गति देने के लिए, हमने प्रदर्शन की बाधाओं की पहचान करने के लिए पहले इन्फरेंस पाइपलाइन का प्रोफाइल किया। शक्तिशाली GPUs का उपयोग करने के बावजूद, हमने ऑपरेशनों के बीच महत्वपूर्ण निष्क्रिय समय पाया।
सीपीयू-जीपीयू शेड्यूलिंग बोतल-गले की समस्या का समाधान
आधुनिक डीप लर्निंग फ्रेमवर्क GPU पर ऑपरेशंस (या कर्नेल्स) को शेड्यूल करने और लॉन्च करने के लिए CPU पर निर्भर करते हैं। CPU प्रत्येक ऑपरेशन को तैयार करता है, उसे GPU पर भेजता है, और अगले ऑपरेशन को तैयार करने से पहले पुष्टि का इंतजार करता है। यह इंतजार एक शेड्यूलिंग बोतलनेक बनाता है जहाँ CPU अगले काम के बैच को तैयार करते समय GPU निष्क्रिय बैठ सकता है। आदर्श रूप से, हम चाहते हैं कि CPU GPU से आगे चलकर ऑपरेशंस को तैयार करे और कतार में लगा दे ताकि GPU के पास हमेशा काम करने के लिए हो।
यह विशेष रूप से क्यूब 3D जैसे ट्रांसफॉर्मर-प्रकार के मॉडलों में ऑटो-रीग्रेशन डिकोडर्स के लिए समस्याग्रस्त है, जिन्हें इनपुट को क्रमागत रूप से प्रोसेस करने और टोकन उत्पन्न करने की आवश्यकता होती है। इन मॉडलों को एकल जेनरेशन के लिए हजारों व्यक्तिगत ऑपरेशंस की आवश्यकता होती है, और अनुक्रम में प्रत्येक चरण के साथ कम्प्यूटेशनल ओवरहेड जमा हो जाता है।
"हम कुछ ऐसा बनाना चाहते थे जो चार-आयामी इंटरैक्शन को सक्षम करे," इंजीनियरिंग के उपाध्यक्ष अनुपम सिंह ने कहा, यह बताते हुए कि रॉब्लॉक्स ने एक ऑटो-रिग्रेशन दृष्टिकोण क्यों चुना। "हम सिर्फ कार बनाना नहीं चाहते; हम कार का दरवाज़ा खोलकर उसमें बैठने में भी सक्षम होना चाहते हैं।"
प्रत्येक निष्पादित ऑपरेशन:
- प्रत्येक कर्नेल को तैयार करने में लगने वाला सीपीयू समय
- कर्नेल लॉन्च करने से होने वाला ओवरहेड
- जीपीयू निष्पादन समय (वास्तविक गणना)
- पूर्णता की जाँच करते समय सिंक्रनाइज़ेशन ओवरहेड
GPU पर जल्दी निष्पादित होने वाले छोटे ऑपरेशनों के मामले में, यह ओवरहेड इन्फरेंस समय पर हावी हो सकता है। GPU कुल इन्फरेंस समय के केवल एक छोटे से हिस्से के लिए ही सक्रिय रूप से गणना कर रहा हो सकता है।


CUDA ग्राफ़्स को लागू करना: मध्यस्थ को समाप्त करना
इस बाधा को दूर करने के लिए, हमने CUDA ग्राफ़ का लाभ उठाया—एक ऐसी सुविधा जो सीपीयू के हस्तक्षेप के बिना जीपीयू संचालन के अनुक्रमों को रिकॉर्ड करने और फिर से चलाने की अनुमति देती है। क्यूब 3डी की वास्तुकला का ऑटो-रिग्रेशन डीकोडर घटक टेक्स्ट प्रॉम्प्ट्स को संसाधित करता है और एक निश्चित-लंबाई वाले वेक्टर के माध्यम से शेप टोकन उत्पन्न करता है।
हालांकि कार्यात्मक रूप से एक पारंपरिक बड़े भाषा मॉडल (एलएलएम) के समान है, हमारी डुअल-स्ट्रीम डिकोडर आर्किटेक्चर में एक महत्वपूर्ण अंतर है—यह दो समानांतर अटेंशन स्ट्रीम का उपयोग करता है। एक स्ट्रीम कंडीशन टोकन के लिए और दूसरी शेप टोकन के लिए समर्पित है। ऑफ-द-शेल्फ एलएलएम इंफरेंस इंजन हमारी जरूरतों के लिए उपयुक्त नहीं थे, और हमें अपनी विशिष्ट आर्किटेक्चर के लिए अनुकूलित एक कस्टम कार्यान्वयन की आवश्यकता थी।
CUDA ग्राफ़ को GPU के लिए मैक्रो रिकॉर्ड करने जैसा समझें। CPU द्वारा प्रत्येक कमांड को अलग से जारी करने के बजाय, यह GPU संचालन (ग्राफ़) का एक पूरा अनुक्रम रिकॉर्ड करता है और एक ही CPU निर्देश के साथ पूरे ग्राफ़ को लॉन्च करता है। यह दृष्टिकोण इंफरेंस के दौरान CPU को प्रत्येक ऑपरेशन को व्यक्तिगत रूप से शेड्यूल करने की आवश्यकता को समाप्त करके कर्नेल लॉन्च ओवरहेड को नाटकीय रूप से कम करता है। एक बार ग्राफ़ लॉन्च हो जाने पर, GPU आगे के निर्देशों का इंतज़ार किए बिना, पूरी तरह से स्वायत्त रूप से पूरे अनुक्रम को निष्पादित करता है।
क्यूडा ग्राफ़्स की कुछ सीमाएँ भी हैं। क्योंकि ग्राफ़ संरचना को पहले से निर्धारित करने की आवश्यकता होती है, इसलिए इन्हें एक निश्चित बैच आकार और इनपुट आयामों की आवश्यकता होती है। इसका मतलब है कि प्रत्येक बैच आकार या इनपुट आकार के लिए अलग-अलग ग्राफ़ बनाने की आवश्यकता होती है। क्यूब 3D के साथ हमारे उपयोग के मामले में, यह सीमा स्वीकार्य थी, क्योंकि हम सामान्य इनपुट आयामों के आसपास इन्फरेंस प्रक्रिया को मानकीकृत कर सकते थे।
हमें अपने क्यूब 3डी मॉडल के लिए CUDA ग्राफ़ लागू करने हेतु अपनी कार्यप्रणाली को अनुकूलित करना पड़ा। पारंपरिक LLMs में, एटेंशन ऑपरेशन हमेशा एक ही अनुक्रम लंबाई के साथ किए जाते हैं, जो काम करने के लिए एक स्थिर आकार प्रदान करता है। हालाँकि, हमारी कस्टम डुअल-स्ट्रीम आर्किटेक्चर में, कुछ एटेंशन लेयर केवल अनुक्रम लंबाई पर काम करती हैं, जबकि अन्य अनुक्रम और कंडीशन लंबाई के संयोजन पर काम करती हैं।
इन चुनौतियों के बावजूद, CUDA ग्राफ़ लागू करने के बाद हमने उल्लेखनीय परिणाम देखे। हम इंफरेंस के दौरान प्रत्येक टोकन के लिए जनरेशन समय को मापने के लिए टाइम पर आउटपुट टोकन (TPOT) का उपयोग करते हैं। CUDA ग्राफ़ लागू करने के बाद, हमारा TPOT 60.5 मिलीसेकंड से घटकर 20.5 मिलीसेकंड हो गया, जो 2.9 गुना की सुधार है। कुल जनरेशन समय 66% घटकर 31 सेकंड से घटकर 10.5 सेकंड हो गया।
केवी कैशिंग: हमारी सफलता पर आधारित
विलंबता में और सुधार करने के लिए, हमने KV कैशिंग लागू की, जो LLM इंफरेंस में एक मानक अभ्यास है और पूरे उद्योग में अत्यधिक प्रभावी साबित हुआ है।
क्यूब 3D जैसे ट्रांसफॉर्मर-आधारित मॉडलों में, प्रत्येक टोकन जेनरेशन के लिए सभी पहले से उत्पन्न टोकन पर आधारित की (K) और वैल्यू (V) मैट्रिक्स की गणना करना आवश्यक होता है। जैसे-जैसे अनुक्रम लंबा होता जाता है, प्रत्येक टोकन के लिए इन मैट्रिक्स की पुनः गणना करना अत्यधिक अप्रभावी हो जाता है।
KV कैशिंग इसे इस प्रकार हल करता है:
- पहले से उत्पन्न सभी टोकन के लिए K और V मैट्रिक्स को संग्रहीत करना
- केवल नए टोकन के लिए K और V मैट्रिक्स की गणना करना
- इन नए मैट्रिसेस को कैश्ड मानों में जोड़ना
यह दृष्टिकोण अनावश्यक गणना को समाप्त करता है, जिससे प्रत्येक नए टोकन के लिए आवश्यक कार्य कम हो जाता है। जैसे-जैसे उत्पन्न अनुक्रम लंबा होता जाता है, यह विशेष रूप से प्रभावी होता है।
KV कैशिंग को CUDA ग्राफ़ कार्यान्वयन के साथ एकीकृत करने के लिए हमारा दृष्टिकोण पारंपरिक LLM इंफरेंस के समान था। KV कैशिंग को जोड़ने से हमारा TPOT घटकर सिर्फ 7.8 मिलीसेकंड हो गया। कुल जेनरेशन समय में 87% की कमी आई, जो मूल 31 सेकंड से घटकर सिर्फ 4 सेकंड हो गया। समय में यह महत्वपूर्ण कमी इस टूल का उपयोग करने वाले रचनाकारों के लिए इसे और अधिक प्रभावी बनाती है।


डेवलपर्स और उपयोगकर्ताओं पर वास्तविक दुनिया का प्रभाव आकलन

हम ऐसी तकनीकों का अन्वेषण कर रहे हैं जो विलंबता को और कम करें और उपयोगकर्ता अनुभव को बेहतर बनाएँ, जिनमें अनुकूलित कर्नेल, और भी तेज़ इनफ़रेंस के लिए मॉडल क्वांटिज़ेशन, हार्डवेयर-विशिष्ट अनुकूलन, और समानांतर टोकन जनरेशन शामिल हैं।
यह काम और भी जटिल हो जाता है जब हम पूरे सीन के निर्माण और समझ तक विस्तार करते हैं, जहाँ लेआउट के भीतर कई 3D तत्वों को एक-दूसरे के संदर्भ में साथ काम करने की आवश्यकता होती है। हम यह भी चाहते हैं कि हमारे द्वारा बनाई गई 3D वस्तुएं और दुनिया पूरी तरह से कार्यात्मक हों, ताकि दरवाजे खुलें और बंद हों, पहिये घूमें, आदि। वहाँ तक पहुँचने के लिए, हमें पूरे सीन, पूरी तरह से कार्यात्मक वस्तुओं और अवतारों तक विस्तार करने के लिए तेज़ी से निर्माण और पुनरावृत्ति की आवश्यकता है। हम अपने क्यूब 3डी फाउंडेशन मॉडल का विस्तार करते हुए और अधिक सुधारों और नई कार्यक्षमता को साझा करने के लिए उत्साहित हैं—और यह देखने के लिए भी कि हमारा क्रिएटर समुदाय इनके साथ कौन सी इमर्सिव दुनिया बनाता है।


