तकनीकी गाइड

ज़ीरो और शेयर्ड ऑप्टिमाइज़र

ज़ीरो (ज़ीरो रिडंडेंसी ऑप्टिमाइज़र) जीपीयू में ऑप्टिमाइज़र स्थिति, ग्रेडिएंट्स और वेट को शार्प करके डेटा समानता के बेकार मेमोरी डुप्लिकेशन को समाप्त करता है।

2 मिनट लालअंतिम बार अद्यतन किया गया

सिंहावलोकन

It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.

गहरा गोता

सामान्य डेटा समानता में, प्रत्येक जीपीयू ऑप्टिमाइज़र स्थिति, ग्रेडिएंट्स और पैरामीटर्स की एक अनावश्यक पूर्ण प्रतिलिपि संग्रहीत करता है, जो बेहद बेकार है, खासकर एडम के लिए, जहां ऑप्टिमाइज़र स्थिति मॉडल के आकार से कई गुना अधिक हो सकती है। डीपस्पीड में Microsoft द्वारा पेश किया गया ज़ीरो, इन टेंसरों को जीपीयू में विभाजित करके इस अतिरेक को हटा देता है ताकि प्रत्येक डिवाइस के पास केवल एक स्लाइस हो। ज़ीरो तीन प्रगतिशील चरणों में आता है: स्टेज 1 शार्प ऑप्टिमाइज़र स्थिति, स्टेज 2 ग्रेडिएंट शार्डिंग जोड़ता है, और स्टेज 3 पैरामीटर्स को स्वयं शार्प करता है। आवश्यकतानुसार, जीपीयू संचार के माध्यम से लापता स्लाइस को इकट्ठा करते हैं, गणना करते हैं, फिर उन्हें जारी करते हैं। परिणाम स्वरूप प्रति जीपीयू मेमोरी में नाटकीय रूप से कमी आती है, जो डेटा समानता के आसान प्रोग्रामिंग मॉडल को बनाए रखते हुए अरबों से ट्रिलियन-पैरामीटर प्रशिक्षण को सक्षम बनाता है।

तकनीकी अंतर्दृष्टि

ज़ीरो मेमोरी बचत के लिए अतिरिक्त संचार का व्यापार करता है। चरण 3 में, एक परत के आगे बढ़ने से पहले, एक ऑल-गैदर प्रत्येक जीपीयू पर उस परत के पूर्ण पैरामीटर एकत्र करता है; बाद में स्मृति को पुनः प्राप्त करने के लिए गैर-स्वामित्व वाले स्लाइस को हटा दिया जाता है। ग्रेडिएंट्स कम-बिखरे हुए होते हैं इसलिए प्रत्येक जीपीयू केवल ग्रेडिएंट स्लाइस को अपने पास मौजूद मापदंडों से मेल खाता रखता है। PyTorch का FSDP (पूरी तरह से साझा किया गया डेटा पैरेलल) उसी विचार को मूल रूप से लागू करता है, मॉड्यूल को तुरंत शार्प और रीशर्ड में लपेटता है।

सामरिक प्रभाव

लागत और बजट

वास्तुकला संबंधी निर्णय वर्षों तक प्रदर्शन और परिचालन लागत को संचालित करते हैं।

स्पष्ट निर्णय

तकनीकी शिक्षा टीमों को सही स्टैक चुनने में मदद करती है, न कि केवल नवीनतम स्टैक चुनने में।

गुणवत्ता नियंत्रण

बेहतर इंजीनियरिंग विकल्प उत्पादन में विश्वसनीयता की घटनाओं को कम करते हैं।

ज़ीरो और शेयर्ड ऑप्टिमाइज़र का भविष्य

बड़े पैमाने पर प्रशिक्षण के लिए विदेशी विकल्प के बजाय शेयरिंग डिफ़ॉल्ट बनती जा रही है। ऑफलोडिंग के साथ गहन एकीकरण (ज़ीरो-इनफिनिटी के माध्यम से सीपीयू या एनवीएमई में स्लाइस को पुश करना), उनकी लागत को छिपाने के लिए गणना के साथ ऑल-इकट्ठा और कम-स्कैटर का बेहतर ओवरलैप, और टेंसर और पाइपलाइन समानता के साथ संयोजन की अपेक्षा करें। जैसे-जैसे मॉडल बढ़ते रहते हैं, मेमोरी-कुशल शार्ड ऑप्टिमाइज़र उन्हें यथार्थवादी हार्डवेयर बजट में फिट करने के लिए केंद्रीय होते हैं।

वास्तविक विश्व कार्यान्वयन

मल्टी-बिलियन-पैरामीटर भाषा मॉडल को ठीक करने के लिए डीपस्पीड ज़ीरो स्टेज 2 का उपयोग करना जो अन्यथा जीपीयू मेमोरी को ओवरफ्लो कर देगा।

