AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی

AWS اور Amazon SageMaker پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں

اس پوسٹ میں، ہم یہ ظاہر کرتے ہیں کہ کیسے AWS پر Kubeflow (Kubeflow کی AWS مخصوص تقسیم) کے ساتھ استعمال کیا جاتا ہے۔ AWS ڈیپ لرننگ کنٹینرز اور ایمیزون لچکدار فائل سسٹم (ایمیزون ای ایف ایس) تعاون کو آسان بناتا ہے اور دونوں سطحوں پر گہرے سیکھنے کے ماڈلز کی تربیت میں لچک فراہم کرتا ہے۔ ایمیزون لچکدار کبیرنیٹس سروس (ایمیزون ای کے ایس) اور ایمیزون سیج میکر ہائبرڈ فن تعمیر کا طریقہ استعمال کرنا۔

مشین لرننگ (ML) کی ترقی پیچیدہ اور مسلسل ترقی پذیر اوپن سورس فریم ورک اور ٹول کٹس کے ساتھ ساتھ پیچیدہ اور مسلسل ارتقا پذیر ہارڈویئر ماحولیاتی نظام پر انحصار کرتی ہے۔ ایم ایل ڈویلپمنٹ کو کلسٹر میں اسکیل کرتے وقت یہ ایک چیلنج بنتا ہے۔ کنٹینرز ایک حل پیش کرتے ہیں، کیونکہ وہ نہ صرف تربیتی کوڈ کو مکمل طور پر سمیٹ سکتے ہیں، بلکہ ہارڈ ویئر لائبریریوں پر مکمل انحصار کو اسٹیک کر سکتے ہیں۔ یہ ایک ML ماحول کو یقینی بناتا ہے جو مستقل اور پورٹیبل ہو، اور تربیتی کلسٹر کے ہر انفرادی نوڈ پر تربیتی ماحول کی تولیدی صلاحیت کو آسان بناتا ہے۔

Kubernetes ان کنٹینرائزڈ ایپلی کیشنز کے خودکار بنیادی ڈھانچے کی تعیناتی، وسائل کی پیمائش، اور انتظام کے لیے وسیع پیمانے پر اپنایا جانے والا نظام ہے۔ تاہم، Kubernetes کو ML کو ذہن میں رکھ کر نہیں بنایا گیا تھا، لہذا YAML تفصیلات کی فائلوں پر بہت زیادہ انحصار کی وجہ سے یہ ڈیٹا سائنسدانوں کے لیے متضاد محسوس کر سکتا ہے۔ Jupyter کا تجربہ نہیں ہے، اور ML سے متعلق بہت سی صلاحیتیں نہیں ہیں، جیسے کہ ورک فلو مینجمنٹ اور پائپ لائنز، اور دیگر صلاحیتیں جن کی ML ماہرین توقع کرتے ہیں، جیسے کہ ہائپر پیرامیٹر ٹیوننگ، ماڈل ہوسٹنگ، اور دیگر۔ اس طرح کی صلاحیتوں کو بنایا جا سکتا ہے، لیکن Kubernetes کو اس کے بنیادی مقصد کے طور پر ایسا کرنے کے لیے ڈیزائن نہیں کیا گیا تھا۔

اوپن سورس کمیونٹی نے نوٹس لیا اور Kubernetes کے اوپر ایک پرت تیار کی جسے Kubeflow کہتے ہیں۔ Kubeflow کا مقصد Kubernetes پر اینڈ ٹو اینڈ ML ورک فلو کی تعیناتی کو آسان، پورٹیبل، اور قابل توسیع بنانا ہے۔ آپ ML کے لیے متنوع انفراسٹرکچر کے لیے بہترین نسل کے اوپن سورس سسٹمز کو تعینات کرنے کے لیے Kubeflow کا استعمال کر سکتے ہیں۔

Kubeflow اور Kubernetes ڈیٹا سائنسدان ٹیموں کو لچک اور کنٹرول فراہم کرتے ہیں۔ تاہم، کم آپریشنل اوور ہیڈز کے ساتھ پیمانے پر چلنے والے ٹریننگ کلسٹرز کے اعلیٰ استعمال کو یقینی بنانا اب بھی مشکل ہے۔

یہ پوسٹ یہ ظاہر کرتی ہے کہ کس طرح وہ صارفین جن کے پاس آن پریمیسس پابندیاں ہیں یا موجودہ Kubernetes سرمایہ کاری ہیں وہ AWS پر Amazon EKS اور Kubeflow کا استعمال کرتے ہوئے اس چیلنج سے کیسے نمٹ سکتے ہیں تاکہ تقسیم شدہ تربیت کے لیے ایک ML پائپ لائن کو لاگو کیا جا سکے۔ لاگت کے لحاظ سے بہتر، مکمل طور پر منظم، اور پیداواری پیمانے پر تربیتی انفراسٹرکچر۔ اس میں ہائبرڈ ڈسٹری بیوٹڈ ٹریننگ آرکیٹیکچر کا مرحلہ وار نفاذ شامل ہے جو آپ کو رن ٹائم کے وقت دو طریقوں کے درمیان انتخاب کرنے کی اجازت دیتا ہے، جو آپ کی تعیناتیوں کے لیے سخت ضروریات کے ساتھ زیادہ سے زیادہ کنٹرول اور لچک فراہم کرتا ہے۔ آپ دیکھیں گے کہ آپ اپنی گہری سیکھنے کی تربیت کے اسکرپٹ میں اوپن سورس لائبریریوں کا استعمال کیسے جاری رکھ سکتے ہیں اور پھر بھی اسے پلیٹ فارم agnostic طریقے سے Kubernetes اور SageMaker دونوں پر چلانے کے لیے ہم آہنگ بنا سکتے ہیں۔

AWS اور SageMaker پر Kubeflow کس طرح مدد کرتا ہے؟

ٹینسرفلو، پی ٹارچ، ایم ایکس نیٹ، اور دیگر جیسے گہرے سیکھنے کے فریم ورک کے ساتھ بنائے گئے نیورل نیٹ ورک ماڈلز نمایاں طور پر بڑے تربیتی ڈیٹا سیٹس کا استعمال کرتے ہوئے بہت زیادہ درستگی فراہم کرتے ہیں، خاص طور پر کمپیوٹر ویژن اور قدرتی زبان کی پروسیسنگ کے استعمال کے معاملات میں۔ تاہم، بڑے تربیتی ڈیٹاسیٹس کے ساتھ، گہرے سیکھنے کے ماڈلز کو تربیت دینے میں زیادہ وقت لگتا ہے، جو بالآخر مارکیٹ میں آنے کا وقت کم کر دیتا ہے۔ اگر ہم ایک کلسٹر کی پیمائش کر سکتے ہیں اور ماڈل ٹریننگ کے وقت کو ہفتوں سے دنوں یا گھنٹوں تک کم کر سکتے ہیں، تو یہ پیداواریت اور کاروباری رفتار پر بہت زیادہ اثر ڈال سکتا ہے۔

Amazon EKS منظم Kubernetes کنٹرول طیارے کی فراہمی میں مدد کرتا ہے۔ آپ CPU اور GPU مثالوں کے ساتھ بڑے پیمانے پر ٹریننگ کلسٹر بنانے کے لیے Amazon EKS کا استعمال کر سکتے ہیں اور ML-فرینڈلی، اوپن سورس ٹولز فراہم کرنے اور ML ورک فلو کو چلانے کے لیے Kubeflow ٹول کٹ استعمال کر سکتے ہیں جو اپنی ٹیم کی پیداواری صلاحیت کو بہتر بنانے کے لیے Kubeflow Pipelines کا استعمال کرتے ہوئے پورٹیبل اور توسیع پذیر ہیں۔ مارکیٹ میں وقت کو کم کریں.

