Amazon SageMaker پر Hugging Face Transformers کا استعمال کرتے ہوئے سوال جواب دینے والے ٹاسک کے لیے BERT بڑے ماڈل کی فائن ٹیوننگ تقسیم کی گئی۔

ماخذ نوڈ: 1883364

نئے ماڈلز کی تربیت سے لے کر انہیں پروڈکشن میں تعینات کرنے تک، ایمیزون سیج میکر مشین لرننگ (ML) اور ڈیپ لرننگ کی طاقت کو بروئے کار لانے کے لیے اسٹارٹ اپس اور انٹرپرائزز کے لیے ٹولز کا سب سے مکمل سیٹ پیش کرتا ہے۔

اپنی ٹرانسفارمرز اوپن سورس لائبریری اور ML پلیٹ فارم کے ساتھ، Hugging Face ٹرانسفر لرننگ اور جدید ترین ML ماڈلز کو عالمی AI کمیونٹی کے لیے قابل رسائی بناتا ہے، جس سے دنیا بھر کی کمپنیوں میں ڈیٹا سائنسدانوں اور ML انجینئرز کے لیے ہر نئی سائنس سے فائدہ اٹھانے کے لیے درکار وقت کو کم کیا جاتا ہے۔ ترقی

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

ہاتھ میں موجود کاروباری مسئلے کے لیے درست پیشین گوئیاں پیش کرنے کے لیے ماڈل کو ٹھیک کرنے کے لیے بڑے ٹرانسفارمرز ماڈلز کی تربیت کی ضرورت ہوتی ہے، مثال کے طور پر، BERT، BART، RoBERta، T5، جو قابل توسیع طریقے سے انجام دینا مشکل ہو سکتا ہے۔

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

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

تقسیم شدہ تربیت کا جائزہ

ایم ایل پریکٹیشنرز اور ڈیٹا سائنسدانوں کو ماڈلز کی تربیت کرتے وقت اسکیلنگ کے دو چیلنجز کا سامنا کرنا پڑتا ہے: اسکیلنگ ماڈل سائز (پیرامیٹر اور پرتوں کی تعداد) اور اسکیلنگ ٹریننگ ڈیٹا۔ ماڈل کے سائز یا ٹریننگ ڈیٹا کو اسکیل کرنے کا نتیجہ بہتر درستگی کا باعث بن سکتا ہے، لیکن گہری سیکھنے میں ایسے معاملات ہوسکتے ہیں جہاں ایکسلریٹر (سی پی یو یا جی پی یو) پر میموری کی مقدار تربیتی ڈیٹا کے سائز اور اس کے سائز کے امتزاج کو محدود کرتی ہے۔ ماڈل مثال کے طور پر، ایک بڑے زبان کے ماڈل کی تربیت کرتے وقت، بیچ کا سائز اکثر نمونوں کی ایک چھوٹی تعداد تک محدود ہوتا ہے، جس کے نتیجے میں کم درست ماڈل ہو سکتا ہے۔

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

جس چیز کو ہم پیمانہ بنانا چاہتے ہیں (ماڈل یا ڈیٹا) اس کی بنیاد پر تقسیم شدہ تربیت کے دو طریقے ہیں: ڈیٹا متوازی اور ماڈل متوازی.

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

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

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

شرائط

SageMaker میں Hugging Face Transformers ماڈلز کی تقسیم شدہ تربیت انجام دینے کے لیے، آپ کو درج ذیل شرائط کو پورا کرنے کی ضرورت ہے:

تقسیم شدہ تربیت کو نافذ کریں۔