PyTorch FSDP के साथ प्रशिक्षण, जो GPUs में पैरामीटर, ग्रेडिएंट और ऑप्टिमाइज़र स्थिति को शार्प करता है और उन्हें मांग पर प्रति परत इकट्ठा करता है।

सीपीयू मेमोरी में ऑप्टिमाइज़र स्थिति को पुश करने के लिए ज़ीरो-ऑफलोड लागू करने से, एक एकल जीपीयू अपने वीआरएएम से कई गुना बड़े मॉडल को प्रशिक्षित कर सकता है।

GPU और CPU मेमोरी खत्म होने पर NVMe स्टोरेज से पैरामीटर शार्ड्स को स्ट्रीम करके ज़ीरो-इन्फ़िनिटी के साथ एक ट्रिलियन-पैरामीटर मॉडल को स्केल करना।

जोखिम और रेलिंग

एक बेंचमार्क को अनुकूलित करने से व्यापक सिस्टम कमजोरियों को छुपाया जा सकता है।

बुनियादी ढांचे और रखरखाव की लागत को अक्सर कम करके आंका जाता है।

जैसे-जैसे सिस्टम अधिक जटिल होते जाएंगे सुरक्षा और अवलोकन संबंधी अंतराल बढ़ सकते हैं।

कार्यान्वयन रोडमैप

1

कार्यान्वयन से पहले विलंबता, गुणवत्ता और लागत लक्ष्य परिभाषित करें।

2

यथार्थवादी लोड और डेटा स्थितियों के तहत बेंचमार्क।

3

त्रुटियों, बहाव और उपयोगकर्ता प्रभाव के लिए उपकरण निगरानी।

4

स्केलिंग से पहले रोलबैक और घटना प्रतिक्रिया पथ तैयार करें।

अन्वेषण करते रहें

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 ZeRO and Sharded Optimizers 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 ZeRO and Sharded Optimizers?

ज़ीरो (ज़ीरो रिडंडेंसी ऑप्टिमाइज़र) जीपीयू में ऑप्टिमाइज़र स्थिति, ग्रेडिएंट्स और वेट को शार्प करके डेटा समानता के बेकार मेमोरी डुप्लिकेशन को समाप्त करता है। यह आपको डेटा समानता की सरलता लेकिन प्रति-जीपीयू मेमोरी के एक अंश के साथ विशाल मॉडलों को प्रशिक्षित करने की सुविधा देता है।

सादे डेटा समानता की तुलना में ज़ीरो किस अतिरेक को समाप्त करता है?

मानक डेटा समानता प्रत्येक जीपीयू पर ऑप्टिमाइज़र स्थिति, ग्रेडिएंट और वजन की एक पूरी प्रतिलिपि संग्रहीत करती है; ज़ीरो इन्हें खंडित करता है ताकि प्रत्येक जीपीयू केवल एक स्लाइस रखे।

ऑप्टिमाइज़र स्थिति अक्सर एडम के साथ सबसे बड़ी मेमोरी हॉग क्यों होती है?

एडम प्रति पैरामीटर पहले और दूसरे क्षण जैसे चालू अनुमान बनाए रखता है, जो fp32 मास्टर वेट के साथ मिलकर मॉडल के अपने आकार को बौना कर सकता है।

ज़ीरो स्टेज 3 शार्ड क्या करता है जो स्टेज 1 और 2 नहीं करता है?

स्टेज 1 ऑप्टिमाइज़र स्थिति को शार्प करता है, स्टेज 2 ग्रेडिएंट्स जोड़ता है, और स्टेज 3 जीपीयू में मॉडल पैरामीटर्स को भी शार्प करके आगे बढ़ता है।

ज़ीरो स्टेज 3 में, एक जीपीयू को एक परत के फॉरवर्ड पास के लिए आवश्यक पूर्ण पैरामीटर कैसे मिलते हैं?

एक परत की गणना करने से पहले, एक ऑल-इकट्ठा प्रत्येक जीपीयू पर इसके पूर्ण मापदंडों को इकट्ठा करता है; एक बार हो जाने पर, गैर-स्वामित्व वाले स्लाइस को स्मृति पुनः प्राप्त करने के लिए मुक्त कर दिया जाता है।

कौन सा PyTorch फीचर मूल रूप से ज़ीरो-स्टाइल शार्डिंग को लागू करता है?

PyTorch का फुली शेयर्ड डेटा पैरेलल (FSDP) पैरामीटर्स, ग्रेडिएंट्स और ऑप्टिमाइज़र स्थिति को शार्प करता है, उन्हें तुरंत इकट्ठा करता है और ज़ीरो को मिरर करते हुए रीशेयर करता है।