تاہم، اس نقطہ نظر کے ساتھ چند چیلنجز ہو سکتے ہیں:

  • ڈیٹا سائنس ٹیموں میں کلسٹر کے زیادہ سے زیادہ استعمال کو یقینی بنانا۔ مثال کے طور پر، آپ کو مانگ کے مطابق GPU کی مثالیں فراہم کرنی چاہئیں اور پیداواری پیمانے کے کاموں جیسے ڈیپ لرننگ ٹریننگ کے مطالبے کے لیے اس کے زیادہ استعمال کو یقینی بنانا چاہیے، اور ڈیٹا پری پروسیسنگ جیسے کم مطالبہ والے کاموں کے لیے CPU مثالوں کا استعمال کرنا چاہیے۔
  • ہیوی ویٹ Kubeflow بنیادی ڈھانچے کے اجزاء کی اعلی دستیابی کو یقینی بنانا، بشمول ڈیٹا بیس، اسٹوریج، اور تصدیق، جو Kubernetes کلسٹر ورکر نوڈ میں تعینات ہیں۔ مثال کے طور پر، Kubeflow کنٹرول طیارہ ایسے نمونے تیار کرتا ہے (جیسے MySQL مثالیں، پوڈ لاگ، یا MinIO اسٹوریج) جو وقت کے ساتھ ساتھ بڑھتے ہیں اور مسلسل نگرانی کی صلاحیتوں کے ساتھ دوبارہ قابل سائز اسٹوریج والیوم کی ضرورت ہوتی ہے۔
  • ڈویلپرز، ٹریننگ کلسٹرز اور پروجیکٹس کے درمیان ٹریننگ ڈیٹاسیٹ، کوڈ، اور کمپیوٹ ماحول کا اشتراک کرنا مشکل ہے۔ مثال کے طور پر، اگر آپ اپنی لائبریریوں کے اپنے سیٹ پر کام کر رہے ہیں اور ان لائبریریوں میں مضبوط باہمی انحصار ہے، تو ایک ہی ٹیم میں ڈیٹا سائنسدانوں کے درمیان ایک ہی کوڈ کا اشتراک کرنا اور چلانا واقعی مشکل ہو جاتا ہے۔ نیز، ہر ٹریننگ رن کے لیے آپ سے ٹریننگ ڈیٹاسیٹ ڈاؤن لوڈ کرنے اور نئی کوڈ تبدیلیوں کے ساتھ ٹریننگ امیج بنانے کی ضرورت ہوتی ہے۔

AWS پر Kubeflow ان چیلنجوں سے نمٹنے میں مدد کرتا ہے اور ایک انٹرپرائز گریڈ نیم مینیجڈ Kubeflow پروڈکٹ فراہم کرتا ہے۔ AWS پر Kubeflow کے ساتھ، آپ کچھ Kubeflow کنٹرول ہوائی جہاز کی خدمات جیسے ڈیٹا بیس، سٹوریج، نگرانی، اور صارف کے انتظام کو AWS کے زیر انتظام خدمات سے تبدیل کر سکتے ہیں جیسے ایمیزون متعلقہ ڈیٹا بیس سروس (ایمیزون آر ڈی ایس)، ایمیزون سادہ اسٹوریج سروس (ایمیزون S3)، ایمیزون لچکدار فائل سسٹم (ایمیزون ای ایف ایس)، ایمیزون ایف ایس ایکس, ایمیزون کلاؤڈ واچ، اور ایمیزون کاگنیٹو.

ان Kubeflow اجزاء کو تبدیل کرنے سے Kubernetes سے Kubeflow کنٹرول طیارے کے اہم حصوں کو جوڑا جاتا ہے، جو ایک محفوظ، توسیع پذیر، لچکدار، اور لاگت کے لحاظ سے بہتر ڈیزائن فراہم کرتا ہے۔ یہ نقطہ نظر EKS ڈیٹا جہاز سے سٹوریج اور کمپیوٹ وسائل کو بھی آزاد کرتا ہے، جس کی ضرورت ہو سکتی ہے ایپلی کیشنز جیسے کہ تقسیم شدہ ماڈل ٹریننگ یا صارف نوٹ بک سرورز۔ AWS پر Kubeflow ڈیپ لرننگ کنٹینر (DLC) امیجز کے ساتھ Jupyter نوٹ بکس کا مقامی انضمام بھی فراہم کرتا ہے، جو AWS آپٹیمائزڈ ڈیپ لرننگ فریم ورک جیسے PyTorch اور TensorFlow کے ساتھ پہلے سے پیک شدہ اور پہلے سے تشکیل شدہ ہیں جو آپ کو بغیر کسی ڈیل کے اپنا ٹریننگ کوڈ لکھنا شروع کرنے کی اجازت دیتے ہیں۔ انحصار کی قراردادوں اور فریم ورک کی اصلاح کے ساتھ۔ اس کے علاوہ، تربیتی کلسٹرز اور ترقیاتی ماحول کے ساتھ Amazon EFS کا انضمام آپ کو اپنے کوڈ اور پروسیسڈ ٹریننگ ڈیٹاسیٹ کا اشتراک کرنے کی اجازت دیتا ہے، جو ہر کوڈ کی تبدیلی کے بعد کنٹینر کی تصویر بنانے اور بڑے ڈیٹا سیٹس کو لوڈ کرنے سے گریز کرتا ہے۔ AWS پر Kubeflow کے ساتھ یہ انضمام آپ کو ماڈل بنانے اور تربیت کے وقت کو تیز کرنے میں مدد کرتا ہے اور آسان ڈیٹا اور کوڈ شیئرنگ کے ساتھ بہتر تعاون کی اجازت دیتا ہے۔

AWS پر Kubeflow ایک انتہائی دستیاب اور مضبوط ML پلیٹ فارم بنانے میں مدد کرتا ہے۔ یہ پلیٹ فارم ڈیپ لرننگ ماڈلز کی تعمیر اور تربیت کے لیے لچک فراہم کرتا ہے اور بہت سے اوپن سورس ٹول کٹس تک رسائی فراہم کرتا ہے، لاگ ان کی بصیرت، اور تجربات کے لیے انٹرایکٹو ڈیبگنگ۔ تاہم، سینکڑوں GPUs پر ڈیپ لرننگ ماڈلز کی تربیت کے دوران بنیادی ڈھانچے کے وسائل کے زیادہ سے زیادہ استعمال کو حاصل کرنے میں ابھی بھی بہت سارے آپریشنل اوور ہیڈز شامل ہیں۔ سیج میکر کے استعمال سے اس کا ازالہ کیا جا سکتا ہے، جو کہ ایک مکمل طور پر منظم سروس ہے جو پرفارمنٹ اور لاگت کے لحاظ سے بہتر تربیتی کلسٹرز کو سنبھالنے کے لیے بنائی گئی ہے جو صرف اس وقت فراہم کی جاتی ہے جب درخواست کی جاتی ہے، ضرورت کے مطابق اسکیل کیا جاتا ہے، اور ملازمتیں مکمل ہونے پر خود بخود بند ہوجاتا ہے، اس طرح 100 کے قریب فراہم کرتا ہے۔ % وسائل کا استعمال۔ آپ منظم SageMaker اجزاء کا استعمال کرتے ہوئے SageMaker کو Kubeflow پائپ لائنز کے ساتھ ضم کر سکتے ہیں۔ یہ آپ کو کیوب فلو پائپ لائنز کے حصے کے طور پر ML ورک فلوز کو چلانے کی اجازت دیتا ہے، جہاں آپ مقامی تربیت کے لیے Kubernetes اور SageMaker کو ہائبرڈ فن تعمیر میں پروڈکٹ پیمانے کی تربیت کے لیے استعمال کر سکتے ہیں۔

حل جائزہ

مندرجہ ذیل فن تعمیر کی وضاحت کرتا ہے کہ ہم رن ٹائم پیرامیٹر کی بنیاد پر Kubeflow ٹریننگ یا SageMaker کا استعمال کرتے ہوئے Kubernetes پر تقسیم شدہ تربیت کو مشروط طور پر چلانے کے لیے پورٹیبل اور توسیع پذیر اینڈ ٹو اینڈ ML ورک فلو بنانے اور تعینات کرنے کے لیے Kubeflow Pipelines کا استعمال کیسے کرتے ہیں۔

Kubeflow ٹریننگ Kubernetes آپریٹرز کا ایک گروپ ہے جو TensorFlow، PyTorch، اور دیگر جیسے مختلف فریم ورکس کا استعمال کرتے ہوئے ML ماڈلز کی تقسیم شدہ تربیت کے لیے Kubeflow کو تعاون فراہم کرتا ہے۔ pytorch-operator Kubernetes کا Kubeflow نفاذ ہے۔ اپنی مرضی کے وسائل (PyTorchJob) Kubernetes پر تقسیم شدہ PyTorch تربیتی ملازمتیں چلانے کے لیے۔