Hugging Face Transformers لائبریری ایک Trainer API فراہم کرتی ہے جو لائبریری کے فراہم کردہ ماڈلز کو تربیت دینے یا ٹھیک کرنے کے لیے موزوں ہے۔ آپ اسے اپنے ماڈلز پر بھی استعمال کر سکتے ہیں اگر وہ ٹرانسفارمرز ماڈلز کی طرح کام کرتے ہیں۔ دیکھیں ٹرینر مزید تفصیلات کے لیے. یہ API ہمارے میں استعمال ہوتا ہے۔ مثال کے طور پر سکرپٹ، جو یہ بتاتا ہے کہ مختلف NLP کاموں کے لیے ڈیٹا کو پری پروسیس کرنے کا طریقہ، جسے آپ اپنی مرضی کے مطابق مسئلہ حل کرنے کے لیے اسکرپٹ لکھنے کے لیے بطور ماڈل لے سکتے ہیں۔ ٹرینر API کا وعدہ یہ ہے کہ یہ اسکرپٹ سیج میکر سمیت کسی بھی تقسیم شدہ سیٹ اپ پر باکس سے باہر کام کرتا ہے۔

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

پردے کے پیچھے، ٹرینر API اس ماحول کا تجزیہ کرنے سے شروع ہوتا ہے جس میں آپ اپنا اسکرپٹ شروع کر رہے ہیں جب آپ TrainingArguments. مثال کے طور پر، اگر آپ نے سیج میکر کے ساتھ اپنی تربیت شروع کی ہے، تو یہ دیکھتا ہے۔ SM_FRAMEWORK_PARAMS ماحول میں متغیر کا پتہ لگانے کے لیے کہ آیا آپ نے SageMaker ڈیٹا کے متوازی یا ماڈل کے متوازی کو فعال کیا ہے۔ پھر یہ ضروری ابتدائی مراحل (جیسے کہ smdistributed.dataparallel.torch.distributed.init_process_group()).

ٹرینر میں پورا ٹریننگ لوپ ہوتا ہے، لہذا یہ یقینی بنانے کے لیے ضروری اقدامات کو ایڈجسٹ کر سکتا ہے۔ smdistributed.dataparallel ضرورت پڑنے پر بیک اینڈ استعمال کیا جاتا ہے جب آپ کو اپنی اسکرپٹ میں کوڈ کی لائن کو تبدیل کیے بغیر۔ یہ ڈیبگنگ کے لیے آپ کی مقامی مشین پر (بہت سست ہونے کے باوجود) چل سکتا ہے۔ یہ آپ کے ڈیٹاسیٹ کی شارڈنگ کو اس طرح سنبھالتا ہے کہ ہر عمل خود بخود مختلف نمونے دیکھتا ہے، ہر دور میں ردوبدل کے ساتھ، آپٹمائزیشن کے مرحلے سے پہلے آپ کے گریڈیئنٹس کو سنکرونائز کرتا ہے، اگر آپ اسے چالو کرتے ہیں تو مخلوط درستگی کی تربیت، اگر آپ بڑے بیچ سائز پر فٹ نہیں ہو پاتے ہیں تو میلان جمع کرنا۔ آپ کے GPUs، اور بہت سی مزید اصلاحات۔

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

تشخیص اور پیشین گوئی کے طریقے استعمال کرتے وقت، ٹرینر آپ کے تمام GPUs سے فائدہ اٹھانے کے لیے تقسیم شدہ تشخیص کرتا ہے۔ یہ ہر عمل کے لیے آپ کے ڈیٹا کی تقسیم کو مناسب طریقے سے سنبھالتا ہے (اسی کا عمل dp_rank اگر ماڈل کی ہم آہنگی کو چالو کیا جاتا ہے) اور اس بات کو یقینی بناتا ہے کہ پیشین گوئیاں اسی ترتیب میں جمع کی گئی ہیں جیسا کہ آپ ڈیٹاسیٹ کو بھیجنے سے پہلے استعمال کر رہے ہیں۔ compute_metrics فنکشن یا صرف واپس آیا۔ ٹرینر API کا استعمال لازمی نہیں ہے۔ صارفین اب بھی Hugging Face کے اندر Keras یا PyTorch استعمال کر سکتے ہیں۔ تاہم، ٹرینر API ایک مددگار تجریدی پرت فراہم کر سکتا ہے۔

SageMaker Hugging Face Estimators کا استعمال کرتے ہوئے ایک ماڈل کو تربیت دیں۔

