जीपीयू मेमोरी प्रबंधन और विखंडन
एआई फ्रेमवर्क जीपीयू पर सीमित मेमोरी को कैसे आवंटित, पुन: उपयोग और पुनः प्राप्त करते हैं, और क्यों बचे हुए अंतराल (विखंडन) तकनीकी रूप से बहुत सारी मेमोरी रहने पर भी आउट-ऑफ-मेमोरी त्रुटियों का कारण बन सकते हैं।
सिंहावलोकन
Understanding it is key to fitting big models and avoiding mysterious crashes.
गहरा गोता
जीपीयू मेमोरी निश्चित और कीमती है: एक कार्ड में कुल 24, 80, या 192 जीबी हो सकती है, जो मॉडल भार, सक्रियण, ग्रेडिएंट, ऑप्टिमाइज़र स्थिति और अस्थायी बफ़र्स द्वारा साझा की जाती है। प्रत्येक ऑपरेशन पर मेमोरी आवंटित करने के लिए ड्राइवर को कॉल करना धीमा होगा, इसलिए PyTorch जैसे फ्रेमवर्क एक कैशिंग एलोकेटर का उपयोग करते हैं जो बड़े ब्लॉकों को सामने से पकड़ता है और उप-टुकड़ों को सौंपता है, फिर पुन: उपयोग के लिए मुक्त टुकड़ों को एक पूल में रखता है। समस्या विखंडन है: जैसे ही अलग-अलग आकार के टेंसरों को आवंटित और मुक्त किया जाता है, खाली स्थान बिखरे हुए टुकड़ों में टूट जाता है। आपके पास कुल मिलाकर 5 जीबी मुफ्त हो सकता है, फिर भी आप एक सन्निहित 2 जीबी टेंसर आवंटित करने में विफल हो सकते हैं क्योंकि कोई भी अंतर पर्याप्त बड़ा नहीं है। यही कारण है कि उपलब्ध हेडरूम के बावजूद प्रशिक्षण आउट-ऑफ-मेमोरी त्रुटियों के साथ क्रैश हो सकता है।
तकनीकी अंतर्दृष्टि
PyTorch का CUDA कैशिंग एलोकेटर मेमोरी को ब्लॉक की धाराओं में विभाजित करता है और महंगे cudaMalloc/cudaFree कॉल से बचते हुए, अनुरोधित आकार से मेल खाने वाले फ्री ब्लॉक का पुन: उपयोग करता है। विखंडन तब उत्पन्न होता है जब विभाजित ब्लॉकों को पुनः संयोजित नहीं किया जा सकता है। Torch.cuda.empty_cache, PYTORCH_CUDA_ALLOC_CONF एक्सपेंडेबल_सेगमेंट विकल्प और मेमोरी स्नैपशॉट जैसे उपकरण मदद करते हैं। नए दृष्टिकोण वर्चुअल-मेमोरी विचारों को उधार लेते हैं, गैर-सन्निहित भौतिक पृष्ठों को एक सन्निहित वर्चुअल रेंज में मैप करते हैं ताकि विखंडन के बावजूद बड़े अनुरोध सफल हो सकें।
सामरिक प्रभाव
लागत और बजट
वास्तुकला संबंधी निर्णय वर्षों तक प्रदर्शन और परिचालन लागत को संचालित करते हैं।
स्पष्ट निर्णय
तकनीकी शिक्षा टीमों को सही स्टैक चुनने में मदद करती है, न कि केवल नवीनतम स्टैक चुनने में।
गुणवत्ता नियंत्रण
बेहतर इंजीनियरिंग विकल्प उत्पादन में विश्वसनीयता की घटनाओं को कम करते हैं।
जीपीयू मेमोरी प्रबंधन और विखंडन का भविष्य
ऑपरेटिंग सिस्टम से प्रेरित होकर, मेमोरी प्रबंधन स्मार्ट और अधिक पृष्ठांकित होता जा रहा है। वर्चुअल-मेमोरी-स्टाइल एलोकेटर और पेजेड अटेंशन (अनुमान के दौरान केवी कैश को प्रबंधित करने के लिए उपयोग किया जाता है) जैसी तकनीकें अपशिष्ट और विखंडन को नाटकीय रूप से कम करती हैं। उम्मीद है कि फ्रेमवर्क डिफ़ॉल्ट रूप से विस्तार योग्य, डीफ्रैग्मेंटिंग एलोकेटर, बिल्ट-इन प्रोफाइलर्स के माध्यम से बेहतर दृश्यता, और ऑफलोडिंग और रीकंप्यूटेशन के साथ सख्त युग्मन होगा ताकि सिस्टम उपयोग को उच्च रखने और दुर्लभ क्रैश होने के लिए जीपीयू, सीपीयू और डिस्क मेमोरी को स्वचालित रूप से जोड़ सके।
वास्तविक विश्व कार्यान्वयन
एक प्रशिक्षण रन जो आरक्षित मेमोरी के खाली स्थान दिखाने के बावजूद 'CUDA मेमोरी से बाहर' के साथ क्रैश हो जाता है, विस्तार योग्य खंडों को सक्षम करने के लिए PYTORCH_CUDA_ALLOC_CONF सेट करके ठीक किया गया है।
कौन से टेंसर और विखंडन जीपीयू के 80 जीबी को खा रहे हैं, इसका निदान करने के लिए torch.cuda.memory_summary या मेमोरी स्नैपशॉट का उपयोग करना।
वीएलएलएम का पेजेडअटेंशन मेमोरी बर्बाद किए बिना कई समवर्ती चैट अनुरोधों को पूरा करने के लिए निश्चित आकार के पृष्ठों में ध्यान केवी कैश का प्रबंधन करता है।
सक्रियण मेमोरी में कटौती करने और विखंडन-संचालित आउट-ऑफ-मेमोरी विफलताओं से बचने के लिए बैच आकार को कम करना या ग्रेडिएंट चेकपॉइंटिंग को सक्षम करना।
जोखिम और रेलिंग
एक बेंचमार्क को अनुकूलित करने से व्यापक सिस्टम कमजोरियों को छुपाया जा सकता है।
बुनियादी ढांचे और रखरखाव की लागत को अक्सर कम करके आंका जाता है।
जैसे-जैसे सिस्टम अधिक जटिल होते जाएंगे सुरक्षा और अवलोकन संबंधी अंतराल बढ़ सकते हैं।
कार्यान्वयन रोडमैप
कार्यान्वयन से पहले विलंबता, गुणवत्ता और लागत लक्ष्य परिभाषित करें।
यथार्थवादी लोड और डेटा स्थितियों के तहत बेंचमार्क।
त्रुटियों, बहाव और उपयोगकर्ता प्रभाव के लिए उपकरण निगरानी।
स्केलिंग से पहले रोलबैक और घटना प्रतिक्रिया पथ तैयार करें।
अन्वेषण करते रहें
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the GPU Memory Management and Fragmentation quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
अगली गाइड
जीपीयू शेड्यूलिंग और क्लस्टर ऑर्केस्ट्रेशन
अक्सर पूछे जाने वाले प्रश्नों
What is GPU Memory Management and Fragmentation?
एआई फ्रेमवर्क जीपीयू पर सीमित मेमोरी को कैसे आवंटित, पुन: उपयोग और पुनः प्राप्त करते हैं, और क्यों बचे हुए अंतराल (विखंडन) तकनीकी रूप से बहुत सारी मेमोरी रहने पर भी आउट-ऑफ-मेमोरी त्रुटियों का कारण बन सकते हैं। इसे समझना बड़े मॉडलों को फिट करने और रहस्यमय दुर्घटनाओं से बचने की कुंजी है।
GPU मेमोरी विखंडन क्या है?
विखंडन का मतलब है कि कुल मुक्त मेमोरी पर्याप्त है, लेकिन यह टुकड़ों में टूट गई है, इसलिए एक बड़े टेंसर के लिए कोई भी अंतराल पर्याप्त नहीं है।
PyTorch जैसे फ्रेमवर्क कैशिंग मेमोरी एलोकेटर का उपयोग क्यों करते हैं?
प्रत्येक ऑप के लिए cudaMalloc/cudaFree को कॉल करना धीमा है, इसलिए कैशिंग आवंटनकर्ता बड़े ब्लॉकों को पकड़ लेता है और पूल से मुक्त किए गए ब्लॉकों का पुन: उपयोग करता है।
आप 5 जीबी मुफ़्त देखते हैं लेकिन 2 जीबी टेंसर आवंटित नहीं कर सकते। संभावित कारण क्या है?
विखंडन का यह क्लासिक लक्षण तब होता है जब मुक्त मेमोरी मौजूद होती है लेकिन अनुरोध के लिए पर्याप्त बड़े एक सन्निहित खंड के रूप में नहीं।
कौन सी PyTorch सेटिंग मेमोरी सेगमेंट को लचीले ढंग से बढ़ने की अनुमति देकर विखंडन को कम करने में मदद करती है?
एक्सपेंडेबल_सेगमेंट को सक्षम करने के लिए PYTORCH_CUDA_ALLOC_CONF को सेट करने से एलोकेटर को सेगमेंट बढ़ने में मदद मिलती है और विखंडन-संबंधी विफलताएं कम हो जाती हैं।
वीएलएलएम का पेजेडअटेंशन अनुमान के दौरान मेमोरी बर्बादी को कम करने का क्या प्रबंधन करता है?
PagedAttention KV कैश को OS वर्चुअल मेमोरी जैसे निश्चित आकार के पृष्ठों में संग्रहीत करता है, विखंडन को काटता है और कई अनुरोधों को कुशलतापूर्वक पूरा करता है।