جب ہمیں انٹرایکٹو ڈیبگنگ اور تجزیہ کے لیے تمام بنیادی وسائل تک لچک اور رسائی کی ضرورت ہوتی ہے تو ہم تجرباتی مرحلے کے دوران PyTorch تقسیم شدہ تربیت کو چلانے کے لیے Kubeflow پائپ لائن کے حصے کے طور پر PyTorchJob لانچر جزو کا استعمال کرتے ہیں۔

ہم اپنی ماڈل ٹریننگ کو پروڈکشن پیمانے پر چلانے کے لیے Kubeflow پائپ لائنز کے لیے SageMaker اجزاء بھی استعمال کرتے ہیں۔ یہ ہمیں SageMaker کی طاقتور خصوصیات سے فائدہ اٹھانے کی اجازت دیتا ہے جیسے کہ مکمل طور پر منظم خدمات، زیادہ سے زیادہ GPU استعمال کے ساتھ تقسیم شدہ تربیتی ملازمتیں، اور اس کے ذریعے سرمایہ کاری مؤثر تربیت ایمیزون لچکدار کمپیوٹ کلاؤڈ (ایمیزون ای سی 2) اسپاٹ انسٹینسز۔

ورک فلو بنانے کے عمل کے حصے کے طور پر، آپ اس پائپ لائن کو بنانے کے لیے درج ذیل مراحل (جیسا کہ پچھلے خاکہ میں دکھایا گیا ہے) مکمل کرتے ہیں:

  1. Kubeflow ڈیش بورڈ بنانے کے لیے Kubeflow مینی فیسٹ فائل کا استعمال کریں اور Kubeflow سنٹرل ڈیش بورڈ سے Jupyter نوٹ بک تک رسائی حاصل کریں۔
  2. Python کوڈ کا استعمال کرتے ہوئے Kubeflow پائپ لائنز بنانے اور مرتب کرنے کے لیے Kubeflow پائپ لائن SDK کا استعمال کریں۔ پائپ لائن کی تالیف Python فنکشن کو ورک فلو ریسورس میں تبدیل کرتی ہے، جو کہ ایک Argo کے موافق YAML فارمیٹ ہے۔
  3. پائپ لائن چلانے کے لیے پائپ لائن سروس اینڈ پوائنٹ کو کال کرنے کے لیے Kubeflow Pipelines SDK کلائنٹ کا استعمال کریں۔
  4. پائپ لائن مشروط رن ٹائم متغیرات کا جائزہ لیتی ہے اور SageMaker یا Kubernetes کے درمیان ہدف چلانے والے ماحول کے طور پر فیصلہ کرتی ہے۔
  5. مقامی Kubernetes ماحول پر تقسیم شدہ ٹریننگ چلانے کے لیے Kubeflow PyTorch لانچر جزو کا استعمال کریں، یا SageMaker کے زیر انتظام پلیٹ فارم پر تربیت جمع کرانے کے لیے SageMaker جزو کا استعمال کریں۔

مندرجہ ذیل اعداد و شمار فن تعمیر میں شامل Kubeflow پائپ لائنز کے اجزاء کو دکھاتا ہے جو ہمیں Kubernetes یا SageMaker تقسیم شدہ ماحول میں سے انتخاب کرنے کی لچک فراہم کرتے ہیں۔

کیوب فلو پائپ لائنز کے اجزاء

کیس ورک فلو استعمال کریں۔

ہم AWS پر Kubeflow کا استعمال کرتے ہوئے Amazon EKS اور SageMaker کا استعمال کرتے ہوئے تقسیم شدہ تربیت کے استعمال کے کیس کو انسٹال کرنے اور چلانے کے لیے درج ذیل مرحلہ وار طریقہ استعمال کرتے ہیں۔

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی

شرائط

اس واک تھرو کے لیے، آپ کے پاس درج ذیل شرائط ہونی چاہئیں:

  • An AWS اکاؤنٹ.
  • ڈوکر اور کے ساتھ ایک مشین AWS کمانڈ لائن انٹرفیس (AWS CLI) انسٹال کیا گیا۔
  • اختیاری طور پر، آپ استعمال کر سکتے ہیں AWS کلاؤڈ 9، ایک کلاؤڈ پر مبنی مربوط ترقیاتی ماحول (IDE) جو آپ کے ویب براؤزر سے تمام کام مکمل کرنے کے قابل بناتا ہے۔ سیٹ اپ کی ہدایات کے لیے، رجوع کریں۔ Cloud9 IDE سیٹ اپ کریں۔. اپنے Cloud9 ماحول سے، پلس کا نشان منتخب کریں اور نیا ٹرمینل کھولیں۔
  • ایک کردار بنائیں نام کے ساتھ sagemakerrole. منظم پالیسیاں شامل کریں۔ AmazonSageMakerFullAccess اور AmazonS3FullAccess SageMaker کو S3 بالٹی تک رسائی دینے کے لیے۔ اس کردار کا استعمال SageMaker جاب کے ذریعے کیا جاتا ہے جو Kubeflow Pipelines قدم کے حصے کے طور پر جمع کرایا جاتا ہے۔
  • یقینی بنائیں کہ آپ کے اکاؤنٹ میں سیج میکر ٹریننگ ریسورس کی قسم کی حد ہے۔ ml.p3.2xlarge کا استعمال کرتے ہوئے 2 تک اضافہ ہوا سروس کوٹاس کنسول

1. AWS پر Amazon EKS اور Kubeflow انسٹال کریں۔

آپ Kubernetes کلسٹر بنانے اور Kubeflow کو تعینات کرنے کے لیے کئی مختلف طریقے استعمال کر سکتے ہیں۔ اس پوسٹ میں، ہم ایک ایسے نقطہ نظر پر توجہ مرکوز کرتے ہیں جس کے بارے میں ہمیں یقین ہے کہ اس عمل میں سادگی آتی ہے۔ سب سے پہلے، ہم ایک EKS کلسٹر بناتے ہیں، پھر ہم اس پر AWS v1.5 پر Kubeflow تعینات کرتے ہیں۔ ان میں سے ہر ایک کام کے لیے، ہم ایک متعلقہ اوپن سورس پروجیکٹ کا استعمال کرتے ہیں جو کہ کے اصولوں کی پیروی کرتا ہے۔ فریم ورک کرو. ہر کام کے لیے ضروری شرائط کا ایک سیٹ نصب کرنے کے بجائے، ہم Docker کنٹینرز بناتے ہیں جن میں تمام ضروری ٹولز ہوتے ہیں اور کنٹینرز کے اندر سے کام انجام دیتے ہیں۔

ہم اس پوسٹ میں ڈو فریم ورک کا استعمال کرتے ہیں، جو Amazon EFS کے ساتھ Kubeflow کی تعیناتی کو ایک ایڈ آن کے طور پر خودکار کرتا ہے۔ پروڈکشن کی تعیناتیوں کے لیے AWS تعیناتی کے اختیارات پر سرکاری Kubeflow کے لیے، ملاحظہ کریں۔ تعیناتی.

موجودہ ورکنگ ڈائرکٹری اور AWS CLI کو کنفیگر کریں۔

ہم ایک ورکنگ ڈائرکٹری کو تشکیل دیتے ہیں تاکہ ہم اسے ان مراحل کے لیے نقطہ آغاز کے طور پر حوالہ دے سکیں جو پیروی کرتے ہیں:

export working_dir=$PWD

ہم AWS CLI پروفائل بھی ترتیب دیتے ہیں۔ ایسا کرنے کے لیے، آپ کو ایک رسائی کلید ID اور ایک کی خفیہ رسائی کلید کی ضرورت ہے۔ AWS شناخت اور رسائی کا انتظام (اے ایم آئی) صارف انتظامی مراعات کے ساتھ اکاؤنٹ (موجودہ منظم پالیسی منسلک کریں) اور پروگرامی رسائی۔ درج ذیل کوڈ دیکھیں:

aws configure --profile=kubeflow
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: us-west-2
Default output format [None]: json

# (In Cloud9, select “Cancel” and “Permanently disable” when the AWS managed temporary credentials dialog pops up)

export AWS_PROFILE=kubeflow

1.1 ایک EKS کلسٹر بنائیں