تخمینہ کنندہ سیج میکر کی تربیت کے لیے ایک اعلیٰ سطحی انٹرفیس ہے اور آخر سے آخر تک سیج میکر کی تربیت اور تعیناتی کے کاموں کو ہینڈل کرتا ہے۔ جب آپ کال کرتے ہیں تو آپ کے اسکرپٹ کی تربیت کا مطالبہ کیا جاتا ہے۔ fit ایک پر HuggingFace تخمینہ لگانے والا۔ تخمینہ لگانے والے میں، آپ وضاحت کرتے ہیں کہ کونسی فائن ٹیوننگ اسکرپٹ کو بطور استعمال کرنا ہے۔ entry_point، جس instance_type استعمال کرنے کے لیے، اور کون سے ہائپرپیرامیٹرس پاس کیے گئے ہیں۔ کے بارے میں مزید معلومات کے لیے HuggingFace پیرامیٹرز، دیکھیں گلے لگانا چہرے کا تخمینہ لگانے والا.

تقسیم شدہ تربیت: ڈیٹا متوازی

اس مثال میں، ہم نئے Hugging Face DLCs اور SageMaker SDK کا استعمال کرتے ہیں ٹرانسفارمرز اور ڈیٹا سیٹ لائبریریوں کا استعمال کرتے ہوئے سوال اور جواب دینے کے کام پر تقسیم شدہ Seq2Seq-ٹرانسفارمر ماڈل کو تربیت دینے کے لیے۔ دی bert-large-uncased-پورے-لفظ کی نقاب پوش ماڈل پر ٹھیک ہے اسکواڈ ڈیٹاسیٹ

درج ذیل کوڈ کے نمونے آپ کو a بنانے کے مراحل دکھاتے ہیں۔ HuggingFace اعداد و شمار کے متوازی کے ساتھ تقسیم شدہ تربیت کا تخمینہ لگانے والا۔

  1. گلے لگانے والا چہرہ ٹرانسفارمرز اسکرپٹ کا انتخاب کریں:
    # git configuration to download our fine-tuning script
    git_config = {'repo': 'https://github.com/huggingface/transformers.git','branch': 'v4.6.1'}

جب آپ بناتے ہو a HuggingFace تخمینہ لگانے والا، آپ ایک تربیتی اسکرپٹ کی وضاحت کر سکتے ہیں جو گٹ ہب کے ذخیرے میں تخمینہ لگانے والے کے اندراج کے نقطہ کے طور پر محفوظ ہے، لہذا آپ کو مقامی طور پر اسکرپٹس کو ڈاؤن لوڈ کرنے کی ضرورت نہیں ہے۔ آپ استعمال کر سکتے ہیں git_config اگر آپ کے transformers_version ترتیب دینے کی ضرورت ہے۔ مثال کے طور پر، اگر آپ استعمال کرتے ہیں transformers_version 4.6.1، آپ کو استعمال کرنا ہوگا'branch':'v4.6.1'.

  1. تربیتی کام میں منتقل ہونے والے تربیتی ہائپرپیرامیٹرس کو ترتیب دیں:
    # hyperparameters, which are passed into the training job
    hyperparameters={ 'model_name_or_path': 'bert-large-uncased-whole-word-masking', 'dataset_name':'squad', 'do_train': True, 'do_eval': True, 'fp16': True, 'per_device_train_batch_size': 4, 'per_device_eval_batch_size': 4, 'num_train_epochs': 2, 'max_seq_length': 384, 'max_steps': 100, 'pad_to_max_length': True, 'doc_stride': 128, 'output_dir': '/opt/ml/model'
    }

ایک ہائپر پیرامیٹر کے طور پر، ہم کسی بھی کی وضاحت کر سکتے ہیں۔ Seq2SeqTrainingArguments اور تربیت کے اسکرپٹ میں بیان کردہ۔

  1. میں تقسیم کے پیرامیٹرز کی وضاحت کریں۔ HuggingFace تخمینہ لگانے والا:
    # configuration for running training on smdistributed Data Parallel
    distribution = {'smdistributed':{'dataparallel':{ 'enabled': True }}}

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

  1. ایک تخلیق کریں HuggingFace تخمینہ کنندہ بشمول پچھلے مراحل میں بیان کردہ پیرامیٹرز اور تربیت شروع کریں:
