पाइपलाइन समानांतरता (Pipeline parallelism) गहरे तंत्रिका नेटवर्क के लिए एक वितरित प्रशिक्षण रणनीति है, जो मॉडल की परतों को अनुक्रमिक चरणों में विभाजित करती है, जिनमें से प्रत्येक को एक अलग डिवाइस (जैसे GPU या TPU) पर नियुक्त किया जाता है। यह मॉडल समानांतरता को डेटा समानांतरता के साथ जोड़ती है, माइक्रो-बैचों को सॉफ्टवेयर-पाइपलाइन तरीके से चरणों के माध्यम से संसाधित करती है, जिसका उद्देश्य प्रशिक्षण थ्रूपुट बढ़ाना और निष्क्रिय समय (बुलबुले) को कम करना है, जो भोले परत-वार समानांतरता में होता है।
पृष्ठभूमि और प्रेरणा
बड़े तंत्रिका नेटवर्क, विशेष रूप से बड़े भाषा मॉडल और अन्य गहन शिक्षण मॉडल को प्रशिक्षित करने के लिए विशाल कम्प्यूटेशनल संसाधनों की आवश्यकता होती है। जैसे-जैसे मॉडल का आकार अरबों या खरबों मापदंडों तक बढ़ता है, एकल-डिवाइस प्रशिक्षण मेमोरी और कंप्यूट सीमाओं के कारण असंभव हो जाता है। डेटा समानांतरता प्रत्येक डिवाइस पर पूरे मॉडल की प्रतिकृति बनाती है और डेटा को विभाजित करती है, लेकिन यह तब विफल हो जाती है जब मॉडल एकल डिवाइस की मेमोरी से अधिक हो जाता है। मॉडल समानांतरता मॉडल को डिवाइसों के बीच विभाजित करती है, लेकिन भोली परत-वार स्थान गंभीर अंडरयूटिलाइजेशन की ओर ले जाती है: केवल एक डिवाइस एक समय में गणना करता है जबकि अन्य प्रतीक्षा करते हैं, जिसके परिणामस्वरूप कम थ्रूपुट और उच्च निष्क्रिय समय होता है।
पाइपलाइन समानांतरता मॉडल को चरणों (आमतौर पर परतों के सन्निहित समूह) में विभाजित करके और कई माइक्रो-बैचों को समवर्ती रूप से संसाधित करके इस समस्या का समाधान करती है। मुख्य अंतर्दृष्टि चरणों के बीच गणना को ओवरलैप करना है: जबकि चरण 1 माइक्रो-बैच 2 पर गणना करता है, चरण 2 माइक्रो-बैच 1 पर गणना कर सकता है, और इसी तरह। यह एक असेंबली लाइन जैसा दिखता है, जहां प्रत्येक चरण लगातार आने वाले डेटा को संसाधित करता है और परिणाम अगले चरण को भेजता है।
मुख्य अवधारणाएँ
पाइपलाइन समानांतरता में काम की मूल इकाई माइक्रो-बैच है। एक बड़ा प्रशिक्षण बैच छोटे माइक्रो-बैचों में विभाजित होता है जो पाइपलाइन चरणों के माध्यम से अनुक्रमिक रूप से प्रवाहित होते हैं। प्रत्येक चरण अपनी नियुक्त परतों पर फॉरवर्ड और बैकवर्ड पास करता है। पाइपलाइन को माइक्रो-बैचों को एक के बाद एक खिलाकर "भरा" जाता है, और प्रारंभिक वार्म-अप अवधि के बाद, सभी चरण एक साथ व्यस्त हो सकते हैं, उच्च थ्रूपुट प्राप्त करते हुए।
पाइपलाइन की दक्षता अक्सर बुलबुला अनुपात द्वारा मापी जाती है, जो उस समय का अंश है जब चरण निष्क्रिय होते हैं। p चरणों और m माइक्रो-बैचों वाली पाइपलाइन के लिए, आदर्श थ्रूपुट तब प्राप्त होता है जब m, p से बहुत बड़ा होता है, जिससे सापेक्ष बुलबुला ओवरहेड न्यूनतम होता है। हालांकि, m बढ़ाने से एक्टिवेशन के लिए मेमोरी उपयोग भी बढ़ता है, जिससे एक ट्रेड-ऑफ बनता है।
प्रमुख योजनाएँ
कई पाइपलाइन समानांतरता योजनाएँ प्रस्तावित की गई हैं, जो फॉरवर्ड और बैकवर्ड पास को शेड्यूल करने और ग्रेडिएंट अपडेट को संभालने के तरीके में भिन्न हैं।
GPipe
Google ने 2019 में GPipe पेश किया। यह मॉडल को चरणों में विभाजित करता है और एक सरल शेड्यूल का उपयोग करता है: प्रत्येक माइक्रो-बैच सभी चरणों के माध्यम से फॉरवर्ड पास करता है, फिर सभी चरणों के माध्यम से उल्टे क्रम में बैकवर्ड पास करता है। GPipe सिंक्रोनस ग्रेडिएंट अपडेट का उपयोग करता है, जिसका अर्थ है कि सभी चरण वजन अपडेट करने से पहले सभी माइक्रो-बैचों के पूरा होने की प्रतीक्षा करते हैं। यह सुसंगत ग्रेडिएंट सुनिश्चित करता है लेकिन एक बुलबुला पेश करता है जो चरणों की संख्या के साथ बढ़ता है। GPipe को एक्टिवेशन की पुनर्गणना या उन्हें संग्रहीत करने की भी आवश्यकता होती है, जो कंप्यूट के लिए मेमोरी का व्यापार करता है।
PipeDream
PipeDream, Microsoft Research (2019) से, एक अतुल्यकालिक शेड्यूल का उपयोग करता है जहां प्रत्येक चरण माइक्रो-बैचों को राउंड-रॉबिन तरीके से संसाधित करता है, जितनी जल्दी हो सके फॉरवर्ड और बैकवर्ड पास करता है। यह बुलबुले को कम करता है लेकिन वजन की स्थिरता (weight staleness) पेश करता है: विभिन्न चरण वजन के विभिन्न संस्करणों का उपयोग कर सकते हैं, जो अभिसरण को नुकसान पहुंचा सकता है। PipeDream विभिन्न माइक्रो-बैचों के लिए वजन के कई संस्करणों को बनाए रखने के लिए "वेट स्टैशिंग" नामक तकनीक का भी उपयोग करता है, जिससे मेमोरी ओवरहेड बढ़ता है।
PipeDream-2BW और वेरिएंट
PipeDream-2BW (2020) मेमोरी को कम करने और अभिसरण में सुधार करने के लिए दो वजन बफर (एक फॉरवर्ड के लिए, एक बैकवर्ड के लिए) का उपयोग करके PipeDream में सुधार करता है। V-Pipe और PipeMare जैसे वेरिएंट विभिन्न सिंक्रोनाइज़ेशन रणनीतियों का पता लगाते हैं।
Megatron-LM और इंटरलीव्ड शेड्यूलिंग
NVIDIA का Megatron-LM (2019) टेंसर समानांतरता (व्यक्तिगत परतों को विभाजित करना) को पाइपलाइन समानांतरता के साथ जोड़ता है। बाद में, Megatron-2 (2020) ने एक इंटरलीव्ड शेड्यूल पेश किया जो मॉडल को डिवाइसों की तुलना में अधिक चरणों में विभाजित करता है, जिससे प्रत्येक डिवाइस कई चरणों को संभाल सकता है। यह उड़ान में होने वाले माइक्रो-बैचों की संख्या बढ़ाकर बुलबुले के आकार को कम करता है, अधिक संचार की लागत पर।
Chimera और अन्य हालिया योजनाएँ
Chimera (2021) बुलबुले को और कम करने के लिए एक द्विदिश पाइपलाइन का उपयोग करता है। PTD-P (2021) और ZeroBubble (2023) जैसी अन्य योजनाएँ पाइपलाइन बुलबुले को समाप्त करने या कम करने के लिए अधिक परिष्कृत शेड्यूल का पता लगाती हैं।
गणितीय और व्यावहारिक विचार
पाइपलाइन समानांतरता अक्सर अन्य समानांतरता रणनीतियों के साथ संयुक्त होती है। टेंसर समानांतरता व्यक्तिगत परतों को डिवाइसों के बीच विभाजित करती है, जबकि पाइपलाइन समानांतरता मॉडल को लंबवत रूप से विभाजित करती है। डेटा समानांतरता पाइपलाइन को डिवाइसों के समूहों में प्रतिकृति बनाती है। यह हाइब्रिड दृष्टिकोण बड़े मॉडलों के प्रशिक्षण में मानक है, जैसा कि Megatron-Turing NLG और OpenAI के GPT-4 जैसी प्रणालियों में देखा गया है।
पाइपलाइन गहराई (चरणों की संख्या) और माइक्रो-बैच आकार का चुनाव प्रदर्शन को प्रभावित करता है। गहरी पाइपलाइन प्रति-चरण मेमोरी को कम करती हैं लेकिन संचार और बुलबुला ओवरहेड बढ़ाती हैं। बड़े माइक्रो-बैच उपयोग में सुधार करते हैं लेकिन अधिक मेमोरी की खपत करते हैं। इष्टतम कॉन्फ़िगरेशन मॉडल आकार, डिवाइस मेमोरी और इंटरकनेक्ट बैंडविड्थ पर निर्भर करता है।
अनुप्रयोग और प्रभाव
पाइपलाइन समानांतरता कुछ सबसे बड़े AI मॉडलों के प्रशिक्षण में सहायक रही है। उदाहरण के लिए, GPT-3 (175B पैरामीटर) को मॉडल और पाइपलाइन समानांतरता के संयोजन का उपयोग करके प्रशिक्षित किया गया था। Anthropic के Claude मॉडल और Google का PaLM भी समान तकनीकों पर निर्भर करते हैं। यह दृष्टिकोण प्रमुख फ्रेमवर्क द्वारा समर्थित है, जिसमें PyTorch (torch.distributed.pipeline मॉड्यूल के माध्यम से), TensorFlow (tf.distribute के माध्यम से), और JAX (pjit के साथ) शामिल हैं।
चुनौतियाँ और सीमाएँ
पाइपलाइन समानांतरता कई चुनौतियाँ पेश करती है। चरणों के बीच एक्टिवेशन और ग्रेडिएंट भेजने से संचार ओवरहेड उत्पन्न होता है, जो धीमे इंटरकनेक्ट पर बाधा बन सकता है। लोड असंतुलन तब होता है जब चरणों के कंप्यूट समय असमान होते हैं, जिससे दक्षता कम होती है। बैकवर्ड पास के लिए एक्टिवेशन संग्रहीत करने से मेमोरी दबाव उत्पन्न होता है, जिसे एक्टिवेशन पुनर्गणना द्वारा कम किया जा सकता है लेकिन कंप्यूट लागत पर। इसके अतिरिक्त, अतुल्यकालिक योजनाएँ स्थिर वजन के कारण अभिसरण समस्याओं से पीड़ित हो सकती हैं, जबकि सिंक्रोनस योजनाएँ बुलबुले उत्पन्न करती हैं।
भविष्य की दिशाएँ
पाइपलाइन समानांतरता में सुधार पर शोध जारी है, जो बुलबुले को कम करने, मेमोरी को न्यूनतम करने और विषम हार्डवेयर के अनुकूल होने पर केंद्रित है। स्वचालित चरण विभाजन, गतिशील लोड संतुलन, और मिश्रण-ऑफ-विशेषज्ञ मॉडल के साथ एकीकरण जैसी तकनीकें सक्रिय क्षेत्र हैं। अत्यंत बड़े मॉडलों का उदय और क्लाउड क्लस्टरों पर कुशल प्रशिक्षण की आवश्यकता संभवतः पाइपलाइन समानांतरता को वितरित प्रशिक्षण प्रणालियों का एक प्रमुख घटक बनाए रखेगी।