اگر آپ کے پاس پہلے سے ہی EKS کلسٹر دستیاب ہے، تو آپ اگلے حصے پر جا سکتے ہیں۔ اس پوسٹ کے لیے، ہم استعمال کرتے ہیں۔ aws-do-eks پروجیکٹ ہمارا کلسٹر بنانے کے لیے۔

  1. پہلے اپنی ورکنگ ڈائرکٹری میں پروجیکٹ کو کلون کریں۔
    cd ${working_dir}
    git clone https://github.com/aws-samples/aws-do-eks
    cd aws-do-eks/

  2. پھر بنائیں اور چلائیں۔ aws-do-eks کنٹینر:
    ./build.sh
    ./run.sh

    ۔ build.sh اسکرپٹ ایک ڈوکر کنٹینر امیج بناتا ہے جس میں EKS کلسٹرز کی فراہمی اور آپریشن کے لیے تمام ضروری ٹولز اور اسکرپٹ ہوتے ہیں۔ دی run.sh اسکرپٹ تیار کردہ ڈوکر امیج کا استعمال کرتے ہوئے ایک کنٹینر شروع کرتا ہے اور اسے برقرار رکھتا ہے، لہذا ہم اسے اپنے EKS مینجمنٹ ماحول کے طور پر استعمال کر سکتے ہیں۔ اپنی حیثیت دیکھنے کے لیے aws-do-eks کنٹینر، آپ چلا سکتے ہیں ./status.sh. اگر کنٹینر خارجی حالت میں ہے، تو آپ استعمال کر سکتے ہیں۔ ./start.sh کنٹینر کو اوپر لانے کے لیے اسکرپٹ، یا کنٹینر کو دوبارہ شروع کرنے کے لیے، آپ چلا سکتے ہیں۔ ./stop.sh اس کے بعد ./run.sh.

  3. دوڑ میں ایک خول کھولیں aws-do-eks کنٹینر:
  4. ہماری KubeFlow تعیناتی کے لیے EKS کلسٹر کنفیگریشن کا جائزہ لینے کے لیے، درج ذیل کمانڈ کو چلائیں:
    vi ./eks-kubeflow.yaml

    بطور ڈیفالٹ، یہ کنفیگریشن ایک کلسٹر بناتی ہے۔ eks-kubeflow میں us-west-2 چھ m5.xlarge نوڈس والا علاقہ۔ نیز، EBS والیوم کی خفیہ کاری بطور ڈیفالٹ فعال نہیں ہے۔ آپ شامل کر کے اسے فعال کر سکتے ہیں۔ "volumeEncrypted: true" نوڈ گروپ میں اور یہ ڈیفالٹ کلید کا استعمال کرتے ہوئے انکرپٹ کرے گا۔ اگر ضرورت ہو تو دیگر کنفیگریشن سیٹنگز میں ترمیم کریں۔

  5. کلسٹر بنانے کے لیے درج ذیل کمانڈ کو چلائیں:
    export AWS_PROFILE=kubeflow
    eksctl create cluster -f ./eks-kubeflow.yaml

    کلسٹر کی فراہمی کے عمل میں 30 منٹ لگ سکتے ہیں۔

  6. اس بات کی تصدیق کرنے کے لیے کہ کلسٹر کامیابی کے ساتھ بنایا گیا تھا، درج ذیل کمانڈ کو چلائیں:
    kubectl get nodes

    کامیابی کے ساتھ تخلیق کیے گئے کلسٹر کے لیے پچھلی کمانڈ سے آؤٹ پٹ درج ذیل کوڈ کی طرح دکھائی دیتا ہے:

    root@cdf4ecbebf62:/eks# kubectl get nodes
    NAME                                           STATUS   ROLES    AGE   VERSION
    ip-192-168-0-166.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-13-28.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-45-240.us-west-2.compute.internal   Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-63-84.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-75-56.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-85-226.us-west-2.compute.internal   Ready       23m   v1.21.14-eks-ba74326

SageMaker ٹریننگ جاب کے لیے EFS والیوم بنائیں

اس استعمال کے معاملے میں، آپ ایمیزون ای ایف ایس میں پہلے سے ذخیرہ شدہ ڈیٹا سے ڈیپ لرننگ ماڈلز کو تربیت دے کر سیج میکر ٹریننگ کے کام کو تیز کرتے ہیں۔ اس انتخاب کا فائدہ یہ ہے کہ ایمیزون EFS میں ڈیٹا سے آپ کی تربیتی ملازمتیں براہ راست شروع کریں اور ڈیٹا کی نقل و حرکت کی ضرورت نہیں ہے، جس کے نتیجے میں تربیت کے آغاز کا وقت تیز ہوتا ہے۔

ہم ایک EFS والیوم بناتے ہیں اور EFS کنٹینر سٹوریج انٹرفیس (CSI) ڈرائیور تعینات کرتے ہیں۔ یہ میں واقع ایک تعیناتی اسکرپٹ کے ذریعہ پورا ہوتا ہے۔ /eks/deployment/csi/efs کے اندر aws-do-eks کنٹینر.

یہ اسکرپٹ فرض کرتا ہے کہ آپ کے اکاؤنٹ میں ایک EKS کلسٹر ہے۔ سیٹ CLUSTER_NAME= اگر آپ کے پاس ایک سے زیادہ EKS کلسٹر ہیں۔

cd /eks/deployment/csi/efs
./deploy.sh

یہ اسکرپٹ ایک EFS والیوم فراہم کرتا ہے اور کلسٹر VPC کے ذیلی نیٹس کے لیے ماؤنٹ اہداف تخلیق کرتا ہے۔ یہ پھر EFS CSI ڈرائیور کو تعینات کرتا ہے اور تخلیق کرتا ہے۔ efs-sc اسٹوریج کلاس اور efs-pv EKS کلسٹر میں مستقل حجم۔

اسکرپٹ کی کامیاب تکمیل پر، آپ کو مندرجہ ذیل کی طرح آؤٹ پٹ نظر آنا چاہئے:

Generating efs-sc.yaml ...

Applying efs-sc.yaml ...
storageclass.storage.k8s.io/efs-sc created
NAME            PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
efs-sc          efs.csi.aws.com         Delete          Immediate              false                  1s
gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  36m

Generating efs-pv.yaml ...
Applying efs-pv.yaml ...
persistentvolume/efs-pv created
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
efs-pv   5Gi        RWX            Retain           Available           efs-sc                  10s

Done ...

ایک Amazon S3 VPC اینڈ پوائنٹ بنائیں

آپ ایک پرائیویٹ وی پی سی استعمال کرتے ہیں جس تک آپ کی سیج میکر ٹریننگ جاب اور ای ایف ایس فائل سسٹم تک رسائی ہے۔ SageMaker ٹریننگ کلسٹر کو اپنے نجی VPC سے S3 بالٹی تک رسائی دینے کے لیے، آپ VPC اینڈ پوائنٹ بناتے ہیں:

cd /eks/vpc 
export CLUSTER_NAME= 
export REGION= 
./vpc-endpoint-create.sh

اب آپ باہر نکل سکتے ہیں۔ aws-do-eks کنٹینر شیل اور اگلے حصے پر آگے بڑھیں:

exit

root@cdf4ecbebf62:/eks/deployment/csi/efs# exit
exit
TeamRole:~/environment/aws-do-eks (main) $

1.2 Amazon EKS پر AWS پر Kubeflow تعینات کریں۔

