بڑے عصبی نیٹ ورکس AI میں بہت سی حالیہ پیشرفت کا مرکز ہیں، لیکن ان کی تربیت کرنا ایک مشکل انجینئرنگ اور تحقیقی چیلنج ہے جس کے لیے ایک سنگل سنکرونائز کیلکولیشن انجام دینے کے لیے GPUs کے کلسٹر کو ترتیب دینے کی ضرورت ہوتی ہے۔ جیسے جیسے کلسٹر اور ماڈل کے سائز میں اضافہ ہوا ہے، مشین لرننگ پریکٹیشنرز نے بہت سے GPUs پر ماڈل ٹریننگ کو متوازی بنانے کے لیے تکنیکوں کی ایک بڑھتی ہوئی قسم تیار کی ہے۔ پہلی نظر میں، ان متوازی تکنیکوں کو سمجھنا مشکل معلوم ہو سکتا ہے، لیکن حساب کی ساخت کے بارے میں صرف چند مفروضوں کے ساتھ یہ تکنیکیں زیادہ واضح ہو جاتی ہیں- اس وقت، آپ ایک نیٹ ورک کی طرح A سے B تک کے مبہم بٹس کے گرد چکر لگا رہے ہیں۔ پیکٹ کے ارد گرد شٹل سوئچ کریں.
کوئی متوازی نہیں
نیورل نیٹ ورک کی تربیت ایک تکراری عمل ہے۔ ہر تکرار میں، ہم ایک ماڈل کے ذریعے آگے بڑھتے ہیں تہوں اعداد و شمار کے بیچ میں ہر تربیتی مثال کے لئے آؤٹ پٹ کی گنتی کرنا۔ پھر ایک اور پاس آگے بڑھتا ہے۔ پسماندہ تہوں کے ذریعے، کمپیوٹنگ کے ذریعے یہ بتانا کہ ہر پیرامیٹر حتمی آؤٹ پٹ کو کتنا متاثر کرتا ہے۔ میلان ہر پیرامیٹر کے حوالے سے۔ بیچ، پیرامیٹرز، اور کچھ فی پیرامیٹر آپٹیمائزیشن حالت کے لیے اوسط گریڈینٹ کو ایک اصلاحی الگورتھم میں منتقل کیا جاتا ہے، جیسے آدم، جو اگلی تکرار کے پیرامیٹرز (جس کی آپ کے ڈیٹا پر قدرے بہتر کارکردگی ہونی چاہئے) اور نئی فی پیرامیٹر آپٹیمائزیشن حالت کی گنتی کرتا ہے۔ جیسا کہ تربیت ڈیٹا کے بیچوں پر دہراتی ہے، ماڈل تیزی سے درست نتائج پیدا کرنے کے لیے تیار ہوتا ہے۔
مختلف متوازی تکنیکیں اس تربیتی عمل کو مختلف جہتوں میں تقسیم کرتی ہیں، بشمول:
- ڈیٹا متوازی — مختلف GPUs پر بیچ کے مختلف ذیلی سیٹ چلائیں۔
- پائپ لائن متوازی — مختلف GPUs پر ماڈل کی مختلف پرتیں چلائیں۔
- ٹینسر متوازی — ایک ہی آپریشن کے لیے ریاضی کو توڑ دیں جیسے کہ میٹرکس ضرب کو GPUs میں تقسیم کیا جانا؛
- ماہرین کا مرکب—ہر مثال پر ہر پرت کے صرف ایک حصے سے کارروائی کریں۔
(اس پوسٹ میں، ہم فرض کریں گے کہ آپ اپنے نیورل نیٹ ورکس کو تربیت دینے کے لیے GPUs کا استعمال کر رہے ہیں، لیکن وہی خیالات ان لوگوں پر لاگو ہوتے ہیں جو کسی دوسرے کو استعمال کرتے ہیں عصبی نیٹ ورک ایکسلریٹر.)
ڈیٹا متوازی
ڈیٹا متوازی تربیت کا مطلب ہے ایک ہی پیرامیٹرز کو ایک سے زیادہ GPUs میں کاپی کرنا (اکثر "کارکن" کہا جاتا ہے) اور ہر ایک کو بیک وقت کارروائی کرنے کے لیے مختلف مثالیں تفویض کرنا۔ اکیلے ڈیٹا کی ہم آہنگی اب بھی اس بات کی ضرورت ہے کہ آپ کا ماڈل ایک واحد GPU کی میموری میں فٹ ہو، لیکن آپ کو اپنے پیرامیٹرز کی بہت سی ڈپلیکیٹ کاپیاں ذخیرہ کرنے کی قیمت پر بہت سے GPUs کے حساب سے استفادہ کرنے دیتا ہے۔ یہ کہا جا رہا ہے، آپ کے GPU کے لیے دستیاب موثر RAM کو بڑھانے کے لیے حکمت عملی موجود ہیں، جیسے کہ استعمال کے درمیان CPU میموری میں پیرامیٹرز کو عارضی طور پر آف لوڈ کرنا۔
جیسا کہ ہر ڈیٹا متوازی کارکن اپنے پیرامیٹرز کی کاپی کو اپ ڈیٹ کرتا ہے، انہیں اس بات کو یقینی بنانے کے لیے کوآرڈینیٹ کرنے کی ضرورت ہے کہ ہر کارکن کے پاس یکساں پیرامیٹرز برقرار رہیں۔ سب سے آسان طریقہ یہ ہے کہ کارکنوں کے درمیان مواصلت کو مسدود کیا جائے: (1) ہر کارکن پر میلان کو آزادانہ طور پر شمار کریں۔ (2) کارکنوں کے درمیان میلان کا اوسط; اور (3) ہر کارکن پر آزادانہ طور پر ایک ہی نئے پیرامیٹرز کی گنتی کریں۔ مرحلہ (2) ایک بلاکنگ ایوریج ہے جس کے لیے کافی زیادہ ڈیٹا کی منتقلی کی ضرورت ہوتی ہے (کارکنوں کی تعداد کے تناسب سے آپ کے پیرامیٹرز کے سائز سے گنا زیادہ)، جو آپ کے ٹریننگ تھرو پٹ کو نقصان پہنچا سکتا ہے۔ مختلف ہیں۔ ہم وقت سازی کی اسکیمیں اس اوور ہیڈ کو ہٹانے کے لیے، لیکن وہ سیکھنے کی کارکردگی کو نقصان پہنچاتے ہیں۔ عملی طور پر، لوگ عام طور پر ہم آہنگی کے نقطہ نظر پر قائم رہتے ہیں۔
پائپ لائن متوازی
ساتھ پائپ لائن متوازی تربیت، ہم ماڈل کے ترتیب وار حصوں کو GPUs میں تقسیم کرتے ہیں۔ ہر GPU میں پیرامیٹرز کا صرف ایک حصہ ہوتا ہے، اور اس طرح ایک ہی ماڈل فی GPU متناسب طور پر کم میموری استعمال کرتا ہے۔
ایک بڑے ماڈل کو لگاتار پرتوں کے ٹکڑوں میں تقسیم کرنا سیدھا سیدھا ہے۔ تاہم، پرتوں کے ان پٹس اور آؤٹ پٹس کے درمیان ایک سلسلہ وار انحصار ہے، اس لیے ایک سادہ عمل درآمد بہت زیادہ وقت کا باعث بن سکتا ہے جب کہ ایک کارکن پچھلی مشین کے آؤٹ پٹ کا انتظار کرتا ہے تاکہ اس کے ان پٹس کے طور پر استعمال کیا جائے۔ انتظار کے وقت کے یہ ٹکڑوں کو "بلبلے" کے نام سے جانا جاتا ہے، اس حساب کو ضائع کرتے ہیں جو سستی مشینوں کے ذریعے کیا جا سکتا ہے۔
ہم اعداد و شمار کے متوازی کے آئیڈیاز کو دوبارہ استعمال کر کے بلبلے کی لاگت کو کم کر سکتے ہیں تاکہ ہر کارکن کو ایک وقت میں ڈیٹا عناصر کے صرف ایک ذیلی سیٹ پر کارروائی کی جائے، جس سے ہمیں انتظار کے وقت کے ساتھ چالاکی کے ساتھ نئے حسابات کو اوورلیپ کرنے کی اجازت ملتی ہے۔ بنیادی خیال ایک بیچ کو متعدد مائیکرو بیچز میں تقسیم کرنا ہے۔ ہر مائیکرو بیچ کو پروسیس کرنے کے لیے متناسب طور پر تیز تر ہونا چاہیے اور ہر کارکن اگلے مائیکرو بیچ کے دستیاب ہوتے ہی اس پر کام کرنا شروع کر دیتا ہے، اس طرح پائپ لائن پر عمل درآمد میں تیزی آتی ہے۔ کافی مائکروبیچز کے ساتھ کارکنوں کو زیادہ تر وقت قدم کے آغاز اور آخر میں کم سے کم بلبلے کے ساتھ استعمال کیا جا سکتا ہے۔ تمام مائیکرو بیچز میں گریڈیئنٹس کا اوسط لیا جاتا ہے، اور پیرامیٹرز کی اپ ڈیٹس صرف ایک بار تمام مائیکرو بیچز مکمل ہونے کے بعد ہوتی ہیں۔
کارکنوں کی تعداد جس پر ماڈل کو تقسیم کیا جاتا ہے اسے عام طور پر جانا جاتا ہے۔ پائپ لائن کی گہرائی.
فارورڈ پاس کے دوران، کارکنوں کو صرف اس کی پرتوں کے حصے کا آؤٹ پٹ (ایکٹیویشن کہا جاتا ہے) اگلے کارکن کو بھیجنے کی ضرورت ہوتی ہے۔ پسماندہ پاس کے دوران، یہ صرف پچھلے کارکن کو ان ایکٹیویشن پر گریڈینٹ بھیجتا ہے۔ ان پاسز کو کیسے شیڈول کرنا ہے اور مائیکرو بیچز میں گریڈیئنٹس کو کیسے جمع کرنا ہے اس کے لیے ڈیزائن کی ایک بڑی جگہ ہے۔ جی پی پائپ ہر کارکن کے عمل کو آگے اور پیچھے کی طرف لگاتار گزرتا ہے اور پھر آخر میں ہم وقت سازی کے ساتھ متعدد مائیکروبیچز سے گریڈینٹ کو جمع کرتا ہے۔ الجھا ہوا خؤاب اس کے بجائے ہر کارکن کو متبادل طور پر فارورڈ اور بیکورڈ پاسز پر کارروائی کرنے کا شیڈول بناتا ہے۔
ٹینسر متوازی
پائپ لائن کی ہم آہنگی ایک ماڈل کو "عمودی طور پر" پرت کے لحاظ سے تقسیم کرتی ہے۔ یہ بھی ممکن ہے کہ "افقی طور پر" کچھ کارروائیوں کو ایک پرت کے اندر تقسیم کیا جائے، جسے عام طور پر کہا جاتا ہے۔ ٹینسر متوازی تربیت. بہت سے جدید ماڈلز کے لیے (جیسے ٹرانسفارمر)، حساب کی رکاوٹ ایک ایکٹیویشن بیچ میٹرکس کو بڑے وزن والے میٹرکس کے ساتھ ضرب دے رہی ہے۔ میٹرکس ضرب قطاروں اور کالموں کے جوڑوں کے درمیان ڈاٹ مصنوعات کے طور پر سوچا جا سکتا ہے؛ مختلف GPUs پر آزاد ڈاٹ پروڈکٹس کی گنتی کرنا، یا مختلف GPUs پر ہر ڈاٹ پروڈکٹ کے حصوں کی گنتی کرنا اور نتائج کا خلاصہ کرنا ممکن ہے۔ کسی بھی حکمت عملی کے ساتھ، ہم وزن والے میٹرکس کو یکساں سائز کے "شارڈز" میں کاٹ سکتے ہیں، ہر ایک شارڈ کو مختلف GPU پر ہوسٹ کر سکتے ہیں، اور نتائج کو یکجا کرنے کے لیے بعد میں بات چیت کرنے سے پہلے مجموعی میٹرکس پروڈکٹ کے متعلقہ حصے کی گنتی کے لیے اس شارڈ کا استعمال کر سکتے ہیں۔
ایک مثال ہے Megatron-LM، جو ٹرانسفارمر کی خود توجہ اور MLP تہوں کے اندر میٹرکس ضرب کو متوازی کرتا ہے۔ PTD-P ٹینسر، ڈیٹا، اور پائپ لائن متوازی استعمال کرتا ہے؛ اس کا پائپ لائن شیڈول ہر ڈیوائس کو متعدد غیر لگاتار تہوں کو تفویض کرتا ہے، جس سے زیادہ نیٹ ورک کمیونیکیشن کی قیمت پر بلبلا اوور ہیڈ کو کم کیا جاتا ہے۔
بعض اوقات نیٹ ورک کے ان پٹ کو کراس کمیونیکیشن کی نسبت متوازی کمپیوٹیشن کی اعلیٰ ڈگری کے ساتھ طول و عرض میں متوازی کیا جا سکتا ہے۔ تسلسل متوازی ایسا ہی ایک آئیڈیا ہے، جہاں ایک ان پٹ تسلسل کو وقت کے ساتھ متعدد ذیلی مثالوں میں تقسیم کیا جاتا ہے، متناسب طور پر زیادہ دانے دار سائز کی مثالوں کے ساتھ کمپیوٹیشن کو آگے بڑھنے کی اجازت دے کر چوٹی میموری کی کھپت کو کم کرتا ہے۔
ماہرین کا مرکب (MoE)
کے ساتہ ماہرین کا مرکب (MoE) نقطہ نظر، نیٹ ورک کا صرف ایک حصہ کسی ایک ان پٹ کے لیے آؤٹ پٹ کی گنتی کے لیے استعمال ہوتا ہے۔ ایک مثالی نقطہ نظر یہ ہے کہ وزن کے بہت سے سیٹ ہوں اور نیٹ ورک یہ انتخاب کر سکتا ہے کہ کس سیٹ کو گیٹنگ میکانزم کے ذریعے استعمال کیا جائے۔ یہ حسابی لاگت میں اضافہ کیے بغیر بہت سے مزید پیرامیٹرز کو قابل بناتا ہے۔ وزن کے ہر سیٹ کو "ماہرین" کہا جاتا ہے، اس امید پر کہ نیٹ ورک ہر ماہر کو خصوصی حساب اور مہارت تفویض کرنا سیکھ لے گا۔ مختلف GPUs پر مختلف ماہرین کی میزبانی کی جا سکتی ہے، جو ماڈل کے لیے استعمال ہونے والے GPUs کی تعداد کو بڑھانے کا واضح طریقہ فراہم کرتے ہیں۔
جی شارڈ ایک اسکیم کے ساتھ ایک MoE ٹرانسفارمر کو 600 بلین پیرامیٹرز تک پیمانہ کرتا ہے جہاں صرف MoE تہوں کو متعدد TPU آلات میں تقسیم کیا جاتا ہے اور دیگر تہوں کو مکمل طور پر نقل کیا جاتا ہے۔ ٹرانسفارمر سوئچ کریں۔ ایک ماہر کو ایک ان پٹ روٹ کر کے ماڈل کے سائز کو کھربوں پیرامیٹرز تک ترازو کرتا ہے۔
دیگر میموری سیونگ ڈیزائنز
تربیت کو تیزی سے بڑے اعصابی نیٹ ورکس کو مزید قابل عمل بنانے کے لیے بہت سی دوسری کمپیوٹیشنل حکمت عملی ہیں۔ مثال کے طور پر:
-
گریڈینٹ کی گنتی کرنے کے لیے، آپ کو اصل ایکٹیویشنز کو محفوظ کرنے کی ضرورت ہے، جو ڈیوائس کی بہت زیادہ RAM استعمال کر سکتی ہے۔ چیک پوائنٹنگ (ایکٹیویشن ری کمپیوٹیشن کے نام سے بھی جانا جاتا ہے) ایکٹیویشن کے کسی بھی ذیلی سیٹ کو اسٹور کرتا ہے، اور بیک ورڈ پاس کے دوران انٹرمیڈیٹ کی دوبارہ گنتی کرتا ہے۔ یہ زیادہ سے زیادہ ایک اضافی فل فارورڈ پاس کی کمپیوٹیشنل لاگت پر بہت زیادہ میموری بچاتا ہے۔ کوئی بھی حساب اور میموری لاگت کے درمیان مسلسل تجارت کر سکتا ہے۔ منتخب ایکٹیویشن دوبارہ گنتی، جو ان ایکٹیویشنز کے ذیلی سیٹوں کو چیک کر رہا ہے جو ذخیرہ کرنے کے لیے نسبتاً زیادہ مہنگے ہیں لیکن حساب کے لیے سستے ہیں۔
-
مخلوط صحت سے متعلق تربیت کم درستگی والے نمبروں کا استعمال کرتے ہوئے ماڈلز کو تربیت دینا ہے (سب سے زیادہ عام طور پر FP16)۔ جدید ایکسلریٹر کم درستگی والے نمبروں کے ساتھ بہت زیادہ FLOP گنتی تک پہنچ سکتے ہیں، اور آپ ڈیوائس کی RAM پر بھی بچت کرتے ہیں۔ مناسب دیکھ بھال کے ساتھ، نتیجے میں ماڈل تقریبا کوئی درستگی کھو سکتا ہے.
-
آف لوڈنگ عارضی طور پر غیر استعمال شدہ ڈیٹا کو CPU یا مختلف آلات کے درمیان آف لوڈ کرنا ہے اور بعد میں ضرورت پڑنے پر اسے دوبارہ پڑھنا ہے۔ سادہ نفاذ سے تربیت بہت سست ہو جائے گی، لیکن نفیس نفاذ سے ڈیٹا پہلے سے حاصل ہو جائے گا تاکہ ڈیوائس کو کبھی بھی اس پر انتظار کرنے کی ضرورت نہ پڑے۔ اس خیال کا ایک نفاذ ہے۔ زیرو جو تمام دستیاب ہارڈ ویئر میں پیرامیٹرز، گریڈیئنٹس، اور آپٹیمائزر اسٹیٹس کو تقسیم کرتا ہے اور ضرورت کے مطابق ان کو عملی شکل دیتا ہے۔
-
میموری موثر اصلاح کار کو تجویز کیا گیا ہے کہ آپٹیمائزر کے ذریعہ برقرار چلنے والی حالت کے میموری فوٹ پرنٹ کو کم کریں۔، جیسے اڈافیکٹر.
-
سمپیڑن نیٹ ورک میں انٹرمیڈیٹ نتائج کو ذخیرہ کرنے کے لیے بھی استعمال کیا جا سکتا ہے۔ مثال کے طور پر، جسٹ پسماندہ پاس کے لیے محفوظ کردہ ایکٹیویشنز کو کمپریس کرتا ہے۔ ڈیل ای گریڈیئنٹس کو ہم آہنگ کرنے سے پہلے ان کو کمپریس کرتا ہے۔
OpenAI میں، ہم بنیادی ڈھانچے سے بڑے ماڈلز کو حقیقی دنیا کے مسائل کے لیے تعینات کرنے کے لیے تربیت دے رہے ہیں اور ان کو بہتر بنا رہے ہیں۔ اگر آپ اس پوسٹ کے آئیڈیاز کو عملی جامہ پہنانا چاہتے ہیں - خاص طور پر ہماری اسکیلنگ اور اپلائیڈ ریسرچ ٹیموں کے لیے - ہم بھرتی!
- a
- ہمارے بارے میں
- ایکسلریٹر
- درست
- کے پار
- ایڈیشنل
- ترقی
- AI
- یلگورتم
- تمام
- اجازت دے رہا ہے
- کے درمیان
- رقم
- ایک اور
- اطلاقی
- کا اطلاق کریں
- نقطہ نظر
- ارد گرد
- دستیاب
- اوسط
- بیس لائن
- بن
- اس سے پہلے
- شروع
- کیا جا رہا ہے
- کے درمیان
- وائٹ
- ارب
- بلبلا
- پرواہ
- کچھ
- چیلنج
- سستی
- میں سے انتخاب کریں
- بات چیت
- مواصلات
- کموینیکیشن
- حساب
- گنتی
- کمپیوٹنگ
- کمپیوٹنگ
- مسلسل
- بسم
- کھپت
- مسلسل
- جاری ہے
- محدد
- کاپی
- کور
- سکتا ہے
- اعداد و شمار
- تعینات
- ڈیزائن
- ترقی یافتہ
- آلہ
- کے الات
- مختلف
- مشکل
- طول و عرض
- طول و عرض
- نیچے
- کے دوران
- موثر
- کارکردگی
- ہنر
- عناصر
- کے قابل بناتا ہے
- انجنیئرنگ
- خاص طور پر
- مثال کے طور پر
- مثال کے طور پر
- پھانسی
- ماہر
- ماہرین
- تیز تر
- آراء
- پہلا
- فوٹ پرنٹ
- آگے
- سے
- مکمل
- عام طور پر
- GitHub کے
- نظر
- GPU
- GPUs
- ہو
- ہارڈ ویئر
- ہونے
- ہائی
- اعلی
- کی ڈگری حاصل کی
- میزبانی کی
- کس طرح
- کیسے
- تاہم
- HTTPS
- خیال
- خیالات
- تصویر
- نفاذ
- کو بہتر بنانے کے
- سمیت
- اضافہ
- اضافہ
- اضافہ
- دن بدن
- آزادانہ طور پر
- اشارہ کرتے ہیں
- انفراسٹرکچر
- ان پٹ
- IT
- جانا جاتا ہے
- بڑے
- پرت
- قیادت
- معروف
- جانیں
- سیکھنے
- لائنوں
- مشین
- مشین لرننگ
- مشینیں
- بنا
- ریاضی
- میٹرکس
- کا مطلب ہے کہ
- یاد داشت
- مائیکروسافٹ
- ماڈل
- ماڈل
- زیادہ
- سب سے زیادہ
- ایک سے زیادہ
- ضرب لگانا
- ضروریات
- نیٹ ورک
- نیٹ ورک
- تعداد
- تعداد
- NVIDIA
- آپریشن
- آپریشنز
- اصلاح کے
- دیگر
- مجموعی طور پر
- حصہ
- لوگ
- کارکردگی
- کارکردگی کا مظاہرہ
- پوائنٹ
- ممکن
- پریکٹس
- پچھلا
- مسائل
- آگے بڑھتا ہے
- عمل
- پیدا
- مصنوعات
- حاصل
- مجوزہ
- فراہم کرنے
- RAM
- RE
- تک پہنچنے
- حال ہی میں
- کو کم
- کو کم کرنے
- مراد
- متعلقہ
- کی نمائندگی
- کی ضرورت ہے
- تحقیق
- نتیجے
- نتائج کی نمائش
- رن
- چل رہا ہے
- کہا
- اسی
- بچت
- پیمانے
- سکیلنگ
- سکیم
- منصوبوں
- منتخب
- مقرر
- سیٹ اپ
- اسی طرح
- ایک
- سائز
- مہارت
- So
- کچھ
- بہتر
- خلا
- خصوصی
- تقسیم
- الگ ہوجاتا ہے
- حالت
- امریکہ
- ابھی تک
- ذخیرہ
- پردہ
- حکمت عملیوں
- حکمت عملی
- سوئچ کریں
- تکنیک
- ۔
- کے ذریعے
- تھرو پٹ
- وقت
- اوقات
- تجارت
- ٹریننگ
- منتقلی
- ٹریلین
- افہام و تفہیم
- اپ ڈیٹ کریں
- تازہ ترین معلومات
- us
- استعمال کی شرائط
- عام طور پر
- استعمال
- مختلف اقسام کے
- مختلف
- انتظار
- جبکہ
- وکیپیڈیا
- کے اندر
- بغیر
- کارکن
- کارکنوں
- کام کر
- اور