from sagemaker.huggingface import HuggingFace
# estimator
huggingface_estimator = HuggingFace(entry_point='run_qa.py', source_dir='./examples/pytorch/question-answering', git_config=git_config, instance_type= 'ml.p3.16xlarge', instance_count= 2, volume_size= 200, role= <SageMaker Role>, # IAM role, transformers_version='4.6', pytorch_version='1.7', py_version='py36', distribution= distribution, hyperparameters = hyperparameters) # starting the train job huggingface_estimator.fit()

۔ گلے لگانا چہرہ ٹرانسفارمرز ذخیرہ لینگویج ماڈلنگ سے لے کر ٹوکن کی درجہ بندی تک کاموں پر فائن ٹیوننگ ماڈلز کے لیے کئی مثالیں اور اسکرپٹس پر مشتمل ہے۔ ہمارے معاملے میں، ہم استعمال کرتے ہیں run_qa.py سے examples/pytorch/question-answering مثال کے طور پر.

smdistributed.dataparallel کے ساتھ SageMaker پر ماڈل ٹریننگ کی حمایت کرتا ہے۔ صرف مندرجہ ذیل مثال کی اقسام. بہترین کارکردگی کے لیے، ہم سپورٹ کرنے والی مثال کی قسم استعمال کرنے کی تجویز کرتے ہیں۔ لچکدار فیبرک اڈاپٹر (EFA):

  • ml.p3.16xlarge
  • ml.p3dn.24xlarge (تجویز کردہ)
  • ml.p4d.24xlarge (تجویز کردہ)

بہترین کارکردگی اور زیادہ سے زیادہ حاصل کرنے کے لیے SMDataParallel، آپ کو کم از کم دو مثالیں استعمال کرنی چاہئیں، لیکن آپ اس مثال کو جانچنے کے لیے ایک بھی استعمال کر سکتے ہیں۔

مندرجہ ذیل مثال کے طور پر نوٹ بک مزید تفصیلی مرحلہ وار رہنمائی فراہم کرتا ہے۔

تقسیم شدہ تربیت: ماڈل متوازی

ماڈل متوازی کے ساتھ تقسیم شدہ تربیت کے لیے، ہم سیج میکر ایس ڈی کے کے ساتھ مل کر ہیگنگ فیس ٹرانسفارمرز اور ڈیٹا سیٹس لائبریری کا استعمال کرتے ہیں عام زبان کی تفہیم کی تشخیص (GLUE) کا استعمال کرتے ہوئے ملٹی نوڈ، ملٹی-جی پی یو کلسٹر پر بینچ مارک سیج میکر ماڈل متوازی لائبریری.

جیسا کہ ڈیٹا کے ہم آہنگی کے ساتھ، ہم نے پہلے گٹ کنفیگریشن، ٹریننگ ہائپر پیرامیٹر اور ڈسٹری بیوشن پیرامیٹرز HuggingFace تخمینہ لگانے والا:

# git configuration to download our fine-tuning script
git_config = {'repo': 'https://github.com/huggingface/transformers.git','branch': 'v4.6.1'} # hyperparameters, which are passed into the training job
hyperparameters={ 'model_name_or_path':'roberta-large', 'task_name': 'mnli', 'per_device_train_batch_size': 16, 'per_device_eval_batch_size': 16, 'do_train': True, 'do_eval': True, 'do_predict': True, 'num_train_epochs': 2, 'output_dir':'/opt/ml/model', 'max_steps': 500,
} # configuration for running training on smdistributed Model Parallel
mpi_options = { "enabled" : True, "processes_per_host" : 8,
}
smp_options = { "enabled":True, "parameters": { "microbatches": 4, "placement_strategy": "spread", "pipeline": "interleaved", "optimize": "speed", "partitions": 4, "ddp": True, }
} distribution={ "smdistributed": {"modelparallel": smp_options}, "mpi": mpi_options
}

ماڈل متوازی لائبریری اندرونی طور پر MPI استعمال کرتی ہے، اس لیے ماڈل کے متوازی کو استعمال کرنے کے لیے، MPI کو ڈسٹری بیوشن پیرامیٹر کا استعمال کرتے ہوئے فعال کیا جانا چاہیے۔ "processes_per_host" پچھلے کوڈ میں ہر میزبان پر MPI کو شروع کرنے کے عمل کی تعداد کی وضاحت کرتا ہے۔ ہم انہیں ترقی اور جانچ کے لیے تجویز کرتے ہیں۔ پیداوار کے وقت، اگر آپ وسیع GPU گنجائش کی درخواست کرتے ہیں تو آپ AWS سپورٹ سے رابطہ کر سکتے ہیں۔ مزید معلومات کے لیے دیکھیں ایک SageMaker تقسیم شدہ ماڈل متوازی تربیتی جاب چلائیں۔.

مندرجہ ذیل مثال کے طور پر نوٹ بک مکمل کوڈ اسکرپٹ پر مشتمل ہے۔

اسپاٹ مثالوں

SageMaker Python SDK کے لیے Hugging Face کے فریم ورک کی توسیع کے ساتھ، ہم مکمل طور پر منظم ہونے سے بھی فائدہ اٹھا سکتے ہیں۔ ایمیزون لچکدار کمپیوٹ کلاؤڈ (ایمیزون ای سی 2) اسپاٹ مثالوں اور ہماری تربیتی لاگت کا 90% تک بچائیں۔

جب تک کہ آپ کا تربیتی کام تیزی سے مکمل نہ ہو، ہم آپ کو استعمال کرنے کی تجویز کرتے ہیں۔ چیکپوائنٹنگ منظم جگہ کی تربیت کے ساتھ، لہذا آپ کو وضاحت کرنے کی ضرورت ہے checkpoint_s3_uri.

کے ساتھ اسپاٹ انسٹینس استعمال کرنے کے لیے HuggingFace تخمینہ لگانے والا، ہمیں سیٹ کرنا ہوگا۔ use_spot_instances پیرامیٹر کو درست کریں اور آپ کی وضاحت کریں۔ max_wait اور max_run وقت منظم سپاٹ ٹریننگ لائف سائیکل کے بارے میں مزید معلومات کے لیے، دیکھیں ایمیزون سیج میکر میں اسپاٹ ٹریننگ کا انتظام کیا۔.

اسپاٹ ٹریننگ اسٹیمیٹر کو ترتیب دینے کے لیے درج ذیل کوڈ کا ٹکڑا ہے:

from sagemaker.huggingface import HuggingFace # hyperparameters, which are passed into the training job
hyperparameters={'epochs': 1, 'train_batch_size': 32, 'model_name':'distilbert-base-uncased', 'output_dir':'/opt/ml/checkpoints' } # s3 uri where our checkpoints will be uploaded during training
job_name = "using-spot"
checkpoint_s3_uri = f's3://{sess.default_bucket()}/{job_name}/checkpoints' huggingface_estimator = HuggingFace(entry_point='train.py', source_dir='./scripts', instance_type='ml.p3.2xlarge', instance_count=1, base_job_name=job_name, checkpoint_s3_uri=checkpoint_s3_uri, use_spot_instances=True, max_wait=3600, # This should be equal to or greater than max_run in seconds' max_run=1000, # expected max run in seconds role=role, transformers_version='4.6', pytorch_version='1.7', py_version='py36', hyperparameters = hyperparameters)

مندرجہ ذیل نوٹ بک مکمل کوڈ اسکرپٹ پر مشتمل ہے۔

نتیجہ

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

ڈیٹا کے متوازی استعمال کے معاملے میں جس پر ہم نے تبادلہ خیال کیا ہے، ایک ماڈل کو ایک p3.2x بڑی مثال (ایک GPU کے ساتھ) پر تربیت دینے میں 4 گھنٹے لگتے ہیں اور اس تحریر کے وقت تقریباً 15 ڈالر لاگت آتی ہے۔ ڈیٹا متوازی کے ساتھ، ہم اسی ماڈل کو 24 منٹ میں 28 ڈالر کی لاگت سے تربیت دے سکتے ہیں۔ اگرچہ لاگت دوگنی ہو گئی ہے، اس نے تربیت کے وقت میں 10 کے عنصر کی کمی کر دی ہے۔ ایسی صورت حال کے لیے جس میں آپ کو بہت سے ماڈلز کو مختصر وقت کے اندر تربیت دینے کی ضرورت ہے، ڈیٹا کی ہم آہنگی نسبتاً کم لاگت میں اضافے پر اسے فعال کر سکتی ہے۔ جہاں تک ماڈل کے متوازی استعمال کے معاملے کا تعلق ہے، اس میں ایسے ماڈلز کو تربیت دینے کی صلاحیت شامل ہوتی ہے جو ہارڈ ویئر کی حدود کی وجہ سے پہلے بالکل بھی تربیت یافتہ نہیں ہو سکتے تھے۔ دونوں خصوصیات ایم ایل پریکٹیشنرز کے لیے نئے ورک فلو کو فعال کرتی ہیں، اور اس کے ذریعے آسانی سے قابل رسائی ہیں۔ HuggingFace SageMaker Python SDK کے ایک حصے کے طور پر تخمینہ لگانے والا۔ ان ماڈلز کو میزبانی کے اختتامی مقامات پر تعینات کرنا اسی طریقہ کار کی پیروی کرتا ہے جیسا کہ دوسرے تخمینہ کاروں کے لیے۔

یہ انضمام دوسری خصوصیات کو قابل بناتا ہے جو SageMaker ماحولیاتی نظام کا حصہ ہیں۔ مثال کے طور پر، آپ اضافی لاگت کی اصلاح کے لیے تخمینہ لگانے والے میں ایک سادہ جھنڈا شامل کر کے اسپاٹ انسٹینس کا استعمال کر سکتے ہیں۔ اگلے قدم کے طور پر، آپ تلاش اور چلا سکتے ہیں۔ تربیتی ڈیمو اور مثال کے طور پر نوٹ بک.


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

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

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

فلپ شمڈ Hugging Face میں مشین لرننگ انجینئر اور ٹیک لیڈ ہے، جہاں وہ Amazon SageMaker ٹیم کے ساتھ تعاون کی قیادت کرتا ہے۔ وہ جدید ترین NLP ماڈلز کو جمہوری بنانے، بہتر بنانے اور تیار کرنے اور ڈیپ لرننگ کے لیے استعمال میں آسانی کو بہتر بنانے کے بارے میں پرجوش ہے۔

سلوین گوگر ہگنگ فیس میں ریسرچ انجینئر ہے اور ٹرانسفارمرز لائبریری کے اہم مینٹینرز میں سے ایک ہے۔ وہ اوپن سورس سافٹ ویئر سے محبت کرتا ہے اور اسے استعمال کرنے میں کمیونٹی کی مدد کرتا ہے۔

جیف باؤڈر Hugging Face پر پروڈکٹس بناتا ہے، ٹرانسفارمرز کے خالق، معروف اوپن سورس ML لائبریری۔ پہلے جیف Stupeflix کے شریک بانی تھے، جسے GoPro نے حاصل کیا تھا، جہاں انہوں نے پروڈکٹ مینجمنٹ، پروڈکٹ مارکیٹنگ، بزنس ڈویلپمنٹ اور کارپوریٹ ڈویلپمنٹ کے ڈائریکٹر کے طور پر خدمات انجام دیں۔

ماخذ: https://aws.amazon.com/blogs/machine-learning/distributed-fine-tuning-of-a-bert-large-model-for-a-question-answering-task-using-hugging-face- transformers-on-amazon-sagemaker/

ٹائم اسٹیمپ:

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