Amazon EKS پر Kubeflow کو تعینات کرنے کے لیے، ہم استعمال کرتے ہیں۔ aws-do-kubeflow پروجیکٹ.

  1. درج ذیل کمانڈز کا استعمال کرتے ہوئے ریپوزٹری کو کلون کریں:
    cd ${working_dir}
    git clone https://github.com/aws-samples/aws-do-kubeflow
    cd aws-do-kubeflow

  2. پھر پروجیکٹ کو ترتیب دیں:
    ./config.sh

    یہ اسکرپٹ پروجیکٹ کنفیگریشن فائل کو ٹیکسٹ ایڈیٹر میں کھولتا ہے۔ کے لیے اہم ہے۔ AWS_REGION آپ کا کلسٹر جس خطے میں ہے اس کے ساتھ ساتھ سیٹ کیا جائے۔ AWS_CLUSTER_NAME کلسٹر کے نام سے ملنے کے لیے جو آپ نے پہلے بنایا تھا۔ پہلے سے طے شدہ طور پر، آپ کی کنفیگریشن پہلے سے ہی مناسب طریقے سے سیٹ کی گئی ہے، لہذا اگر آپ کو کوئی تبدیلی کرنے کی ضرورت نہیں ہے، تو صرف ایڈیٹر کو بند کر دیں۔

    ./build.sh
    ./run.sh
    ./exec.sh

    ۔ build.sh اسکرپٹ ایک Docker کنٹینر امیج بناتا ہے جس میں موجودہ Kubernetes کلسٹر پر Kubeflow کو تعینات کرنے اور ان کا نظم کرنے کے لیے تمام ضروری ٹولز ہوتے ہیں۔ دی run.sh اسکرپٹ ڈوکر امیج کا استعمال کرتے ہوئے ایک کنٹینر شروع کرتا ہے، اور exec.sh اسکرپٹ کنٹینر میں ایک کمانڈ شیل کھولتا ہے، جسے ہم اپنے Kubeflow کے انتظام کے ماحول کے طور پر استعمال کر سکتے ہیں۔ آپ استعمال کر سکتے ہیں۔ ./status.sh اسکرپٹ کو دیکھنے کے لئے کہ آیا aws-do-kubeflow کنٹینر اوپر اور چل رہا ہے اور ./stop.sh اور ./run.sh ضرورت کے مطابق اسے دوبارہ شروع کرنے کے لیے اسکرپٹس۔

  3. آپ میں ایک شیل کھولنے کے بعد aws-do-eks کنٹینر، آپ تصدیق کر سکتے ہیں کہ ترتیب شدہ کلسٹر سیاق و سباق توقع کے مطابق ہے:
    root@ip-172-31-43-155:/kubeflow# kubectx
    kubeflow@eks-kubeflow.us-west-2.eksctl.io

  4. EKS کلسٹر پر Kubeflow کو تعینات کرنے کے لیے، چلائیں۔ deploy.sh سکرپٹ:
    ./kubeflow-deploy.sh

    تعیناتی اس وقت کامیاب ہوتی ہے جب کیوب فلو نام کی جگہ کے تمام پوڈز رننگ حالت میں داخل ہوتے ہیں۔ ایک عام آؤٹ پٹ مندرجہ ذیل کوڈ کی طرح لگتا ہے:

    Waiting for all Kubeflow pods to start Running ...
    
    Waiting for all Kubeflow pods to start Running ...
    
    Restarting central dashboard ...
    pod "centraldashboard-79f489b55-vr6lp" deleted
    /kubeflow/deploy/distro/aws/kubeflow-manifests /kubeflow/deploy/distro/aws
    /kubeflow/deploy/distro/aws
    
    Kubeflow deployment succeeded
    Granting cluster access to kubeflow profile user ...
    Argument not provided, assuming default user namespace kubeflow-user-example-com ...
    clusterrolebinding.rbac.authorization.k8s.io/kubeflow-user-example-com-cluster-admin-binding created
    Setting up access to Kubeflow Pipelines ...
    Argument not provided, assuming default user namespace kubeflow-user-example-com ...
    
    Creating pod-default for namespace kubeflow-user-example-com ...
    poddefault.kubeflow.org/access-ml-pipeline created

  5. KubeFlow pods کی حالت کو مانیٹر کرنے کے لیے، ایک علیحدہ ونڈو میں، آپ درج ذیل کمانڈ استعمال کر سکتے ہیں:
    watch kubectl -n kubeflow get pods

  6. پریس Ctrl + C جب تمام پوڈز چل رہے ہوں، تو درج ذیل کمانڈ کو چلا کر کیوب فلو ڈیش بورڈ کو کلسٹر کے باہر بے نقاب کریں:
    ./kubeflow-expose.sh

آپ کو آؤٹ پٹ دیکھنا چاہئے جو درج ذیل کوڈ کی طرح لگتا ہے:

root@ip-172-31-43-155:/kubeflow# ./kubeflow-expose.sh
root@ip-172-31-43-155:/kubeflow# Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080

یہ کمانڈ اسٹیو انگریس گیٹ وے سروس کو آپ کے کلسٹر سے آپ کے مقامی پورٹ 8080 پر پورٹ فارورڈ کرتا ہے۔ Kubeflow ڈیش بورڈ تک رسائی کے لیے، ملاحظہ کریں http://localhost:8080 اور پہلے سے طے شدہ صارف کی اسناد کا استعمال کرتے ہوئے لاگ ان کریں (user@example.com/12341234)۔ اگر آپ چلا رہے ہیں۔ aws-do-kubeflow AWS Cloud9 میں کنٹینر، پھر آپ منتخب کر سکتے ہیں۔ پیش نظارہ، پھر منتخب کریں رننگ ایپلیکیشن کا پیش نظارہ کریں۔. اگر آپ Docker ڈیسک ٹاپ پر چل رہے ہیں، تو آپ کو چلانے کی ضرورت پڑ سکتی ہے۔ ./kubeflow-expose.sh اسکرپٹ کے باہر aws-do-kubeflow کنٹینر.

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی

2. AWS ماحول پر Kubeflow سیٹ اپ کریں۔

AWS ماحول پر اپنا Kubeflow ترتیب دینے کے لیے، ہم ایک EFS والیوم اور ایک Jupyter نوٹ بک بناتے ہیں۔

2.1 EFS والیوم بنائیں

EFS والیوم بنانے کے لیے، درج ذیل مراحل کو مکمل کریں:

  • کیوب فلو ڈیش بورڈ پر، منتخب کریں۔ جلد نیوی گیشن پین میں.
  • انتخاب کیا۔ نیا حجم.
  • کے لئے نام، داخل کریں efs-sc-claim.
  • کے لئے حجم کا سائز، داخل کریں 10.
  • کے لئے اسٹوریج کلاسمنتخب کریں efs-sc.
  • کے لئے رسائی موڈمنتخب کریں ReadWriteOnce.
  • میں سے انتخاب کریں تخلیق کریں.

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی

2.2 ایک Jupyter نوٹ بک بنائیں

ایک نئی نوٹ بک بنانے کے لیے، درج ذیل مراحل کو مکمل کریں:

  • کیوب فلو ڈیش بورڈ پر، منتخب کریں۔ نوٹ بک نیوی گیشن پین میں.
  • میں سے انتخاب کریں نئی نوٹ بک.
  • کے لئے نام، داخل کریں aws-hybrid-nb.
  • کے لئے Jupyter ڈاکٹ امیج، تصویر کا انتخاب کریں۔ c9e4w0g3/notebook-servers/jupyter-pytorch:1.11.0-cpu-py38-ubuntu20.04-e3-v1.1 (جدید ترین دستیاب jupyter-pytorch DLC امیج)۔
  • کے لئے CPU، داخل کریں 1.
  • کے لئے یاد داشت، داخل کریں 5.
  • کے لئے GPUsکے طور پر چھوڑ دیں کوئی بھی نہیں.
  • میں کوئی تبدیلی نہ کریں۔ ورک اسپیس والیوم سیکشن پر ایک اقتصادی کینڈر سکین کر لیں۔
  • میں ڈیٹا کے حجم سیکشن کا انتخاب کریں، موجودہ والیوم منسلک کریں۔ اور موجودہ والیوم سیکشن کو پھیلائیں۔
  • کے لئے ناممنتخب کریں efs-sc-claim.
  • کے لئے پہاڑی راستہ، داخل کریں /home/jovyan/efs-sc-claim.
    یہ EFS والیوم کو آپ کے Jupyter نوٹ بک پوڈ پر ماؤنٹ کرتا ہے، اور آپ فولڈر دیکھ سکتے ہیں۔ efs-sc-claim آپ کے Jupyter لیب انٹرفیس میں۔ آپ ٹریننگ ڈیٹاسیٹ اور ٹریننگ کوڈ کو اس فولڈر میں محفوظ کرتے ہیں تاکہ ٹریننگ کلسٹرز جانچ کے لیے کنٹینر کی تصاویر کو دوبارہ بنانے کی ضرورت کے بغیر اس تک رسائی حاصل کر سکیں۔AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی
  • منتخب کریں Kubeflow پائپ لائنز تک رسائی کی اجازت دیں۔ کنفیگریشن سیکشن میں۔
  • میں سے انتخاب کریں شروع.
    تصدیق کریں کہ آپ کی نوٹ بک کامیابی کے ساتھ بن گئی ہے (اس میں چند منٹ لگ سکتے ہیں)۔AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی
  • پر نوٹ بک صفحہ، منتخب کریں رابطہ قائم کریں JupyterLab ماحول میں لاگ ان کرنے کے لیے۔
  • پر جاؤ مینو، منتخب کریں ایک ذخیرہ کلون.
  • کے لئے ریپو کو کلون کریں۔، داخل کریں https://github.com/aws-samples/aws-do-kubeflow.
    AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی

