𝗟𝗼𝗰𝗮𝗹 𝗚𝗿𝗮𝗱𝗶𝗲𝗻𝘁 𝗔𝗰𝗰𝘂𝗺𝘂𝗹𝗮𝘁𝗶𝗼𝗻 𝗦𝗽𝗲𝗲𝗱𝘀 𝗨𝗽 𝗧𝗿𝗮𝗶𝗻𝗶𝗻𝗴 𝟭.𝟳𝘅
پائپ لائنز میں فارغ وقت (idle time) کی وجہ سے ٹریننگ کی رفتار اکثر رک جاتی ہے۔ اس فارغ وقت کو 'ببل' (bubble) کہا جاتا ہے۔
PACI نامی ایک نیا طریقہ اس مسئلے کو حل کرتا ہے۔ یہ ان ببلز کو ختم کرتا ہے اور ٹریننگ کی رفتار کو 1.69x تک بڑھا دیتا ہے۔
زیادہ تر ٹیمیں 1F1B-flush نامی حکمت عملی استعمال کرتی ہیں۔ یہ طریقہ ویٹس (weights) کو مستقل رکھتا ہے لیکن خالی جگہوں (empty slots) کا باعث بنتا ہے جہاں سسٹم ڈیٹا کا انتظار کرتا ہے۔ یہ انتظار کا وقت سب کچھ سست کر دیتا ہے۔
دیگر غیر ہم آہنگ (asynchronous) طریقے اسے ٹھیک کرنے کی کوشش کرتے ہیں۔ وہ ویٹ اسٹیشنگ (weight stashing) یا ڈپلیکیٹ کاپیز جیسی پیچیدہ تکنیکیں استعمال کرتے ہیں۔ یہ تکنیکیں بہت زیادہ میموری استعمال کرتی ہیں اور اکثر ٹریننگ کو غیر مستحکم بنا دیتی ہیں۔
PACI ایک مختلف راستہ اختیار کرتا ہے۔ یہ local gradient accumulation کا استعمال کرتا ہے۔ یہ گلوبل سنکرونائزیشن (global synchronization) کی ضرورت کے بغیر پائپ لائن کو مصروف رکھتا ہے۔
یہاں وجہ بتائی گئی ہے کہ PACI کیوں اہم ہے:
- یہ معیاری طریقوں جیسا استحکام فراہم کرتا ہے۔
- یہ اتنی ہی میموری استعمال کرتا ہے۔
- یہ تیز رفتار لیکن بھاری کنفیگریشنز جیسی رفتار حاصل کر لیتا ہے۔
- یہ accuracy تک پہنچنے کے وقت کو 1.69x تک کم کر دیتا ہے۔
GPT-2 Medium کے ساتھ کیے گئے ٹیسٹ میں، PACI نے مطلوبہ accuracy بہت تیزی سے حاصل کی۔ یہ ظاہر کرتا ہے کہ آپ ویٹ ڈرفٹ (weight drift) کی معمولی مقدار کے بدلے کارکردگی میں بڑی بہتری حاصل کر سکتے ہیں۔
انجینئرنگ ٹیموں کے لیے، اس کا مطلب ہارڈ ویئر کے اخراجات میں 40% کمی ہے۔ آپ مزید GPUs خریدے یا میموری بڑھائے بغیر تیز نتائج حاصل کر سکتے ہیں۔
محققین نے اسے GPT طرز کے ماڈلز کے ساتھ 8 مرحلہ وار پائپ لائن پر آزمایا۔ اگر آپ اپنی پائپ لائن کی گہرائی (depth) یا بیچ سائز (batch size) تبدیل کرتے ہیں تو آپ کو ایکومولیشن ونڈو (accumulation window) کو ٹیون کرنے کی ضرورت پڑ سکتی ہے۔
آپ اسے خود بھی آزما سکتے ہیں۔ مصنفین نے اپنی ریپوزٹری (repository) میں ایک local-accumulation wrapper فراہم کیا ہے۔ اسپیڈ اپ دیکھنے کے لیے اپنے موجودہ flush synchronizer کو اس سے بدل دیں۔
Source: https://dev.to/olaughter/local-gradient-accumulation-speeds-training-17x-2mdk
Optional learning community: https://t.me/GyaanSetuAi