Optimizing CUDA like a Human: Micro-Profiling Tools as Expert Surrogates for LLM-Based GPU Kernel Optimization
KernelPro एक क्लोज्ड-लूप मल्टी-एजेंट सिस्टम है जो विशेषज्ञ-प्रेरित माइक्रो-प्रोफाइलिंग टूल्स और एक डोमेन-अनुकूलित MCTS सर्च के साथ LLMs को एकीकृत करता है ताकि स्वचालित रूप से उच्च-प्रदर्शन, ऊर्जा-कुशल CUDA कर्नेल उत्पन्न और पुनरावृत्ति के माध्यम से अनुकूलित किया जा सके, जिससे विविध बेंचमार्क पर स्टेट-ऑफ-द-आर्ट स्पीडअप प्राप्त होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपके पास एक बहुत ही प्रतिभाशाली लेकिन अनुभवहीन प्रशिक्षु शेफ (AI) है जो दुनिया का सबसे तेज़, सबसे कुशल भोजन (एक ग्राफिक्स कार्ड के लिए कंप्यूटर प्रोग्राम) बनाना चाहता है। समस्या यह है कि शेफ रसोई के उपकरणों की भाषा नहीं बोलता। यदि आप उन्हें स्टोव के सेंसरों से कच्चा डेटा देते हैं—जैसे "तापमान: 400, दबाव: 20, लौ: टिमटिमा रही है"—तो शेफ भ्रमित हो जाता है और व्यंजन को और खराब कर सकता है।
KernelPro एक नया सिस्टम है जो एक मास्टर सू-शेफ (मुख्य सहायक रसोइया) के रूप में प्रशिक्षु के ठीक बगल में खड़ा रहता है। उन्हें कच्चे सेंसर डेटा के बजाय, सरल अंग्रेजी सलाह में अनुवाद करके देने के बजाय, सू-शेफ उन नंबरों को समझाता है: "हे, चूल्हा बहुत गर्म है क्योंकि आप बहुत अधिक तेल का उपयोग कर रहे हैं; एक छोटे पैन पर स्विच करें और तेज़ी से चलाएं।"
यहाँ बताया गया है कि KernelPro कैसे काम करता है, जिसे सरल अवधारणाओं में विभाजित किया गया है:
1. "एक्सपर्ट सरोगेट" (अनुवादक)
अतीत में, AI सिस्टम अनुमान लगाने की कोशिश करते थे कि नंबरों का क्या अर्थ है। KernelPro माइक्रो-प्रोफाइलिंग टूल्स पेश करता है। इन्हें विशेषज्ञ सेंसरों के एक सेट के रूप में सोचें, जिनमें से प्रत्येक को एक अलग विशेषज्ञ द्वारा चलाया जाता है।
- एक विशेषज्ञ जाँचता है कि क्या शेफ सही आकार के पैन का उपयोग कर रहा है (मेमोरी)।
- दूसरा जाँचता है कि क्या शेफ सब्जियां काटने में बहुत धीमा है (कंप्यूट)।
- तीसरा जाँचता है कि क्या शेफ सामग्री फर्श पर गिरा रहा है (रजिस्टर स्पिल्स)।
AI को नंबरों का स्प्रेडशीट देने के बजाय, ये टूल्स मानव विशेषज्ञों के सरोगेट (प्रतिनिधि) के रूप में कार्य करते हैं। वे डेटा को देखते हैं, समस्या का पता लगाते हैं, और एक स्पष्ट नोट लिखते हैं: "आपका मेमोरी उपयोग महत्वपूर्ण है; तेज़ स्टोरेज विधि पर स्विच करें।" शोध में पाया गया कि AI को ये स्पष्ट नोट्स देने से यह कच्चे नंबर देने की तुलना में 125% बेहतर काम करता है। वास्तव में, कच्चे नंबर इतने भ्रमित करने वाले थे कि उन्होंने AI के प्रदर्शन को बिना किसी फीडबैक के मिलने वाले प्रदर्शन से भी खराब कर दिया!
2. "स्मार्ट डिटेक्टिव" (खोज रणनीति)
कोड को अनुकूलित करना एक भूलभुलैया को सुलझाने जैसा है। एक सरल दृष्टिकोण (जिसे "ग्रीडी सर्च" कहा जाता है) केवल आगे बढ़ने और दीवार आने पर बाएँ मुड़ने जैसा है। आप एक डेड एंड (बंद रास्ते) में फंस सकते हैं।
KernelPro एक मोंटे कार्लो ट्री सर्च (MCTS) का उपयोग करता है। एक जासूस की कल्पना करें जो केवल एक रास्ते पर नहीं चलता। इसके बजाय, वे:
- एक नक्शा बनाते हैं कि वे कौन से सभी संभावित मोड़ ले सकते हैं।
- एक साथ विभिन्न रास्तों को आज़माने के लिए "स्काउट्स" (टोली) भेजते हैं।
- यदि कोई रास्ता आशाजनक दिखता है, तो वे वहां अधिक स्काउट्स भेजते हैं।
- यदि कोई रास्ता डेड एंड की ओर ले जाता है, तो वे उस रास्ते को नक्शे पर चिह्नित करते हैं और वहां समय बर्बाद करना बंद कर देते हैं।
यह सिस्टम को "काफी अच्छे" समाधान में फंसे बिना, कोड को ठीक करने के कई अलग-अलग तरीकों को खोजने की अनुमति देता है। शोध से पता चलता है कि यह पद्धति अंधे होकर आगे बढ़ने की तुलना में काफी तेज़ समाधान खोजती है।
3. "मेमोरी बैंक" (गलतियों से सीखना)
आमतौर पर, जब एक AI कोड को ठीक करने की कोशिश करता है, तो वह पिछले प्रयास के बारे में भूल जाता है। यह एक ऐसे शेफ की तरह है जिसने एक बर्तन जला दिया, उसे साफ किया, और फिर तुरंत उसे फिर से जलाने की कोशिश करता है क्योंकि उसे सबक याद नहीं है।
KernelPro के पास एक सर्च मेमोरी है। यह हर गलती, हर सफलता और हर "अहा!" क्षण का एक चलता-फिरता लॉग रखता है।
- "पिछली बार, हमने एक बड़े पैन का उपयोग करने की कोशिश की थी, लेकिन वह बहुत भारी था।"
- "हमें लाइब्रेरी में एक शॉर्टकट मिला जो इस प्रकार के व्यंजन के लिए अच्छा काम करता है।"
यह लॉग हर चरण में AI को वापस दिया जाता है, ताकि वह अपने इतिहास से सीख सके और अपनी गलतियों को न दोहराए।
4. "सोर्स कोड हंटर" (शून्य से लिखना)
अधिकांश AI सिस्टम पहले से बने हिस्सों को जोड़ने की कोशिश करते हैं (जैसे कि पहले से पकी हुई सामग्री की लाइब्रेरी का उपयोग करना)। KernelPro अलग है; यह शून्य से रेसिपी लिख सकता है।
इसके पास एक टूल है जो इसे मौजूदा उच्च-प्रदर्शन वाले कोड (CUTLASS/CuTe) के विशाल पुस्तकालय में से विशिष्ट बिल्डिंग ब्लॉक्स खोजने की अनुमति देता है। फिर यह उन्हें एक बिल्कुल नए, कस्टम व्यंजन में असेंबल करता है जो विशेष हार्डवेयर के लिए पूरी तरह से ट्यून किया गया है, ठीक वैसे ही जैसे एक मास्टर शेफ करेगा।
5. "एनर्जी सेवर" (बोनस फीचर)
आमतौर पर, लोग केवल इस बात पर ध्यान देते हैं कि भोजन कितनी तेजी से पकता है। KernelPro पहला सिस्टम है जो इस बात की भी परवाह करता है कि यह कितनी बिजली का उपयोग करता है।
एक परीक्षण में, सिस्टम ने ठीक उसी गति से वही व्यंजन पकाने का तरीका खोजा, लेकिन अलग "सामग्री" (निर्देशों) का चयन करके, इसने 11.6% कम ऊर्जा का उपयोग किया। यह पानी उबालने के लिए गर्मी बढ़ाने के बजाय, बस एक बेहतर बर्तन का उपयोग करके पानी को तेज़ी से उबालने का तरीका खोजने जैसा है।
परिणाम
मानक कठिन कोडिंग चुनौतियों (KernelBench) पर परीक्षण किए जाने पर:
- लेवल 1 (आसान): यह पिछले सर्वश्रेष्ठ सिस्टम से 2.4 गुना तेज़ था।
- लेवल 2 (मध्यम): यह 4.7 गुना तेज़ था।
- लेवल 3 (कठिन): यह 5.3 गुना तेज़ था।
एक वास्तविक दुनिया के परीक्षण में, एक जटिल AI प्रशिक्षण कार्य (MoE) के साथ, इसने मानव विशेषज्ञ के हैंड-ट्यून्ड कोड को 1.23 गुना से हरा दिया, जिससे एक बिल्कुल नया, हाई-स्पीड प्रोग्राम बनाया गया जिसे किसी इंसान ने पहले नहीं लिखा था।
संक्षेप में: KernelPro केवल AI से कोड को ठीक करने के लिए "अनुमान" लगाने के लिए नहीं कहता है। यह AI को समस्याओं को समझाने के लिए विशेषज्ञ अनुवादकों की एक टीम, समाधान खोजने के लिए एक स्मार्ट जासूस, अपनी गलतियों से सीखने के लिए एक स्मृति, और शून्य से कस्टम कोड लिखने की क्षमता देता है। यह एक भ्रमित प्रशिक्षु को एक मास्टर शेफ में बदल देता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।