Data parallelism (DP): प्रत्येक GPU के पास पूर्ण मॉडल कॉपी होती है, एक अलग mini-batch प्रोसेस करता है, और ग्रेडिएंट GPUs में औसत किए जाते हैं। सरल और कुशल जब मॉडल एक GPU में फिट हो। Tensor parallelism (TP): व्यक्तिगत परतों को GPUs में विभाजित किया जाता है, प्रत्येक GPU प्रत्येक matrix multiplication का हिस्सा गणना करता है। तब ज़रूरी जब एक अकेली परत के भार एक GPU में न समाएँ। Pipeline parallelism (PP): विभिन्न परतें विभिन्न GPUs पर चलती हैं, micro-batches पाइपलाइन से गुज़रते हैं।
Fully Sharded Data Parallel (FSDP, PyTorch से) और DeepSpeed ZeRO (Microsoft से) मॉडल पैरामीटर, ग्रेडिएंट, और optimizer states को GPUs में शार्ड करते हैं। प्रत्येक GPU केवल मॉडल का एक अंश संग्रहीत करता है, और पैरामीटर गणना के लिए मांग पर इकट्ठे किए जाते हैं, फिर जारी किए जाते हैं। DeepSpeed ZeRO के तीन चरण हैं: स्टेज 1 optimizer states शार्ड करता है, स्टेज 2 ग्रेडिएंट जोड़ता है, स्टेज 3 पैरामीटर जोड़ता है।
वितरित प्रशिक्षण की मूलभूत चुनौती संचार है: GPUs को ग्रेडिएंट (data parallelism में) या एक्टिवेशन (model/pipeline parallelism में) सिंक्रनाइज़ करने होते हैं। यह संचार NVLink (एक नोड के भीतर, 900 GB/s) या InfiniBand (नोड्स के बीच, 400 Gb/s) पर होता है। जब GPUs गणना की तुलना में संचार की प्रतीक्षा में अधिक समय बिताते हैं तो प्रशिक्षण दक्षता गिरती है। इष्टतम कॉन्फ़िगरेशन क्रॉस-नोड संचार को कम करते हैं, tensor parallelism जैसे कसकर जुड़े ऑपरेशन को एक नोड के भीतर और data parallelism जैसे शिथिल जुड़े ऑपरेशन को नोड्स के बीच रखकर।