3. تقسیم شدہ تربیت چلائیں۔

Jupyter نوٹ بک ترتیب دینے کے بعد، آپ فولڈر سے درج ذیل اعلیٰ سطحی مراحل کا استعمال کرتے ہوئے پورا ڈیمو چلا سکتے ہیں۔ aws-do-kubeflow/workshop کلون شدہ ذخیرہ میں:

  • PyTorch تقسیم شدہ ڈیٹا متوازی (DDP) ٹریننگ اسکرپٹ: PyTorch DDP ٹریننگ اسکرپٹ cifar10-distributed-gpu-final.py کا حوالہ دیں، جس میں ملٹی نوڈ CPU اور GPU کلسٹر پر تربیت کی تقسیم کے لیے ایک نمونہ کنوولیشنل نیورل نیٹ ورک اور منطق شامل ہے۔ (تفصیلات کے لیے 3.1 کا حوالہ دیں)
  • لائبریریاں انسٹال کریں: نوٹ بک چلائیں۔ 0_initialize_dependencies.ipynb تمام انحصار شروع کرنے کے لیے۔ (تفصیلات کے لیے 3.2 کا حوالہ دیں)
  • Kubernetes پر تقسیم شدہ PyTorch جاب ٹریننگ چلائیں: نوٹ بک چلائیں۔ 1_submit_pytorchdist_k8s.ipynb Python کوڈ کا استعمال کرتے ہوئے Kubernetes کسٹم ریسورس PyTorchJob YAML فائل کا استعمال کرتے ہوئے ایک پرائمری اور دو ورکر کنٹینرز پر تقسیم شدہ ٹریننگ بنانے اور جمع کرنے کے لیے۔ (تفصیلات کے لیے 3.3 کا حوالہ دیں)
  • ایک ہائبرڈ کیوب فلو پائپ لائن بنائیں: نوٹ بک چلائیں۔ 2_create_pipeline_k8s_sagemaker.ipynb ہائبرڈ کیوب فلو پائپ لائن بنانے کے لیے جو رن ٹائم متغیر کا استعمال کرتے ہوئے SageMaker یا Amazon EKS پر تقسیم شدہ ٹریننگ چلاتی ہے۔ training_runtime. (تفصیلات کے لیے 3.4 کا حوالہ دیں)

یقینی بنائیں کہ آپ نے نوٹ بک چلائی ہے۔ 1_submit_pytorchdist_k8s.ipynb اس سے پہلے کہ آپ نوٹ بک شروع کریں۔ 2_create_pipeline_k8s_sagemaker.ipynb.

اس کے بعد کے حصوں میں، ہم ان اقدامات میں سے ہر ایک پر تفصیل سے بات کرتے ہیں۔

3.1 PyTorch تقسیم شدہ ڈیٹا متوازی (DDP) ٹریننگ اسکرپٹ

تقسیم شدہ تربیت کے ایک حصے کے طور پر، ہم ایک سادہ کنولوشنل نیورل نیٹ ورک کے ذریعے تخلیق کردہ درجہ بندی کے ماڈل کو تربیت دیتے ہیں جو CIFAR10 ڈیٹاسیٹ پر کام کرتا ہے۔ تربیت کا اسکرپٹ cifar10-distributed-gpu-final.py صرف اوپن سورس لائبریریوں پر مشتمل ہے اور یہ دونوں GPU ڈیوائسز یا CPU مثالوں پر Kubernetes اور SageMaker ٹریننگ کلسٹرز پر چلانے کے لیے مطابقت رکھتی ہے۔ آئیے اپنی نوٹ بک کی مثالوں کو چلانے سے پہلے تربیتی اسکرپٹ کے چند اہم پہلوؤں کو دیکھتے ہیں۔

ہم استعمال کرتے ہیں torch.distributed ماڈیول، جس میں کلسٹر میں نوڈس میں ملٹی پروسیس متوازی کے لیے PyTorch سپورٹ اور کمیونیکیشن پرائمیٹوز شامل ہیں:

...
import torch
import torch.distributed as dist
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.utils.data
import torch.utils.data.distributed
import torchvision
from torchvision import datasets, transforms
...

ہم تصوراتی، زیادہ سے زیادہ پولنگ، اور لکیری تہوں کے امتزاج کا استعمال کرتے ہوئے ایک سادہ تصویر کی درجہ بندی کا ماڈل بناتے ہیں جس پر ماڈل ٹریننگ کے فارورڈ پاس میں ریلو ایکٹیویشن فنکشن لاگو کیا جاتا ہے:

# Define models
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)

def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x

ہم ٹارچ ڈیٹا لوڈر کا استعمال کرتے ہیں جو ڈیٹاسیٹ کو یکجا کرتا ہے اور DistributedSampler (کا استعمال کرتے ہوئے تقسیم شدہ انداز میں ڈیٹا کا سب سیٹ لوڈ کرتا ہے۔ torch.nn.parallel.DistributedDataParallel) اور ڈیٹا پر سنگل پروسیس یا ملٹی پروسیس ایٹریٹر فراہم کرتا ہے:

# Define data loader for training dataset
def _get_train_data_loader(batch_size, training_dir, is_distributed):
logger.info("Get train data loader")

train_set = torchvision.datasets.CIFAR10(root=training_dir,
train=True,
download=False,
transform=_get_transforms())

train_sampler = (
torch.utils.data.distributed.DistributedSampler(train_set) if is_distributed else None
)

return torch.utils.data.DataLoader(
train_set,
batch_size=batch_size,
shuffle=train_sampler is None,
sampler=train_sampler)
...

اگر ٹریننگ کلسٹر میں GPUs ہیں، تو اسکرپٹ CUDA ڈیوائسز پر ٹریننگ چلاتا ہے اور ڈیوائس کا متغیر ڈیفالٹ CUDA ڈیوائس رکھتا ہے:

device = "cuda" if torch.cuda.is_available() else "cpu"
...

اس سے پہلے کہ آپ PyTorch کا استعمال کرتے ہوئے تقسیم شدہ تربیت کو چلائیں۔ DistributedDataParallel متعدد نوڈس پر تقسیم شدہ پروسیسنگ چلانے کے لیے، آپ کو کال کرکے تقسیم شدہ ماحول کو شروع کرنے کی ضرورت ہے۔ init_process_group. یہ ٹریننگ کلسٹر کی ہر مشین پر شروع کیا جاتا ہے۔

dist.init_process_group(backend=args.backend, rank=host_rank, world_size=world_size)
...

ہم درجہ بندی کرنے والے ماڈل کو فوری بناتے ہیں اور ماڈل کو ٹارگٹ ڈیوائس پر کاپی کرتے ہیں۔ اگر تقسیم شدہ تربیت کو متعدد نوڈس پر چلانے کے لیے فعال کیا گیا ہے، DistributedDataParallel کلاس کو ماڈل آبجیکٹ کے ارد گرد ریپر آبجیکٹ کے طور پر استعمال کیا جاتا ہے، جو متعدد مشینوں میں ہم وقت ساز تقسیم شدہ تربیت کی اجازت دیتا ہے۔ ان پٹ ڈیٹا کو بیچ کے طول و عرض پر تقسیم کیا جاتا ہے اور ہر مشین اور ہر ڈیوائس پر ماڈل کی نقل رکھی جاتی ہے۔

model = Net().to(device)

if is_distributed:
model = torch.nn.parallel.DistributedDataParallel(model)

...

3.2 لائبریریاں انسٹال کریں۔

آپ PyTorch تقسیم شدہ تربیتی مثال کو چلانے کے لیے تمام ضروری لائبریریاں انسٹال کریں گے۔ اس میں Kubeflow Pipelines SDK، ٹریننگ آپریٹر Python SDK، Kubernetes کے لیے Python کلائنٹ اور Amazon SageMaker Python SDK شامل ہیں۔

#Please run the below commands to install necessary libraries

!pip install kfp==1.8.4

!pip install kubeflow-training

!pip install kubernetes

!pip install sagemaker

3.3 Kubernetes پر تقسیم شدہ PyTorch جاب ٹریننگ چلائیں۔

نوٹ بک 1_submit_pytorchdist_k8s.ipynb Kubeflow ٹریننگ اور Kubernetes کلائنٹ Python SDK کا استعمال کرتے ہوئے Kubernetes کسٹم ریسورس PyTorchJob YAML فائل بناتا ہے۔ اس نوٹ بک کے چند اہم ٹکڑے درج ذیل ہیں۔

ہم PyTorchJob YAML کو بنیادی اور ورکر کنٹینرز کے ساتھ بناتے ہیں جیسا کہ درج ذیل کوڈ میں دکھایا گیا ہے:

# Define PyTorchJob custom resource manifest
pytorchjob = V1PyTorchJob(
api_version="kubeflow.org/v1",
kind="PyTorchJob",
metadata=V1ObjectMeta(name=pytorch_distributed_jobname,namespace=user_namespace),
spec=V1PyTorchJobSpec(
run_policy=V1RunPolicy(clean_pod_policy="None"),
pytorch_replica_specs={"Master": master,
"Worker": worker}
)
)

یہ استعمال کرتے ہوئے Kubernetes کنٹرول طیارے کو جمع کرایا جاتا ہے۔ PyTorchJobClient:

# Creates and Submits PyTorchJob custom resource file to Kubernetes
pytorchjob_client = PyTorchJobClient()

pytorch_job_manifest=pytorchjob_client.create(pytorchjob):

Kubernetes ٹریننگ لاگز دیکھیں

آپ ٹریننگ لاگز یا تو اسی Jupyter نوٹ بک سے Python کوڈ کا استعمال کرتے ہوئے یا Kubernetes کلائنٹ شیل سے دیکھ سکتے ہیں۔

3.4 ایک ہائبرڈ Kubeflow پائپ لائن بنائیں

نوٹ بک 2_create_pipeline_k8s_sagemaker.ipynb مشروط رن ٹائم متغیر کی بنیاد پر ایک ہائبرڈ Kubeflow پائپ لائن بناتا ہے۔ training_runtimeجیسا کہ درج ذیل کوڈ میں دکھایا گیا ہے۔ نوٹ بک استعمال کرتی ہے۔ کیوب فلو پائپ لائنز SDK اور اس نے ML ورک فلو پائپ لائنوں کی وضاحت اور چلانے کے لیے Python پیکجوں کا ایک سیٹ فراہم کیا ہے۔ اس SDK کے حصے کے طور پر، ہم درج ذیل پیکیجز استعمال کرتے ہیں:

  • ڈومین مخصوص زبان (DSL) پیکیج ڈیکوریٹر dsl.pipeline، جو پائپ لائن کو واپس کرنے کے لیے ازگر کے افعال کو سجاتا ہے۔
  • ۔ dsl.Condition پیکیج، جو آپریشنز کے ایک گروپ کی نمائندگی کرتا ہے جو صرف اس وقت چلایا جاتا ہے جب کوئی خاص شرط پوری ہوتی ہے، جیسے چیک کرنا training_runtime قدر کے طور پر sagemaker or kubernetes

درج ذیل کوڈ دیکھیں:

# Define your training runtime value with either 'sagemaker' or 'kubernetes'
training_runtime='sagemaker'

# Create Hybrid Pipeline using Kubeflow PyTorch Training Operators and Amazon SageMaker Service
@dsl.pipeline(name="PyTorch Training pipeline", description="Sample training job test")
def pytorch_cnn_pipeline():

# Pipeline Step 1: to evaluate the condition. You can enter any logic here. For demonstration we are checking if GPU is needed for training
condition_result = check_condition_op(training_runtime)

# Pipeline Step 2: to run training on Kuberentes using PyTorch Training Operators. This will be executed if gpus are not needed
with dsl.Condition(condition_result.output == 'kubernetes', name="PyTorch_Comp"):
train_task = pytorch_job_op(
name=training_job_name,
namespace=user_namespace,
master_spec=json.dumps(master_spec_loaded), # Please refer file at pipeline_yaml_specifications/pipeline_master_spec.yml
worker_spec=json.dumps(worker_spec_loaded), # Please refer file at pipeline_yaml_specifications/pipeline_worker_spec.yml
delete_after_done=False
).after(condition_result)

# Pipeline Step 3: to run training on SageMaker using SageMaker Components for Pipeline. This will be executed if gpus are needed
with dsl.Condition(condition_result.output == 'sagemaker', name="SageMaker_Comp"):
training = sagemaker_train_op(
region=region,
image=train_image,
job_name=training_job_name,
training_input_mode=training_input_mode,
hyperparameters='{ 
"backend": "'+str(pytorch_backend)+'", 
"batch-size": "64", 
"epochs": "3", 
"lr": "'+str(learning_rate)+'", 
"model-type": "custom", 
"sagemaker_container_log_level": "20", 
"sagemaker_program": "cifar10-distributed-gpu-final.py", 
"sagemaker_region": "us-west-2", 
"sagemaker_submit_directory": "'+source_s3+'" 
}',
channels=channels,
instance_type=instance_type,
instance_count=instance_count,
volume_size=volume_size,
max_run_time=max_run_time,
model_artifact_path=f's3://{bucket_name}/jobs',
network_isolation=network_isolation,
traffic_encryption=traffic_encryption,
role=role,
vpc_subnets=subnet_id,
vpc_security_group_ids=security_group_id
).after(condition_result)

ہم سیج میکر کی تقسیم شدہ تربیت کو دو ml.p3.2xlarge مثالوں کا استعمال کرتے ہوئے ترتیب دیتے ہیں۔

پائپ لائن کی وضاحت کے بعد، آپ Kubeflow Pipelines SDK کا استعمال کرتے ہوئے پائپ لائن کو Argo YAML تفصیلات میں مرتب کر سکتے ہیں۔ kfp.compiler پیکج آپ Kubeflow Pipeline SDK کلائنٹ کا استعمال کرتے ہوئے اس پائپ لائن کو چلا سکتے ہیں، جو پائپ لائنز سروس اینڈ پوائنٹ کو کال کرتا ہے اور نوٹ بک سے ہی مناسب تصدیقی ہیڈر میں گزرتا ہے۔ درج ذیل کوڈ دیکھیں:

# DSL Compiler that compiles pipeline functions into workflow yaml.
kfp.compiler.Compiler().compile(pytorch_cnn_pipeline, "pytorch_cnn_pipeline.yaml")

# Connect to Kubeflow Pipelines using the Kubeflow Pipelines SDK client
client = kfp.Client()

experiment = client.create_experiment(name="kubeflow")

# Run a specified pipeline
my_run = client.run_pipeline(experiment.id, "pytorch_cnn_pipeline", "pytorch_cnn_pipeline.yaml")

# Please click “Run details” link generated below this cell to view your pipeline. You can click every pipeline step to see logs.

اگر آپ کو a sagemaker import غلطی، چلائیں !pip install sagemaker اور دانا کو دوبارہ شروع کریں (پر دانا مینو، منتخب کریں کرنل کو دوبارہ شروع کریں۔).

منتخب کیجئیے تفصیلات چلائیں۔ Kubeflow پائپ لائن دیکھنے کے لیے آخری سیل کے نیچے لنک کریں۔

پائپ لائن بنانے کا مرحلہ اس کے ساتھ دہرائیں۔ training_runtime='kubernetes' Kubernetes ماحول پر چلنے والی پائپ لائن کو جانچنے کے لیے۔ دی training_runtime متغیر کو آپ کی CI/CD پائپ لائن میں پیداواری منظر نامے میں بھی پاس کیا جا سکتا ہے۔

سیج میکر جزو کے لیے کیوب فلو پائپ لائن رن لاگز دیکھیں

درج ذیل اسکرین شاٹ سیج میکر جزو کے لیے ہماری پائپ لائن کی تفصیلات دکھاتا ہے۔

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی

تربیتی کام کا مرحلہ اور اس پر منتخب کریں۔ کھنگالیں ٹیب پر، سیج میکر لاگز تک رسائی کے لیے CloudWatch لاگز کا لنک منتخب کریں۔

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی

مندرجہ ذیل اسکرین شاٹ ہر دو ml.p3.2x بڑی مثالوں کے لیے CloudWatch لاگز دکھاتا ہے۔

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی

نوشتہ جات دیکھنے کے لیے کسی بھی گروپ کا انتخاب کریں۔

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی

Kubeflow PyTorchJob لانچر جزو کے لیے Kubeflow پائپ لائن رن لاگز دیکھیں

مندرجہ ذیل اسکرین شاٹ ہمارے Kubeflow جزو کے لیے پائپ لائن کی تفصیلات دکھاتا ہے۔

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عی

درج ذیل کمانڈز کا استعمال کرتے ہوئے چلائیں۔ Kubectl لاگز دیکھنے کے لیے آپ کے Kubernetes کلائنٹ کے شیل پر Kubernetes کلسٹر سے جڑے ہوئے ہیں (اپنی نام کی جگہ اور پوڈ کے ناموں کو تبدیل کریں):

kubectl get pods -n kubeflow-user-example-com
kubectl logs  -n kubeflow-user-example-com -f

4.1 صاف کریں۔

اکاؤنٹ میں بنائے گئے تمام وسائل کو صاف کرنے کے لیے، ہمیں انہیں الٹ ترتیب میں ہٹانے کی ضرورت ہے۔

  1. چلا کر Kubeflow کی تنصیب کو حذف کریں۔ ./kubeflow-remove.sh میں aws-do-kubeflow کنٹینر کمانڈز کا پہلا سیٹ اختیاری ہے اور اس صورت میں استعمال کیا جا سکتا ہے اگر آپ کے پاس پہلے سے کمانڈ شیل نہ ہو۔ aws-do-kubeflow کنٹینر کھلا.
    cd aws-do-kubeflow
    ./status.sh
    ./start.sh
    ./exec.sh
    
    ./kubeflow-remove.sh

  2. سے aws-do-eks کنٹینر فولڈر، EFS والیوم کو ہٹا دیں۔ کمانڈز کا پہلا سیٹ اختیاری ہے اور اس صورت میں استعمال کیا جا سکتا ہے اگر آپ کے پاس پہلے سے کمانڈ شیل نہ ہو۔ aws-do-eks کنٹینر کھلا.
    cd aws-do-eks
    ./status.sh
    ./start.sh
    ./exec.sh
    
    cd /eks/deployment/csi/efs
    ./delete.sh
    ./efs-delete.sh

    ایمیزون EFS کو حذف کرنا ضروری ہے تاکہ VPC سے وابستہ نیٹ ورک انٹرفیس کو جاری کیا جا سکے جسے ہم نے اپنے کلسٹر کے لیے بنایا ہے۔ نوٹ کریں کہ EFS والیوم کو حذف کرنے سے اس پر ذخیرہ شدہ ڈیٹا تباہ ہو جاتا ہے۔

  3. سے aws-do-eks کنٹینر، چلائیں eks-delete.sh کلسٹر اور اس سے وابستہ دیگر وسائل کو حذف کرنے کے لیے اسکرپٹ، بشمول VPC:
    cd /eks
    ./eks-delete.sh

خلاصہ

اس پوسٹ میں، ہم نے تقسیم شدہ ماڈل ٹریننگ اور ML ورک فلو کے کچھ مخصوص چیلنجوں پر تبادلہ خیال کیا۔ ہم نے AWS کی تقسیم پر Kubeflow کا ایک جائزہ فراہم کیا اور دو اوپن سورس پروجیکٹس کا اشتراک کیا (aws-do-eks اور aws-do-kubeflow) جو بنیادی ڈھانچے کی فراہمی اور اس پر کیوب فلو کی تعیناتی کو آسان بناتا ہے۔ آخر میں، ہم نے ایک ہائبرڈ فن تعمیر کو بیان کیا اور اس کا مظاہرہ کیا جو کام کے بوجھ کو خود سے منظم کبرنیٹس اور مکمل طور پر منظم SageMaker انفراسٹرکچر پر چلنے کے درمیان بغیر کسی رکاوٹ کے منتقلی کے قابل بناتا ہے۔ ہم آپ کو اس ہائبرڈ فن تعمیر کو اپنے استعمال کے معاملات کے لیے استعمال کرنے کی ترغیب دیتے ہیں۔

آپ پیروی کر سکتے ہیں AWS لیبز کا ذخیرہ Kubeflow میں AWS کی تمام شراکتوں کو ٹریک کرنے کے لیے۔ آپ ہمیں پر بھی تلاش کر سکتے ہیں۔ Kubeflow #AWS سلیک چینل; وہاں آپ کے تاثرات ہمیں Kubeflow پروجیکٹ میں تعاون کرنے کے لیے اگلی خصوصیات کو ترجیح دینے میں مدد کریں گے۔

اس پوسٹ کے آغاز میں تعاون کے لیے سری اراسناگٹا (سافٹ ویئر ڈیولپمنٹ مینیجر AWS ML) اور سورج کوٹا (سافٹ ویئر دیو انجینئر) کا خصوصی شکریہ۔


مصنفین کے بارے میں

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عیکنولجیت خرمی ایمیزون ویب سروسز میں ایک AI/ML ماہر حل آرکیٹیکٹ ہے۔ وہ AWS پروڈکٹ، انجینئرنگ اور صارفین کے ساتھ رہنمائی اور تکنیکی مدد فراہم کرنے کے لیے کام کرتا ہے تاکہ وہ AWS استعمال کرتے وقت ان کے ہائبرڈ ML سلوشنز کی قدر کو بہتر بنا سکے۔ کنولجیت کنٹینرائزڈ اور مشین لرننگ ایپلی کیشنز کے ساتھ صارفین کی مدد کرنے میں مہارت رکھتا ہے۔

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عیگوتم کمار AWS AI ڈیپ لرننگ کے ساتھ سافٹ ویئر انجینئر ہے۔ اس نے AWS ڈیپ لرننگ کنٹینرز اور AWS ڈیپ لرننگ AMI تیار کیے ہیں۔ وہ AI کے لیے ٹولز اور سسٹم بنانے کا شوقین ہے۔ اپنے فارغ وقت میں وہ بائیک چلانے اور کتابیں پڑھنے سے لطف اندوز ہوتے ہیں۔

AWS اور Amazon SageMaker PlatoBlockchain Data Intelligence پر Kubeflow کا استعمال کرتے ہوئے لچکدار اور توسیع پذیر تقسیم شدہ تربیتی فن تعمیرات بنائیں۔ عمودی تلاش۔ عیالیکس ایانکولسکی ایک مکمل اسٹیک سافٹ ویئر اور انفراسٹرکچر آرکیٹیکٹ ہے جو گہرا، ہاتھ سے کام کرنا پسند کرتا ہے۔ وہ فی الحال AWS میں سیلف مینیجڈ مشین لرننگ کے لیے پرنسپل سلوشنز آرکیٹیکٹ ہیں۔ اپنے کردار میں وہ کنٹینر سے چلنے والی AWS خدمات پر ML اور AI کام کے بوجھ کے کنٹینرائزیشن اور آرکیسٹریشن کے ساتھ صارفین کی مدد کرنے پر توجہ مرکوز کرتا ہے۔ وہ اوپن سورس کے مصنف بھی ہیں۔ فریم ورک کریں۔ اور ایک ڈوکر کپتان جو دنیا کے سب سے بڑے چیلنجز کو حل کرتے ہوئے اختراع کی رفتار کو تیز کرنے کے لیے کنٹینر ٹیکنالوجیز کا اطلاق کرنا پسند کرتا ہے۔ گزشتہ 10 سالوں کے دوران، الیکس نے موسمیاتی تبدیلیوں کا مقابلہ کرنے، AI اور ML کو جمہوری بنانے، سفر کو محفوظ بنانے، صحت کی دیکھ بھال کو بہتر بنانے اور توانائی کو بہتر بنانے پر کام کیا ہے۔

ٹائم اسٹیمپ:

سے زیادہ AWS مشین لرننگ