گریڈینٹ AWS Inferentia کے ساتھ LLM بینچ مارکنگ کو لاگت سے موثر اور آسان بناتا ہے۔ ایمیزون ویب سروسز

گریڈینٹ AWS Inferentia کے ساتھ LLM بینچ مارکنگ کو لاگت سے موثر اور آسان بناتا ہے۔ ایمیزون ویب سروسز

یہ ایک گیسٹ پوسٹ ہے جو مائیکل فیل کے ساتھ مل کر گریڈینٹ میں لکھی گئی ہے۔

بڑے لینگویج ماڈلز (LLMs) کی کارکردگی کا اندازہ لگانا تعیناتی سے پہلے پری ٹریننگ اور فائن ٹیوننگ کے عمل کا ایک اہم مرحلہ ہے۔ آپ جتنی تیز اور زیادہ بار کارکردگی کی توثیق کرنے کے قابل ہوں گے، اتنے ہی زیادہ امکانات ہوں گے کہ آپ ماڈل کی کارکردگی کو بہتر بنا سکیں گے۔

At میلان، ہم اپنی مرضی کے مطابق ایل ایل ایم کی ترقی پر کام کرتے ہیں، اور ابھی حال ہی میں ہمارے اے آئی ڈیولپمنٹ لیب, انٹرپرائز تنظیموں کو نجی، کسٹم LLMs اور مصنوعی ذہانت (AI) کو پائلٹس بنانے کے لیے ایک ذاتی نوعیت کی، اینڈ ٹو اینڈ ڈیولپمنٹ سروس پیش کرنا۔ اس عمل کے حصے کے طور پر، ہم کھلے اور ملکیتی معیارات کے خلاف اپنے ماڈلز (ٹیونڈ، تربیت یافتہ، اور کھلے) کی کارکردگی کا باقاعدگی سے جائزہ لیتے ہیں۔ اپنے ماڈلز کو تربیت دینے کے لیے AWS ٹیم کے ساتھ کام کرتے ہوئے AWS ٹرینیم، ہم نے محسوس کیا کہ ہم VRAM اور GPU مثالوں کی دستیابی دونوں تک محدود تھے جب یہ LLM تشخیص کے مرکزی دھارے کے ٹول کی بات کی گئی تھی، lm-evaluation-harness. یہ اوپن سورس فریم ورک آپ کو مختلف تشخیصی کاموں اور بینچ مارکس میں مختلف جنریٹیو لینگویج ماڈلز سکور کرنے دیتا ہے۔ یہ لیڈر بورڈ کے ذریعہ استعمال کیا جاتا ہے جیسے گلے لگانے والا چہرہ عوامی بینچ مارکنگ کے لیے۔

ان چیلنجوں پر قابو پانے کے لیے، ہم نے اپنے حل — انٹیگریٹنگ کو بنانے اور کھولنے کا فیصلہ کیا۔ AWS نیوران، پیچھے لائبریری AWS Inferentia اور ٹرینیم، میں lm-evaluation-harness. اس انضمام نے بینچ مارک کو ممکن بنایا v-alpha-tross، ہمارے Albatross ماڈل کا ابتدائی ورژن، تربیتی عمل کے دوران اور اس کے بعد دیگر عوامی ماڈلز کے خلاف۔

سیاق و سباق کے لیے، یہ انضمام lm-evaluation-harness کے اندر ایک نئے ماڈل کلاس کے طور پر چلتا ہے، اصل تشخیصی کام کو متاثر کیے بغیر، ٹوکنز کے تخمینے اور لاگ ان کے امکانات کے تخمینے کا خلاصہ کرتا ہے۔ ہماری اندرونی ٹیسٹنگ پائپ لائن کو منتقل کرنے کا فیصلہ ایمیزون لچکدار کمپیوٹ کلاؤڈ (ایمیزون ای سی 2) Inf2 مثالیں۔ (AWS Inferentia2 کے ذریعے تقویت یافتہ) نے ہمیں 384 GB تک مشترکہ ایکسلریٹر میموری تک رسائی حاصل کرنے کے قابل بنایا، آسانی سے ہمارے تمام موجودہ عوامی فن تعمیرات کو فٹ کرتا ہے۔ AWS Spot Instances کا استعمال کرتے ہوئے، ہم AWS کلاؤڈ میں غیر استعمال شدہ EC2 صلاحیت سے فائدہ اٹھانے کے قابل ہو گئے — جس سے قیمت کی بچت کو %90 تک رعایت کے ساتھ آن ڈیمانڈ قیمتوں سے حاصل ہو سکے۔ اس نے جانچ میں لگنے والے وقت کو کم کر دیا اور ہمیں زیادہ کثرت سے ٹیسٹ کرنے کی اجازت دی کیونکہ ہم متعدد مثالوں میں جانچ کرنے کے قابل تھے جو آسانی سے دستیاب تھے اور جب ہم ختم ہو گئے تو مثالیں جاری کر دیں۔

اس پوسٹ میں، ہم اپنے ٹیسٹوں کی تفصیلی بریک ڈاؤن، چیلنجز جن کا ہمیں سامنا ہوا، اور AWS Inferentia پر ٹیسٹنگ ہارنس استعمال کرنے کی ایک مثال دیتے ہیں۔

AWS Inferentia2 پر بینچ مارکنگ

اس پروجیکٹ کا مقصد یکساں اسکور بنانا تھا جیسا کہ میں دکھایا گیا ہے۔ ایل ایل ایم لیڈر بورڈ کھولیں۔ (Huging Face پر دستیاب بہت سے CausalLM ماڈلز کے لیے)، جبکہ اسے نجی بینچ مارکس کے خلاف چلانے کی لچک کو برقرار رکھتے ہوئے دستیاب ماڈلز کی مزید مثالیں دیکھنے کے لیے، دیکھیں AWS Inferentia اور Trainium گلے ملنے والے چہرے پر۔

ہگنگ فیس ٹرانسفارمرز سے ہگنگ فیس تک ماڈل پر پورٹ کرنے کے لیے کوڈ کی ضرورت ہوتی ہے۔ بہترین نیوران ازگر کی لائبریری کافی کم تھی۔ کیونکہ lm-evaluation-harness استعمال کرتا ہے۔ AutoModelForCausalLMکا استعمال کرتے ہوئے متبادل میں کمی ہے NeuronModelForCausalLM. پہلے سے مرتب کردہ ماڈل کے بغیر، ماڈل خود بخود اس لمحے میں مرتب ہو جاتا ہے، جو کسی کام میں 15-60 منٹ کا اضافہ کر سکتا ہے۔ اس سے ہمیں کسی بھی AWS Inferentia2 مثال اور معاون CausalLM ماڈل کے لیے ٹیسٹنگ تعینات کرنے کی لچک ملی۔

نتائج کی نمائش

معیارات اور ماڈلز کے کام کرنے کے طریقے کی وجہ سے، ہمیں توقع نہیں تھی کہ مختلف رنز میں اسکور بالکل مماثل ہوں گے۔ تاہم، انہیں معیاری انحراف کی بنیاد پر بہت قریب ہونا چاہیے، اور ہم نے اسے مسلسل دیکھا ہے، جیسا کہ درج ذیل جدول میں دکھایا گیا ہے۔ ابتدائی بینچ مارکس جو ہم نے AWS Inferentia2 پر چلائے ان سب کی تصدیق Hugging Face لیڈر بورڈ سے ہوئی۔

In lm-evaluation-harness، مختلف ٹیسٹوں کے ذریعہ استعمال ہونے والے دو اہم سلسلے ہیں: generate_until اور loglikelihood. gsm8k ٹیسٹ بنیادی طور پر استعمال کرتا ہے۔ generate_until جوابات پیدا کرنے کے لیے بالکل اسی طرح جیسے تخمینہ کے دوران۔ Loglikelihood بنیادی طور پر بینچ مارکنگ اور ٹیسٹنگ میں استعمال ہوتا ہے، اور مختلف آؤٹ پٹ کے پیدا ہونے کے امکان کی جانچ کرتا ہے۔ دونوں نیوران میں کام کرتے ہیں، لیکن loglikelihood SDK 2.16 میں طریقہ امکانات کا تعین کرنے کے لیے اضافی اقدامات کا استعمال کرتا ہے اور اس میں اضافی وقت لگ سکتا ہے۔

Lm-evaluation-harness کے نتائج
ہارڈ ویئر کی تشکیل اصل نظام AWS Inferentia inf2.48xlarge
gsm1k پر mistralai/Mistral-7B-Instruct-v0.1 کا جائزہ لینے کے لیے batch_size=8 کے ساتھ وقت 103 منٹ 32 منٹ
gsm8k پر اسکور (جواب حاصل کریں – std کے ساتھ exact_match) 0.3813 - 0.3874 (± 0.0134) 0.3806 - 0.3844 (± 0.0134)

نیوران اور lm-evaluation-harness کے ساتھ شروع کریں۔

اس سیکشن میں موجود کوڈ آپ کو استعمال کرنے میں مدد کر سکتا ہے۔ lm-evaluation-harness اور اسے Hugging Face پر معاون ماڈلز کے خلاف چلائیں۔ کچھ دستیاب ماڈلز دیکھنے کے لیے، ملاحظہ کریں۔ AWS Inferentia اور Trainium گلے ملنے والے چہرے پر۔

اگر آپ AWS Inferentia2 پر چلنے والے ماڈلز سے واقف ہیں، تو آپ محسوس کر سکتے ہیں کہ وہاں کوئی نہیں num_cores سیٹنگ پاس ہو گئی۔ ہمارا کوڈ پتہ لگاتا ہے کہ کتنے کور دستیاب ہیں اور خود بخود اس نمبر کو پیرامیٹر کے طور پر پاس کر دیتا ہے۔ یہ آپ کو ایک ہی کوڈ کا استعمال کرتے ہوئے ٹیسٹ چلانے دیتا ہے قطع نظر اس کے کہ آپ کس مثال کے سائز کا استعمال کر رہے ہیں۔ آپ یہ بھی محسوس کر سکتے ہیں کہ ہم اصل ماڈل کا حوالہ دے رہے ہیں، نہ کہ نیوران کے مرتب کردہ ورژن کا۔ کنٹرول خود بخود آپ کے لیے ضرورت کے مطابق ماڈل مرتب کرتا ہے۔

درج ذیل اقدامات آپ کو دکھاتے ہیں کہ گریڈینٹ کو کیسے تعینات کیا جائے۔ gradientai/v-alpha-tross ہم نے تجربہ کیا ماڈل۔ اگر آپ کسی چھوٹی مثال کے ساتھ چھوٹی مثال کے ساتھ جانچ کرنا چاہتے ہیں تو آپ استعمال کر سکتے ہیں۔ mistralai/Mistral-7B-v0.1 ماڈل.

  1. آن ڈیمانڈ Inf مثالوں کو چلانے کے لیے پہلے سے طے شدہ کوٹہ 0 ہے، لہذا آپ کو سروس کوٹہ کے ذریعے اضافے کی درخواست کرنی چاہیے۔ تمام Inf Spot Instance کی درخواستوں کے لیے ایک اور درخواست شامل کریں تاکہ آپ Spot Instances کے ساتھ جانچ کر سکیں۔ آپ کو اس مثال کے لیے inf192xlarge مثال کے لیے 2.48 vCPUs کا کوٹہ درکار ہوگا، یا بنیادی inf4.xlarge کے لیے 2 vCPUs کا کوٹہ چاہیے (اگر آپ Mistral ماڈل کو تعینات کر رہے ہیں)۔ کوٹہ AWS ریجن کے لیے مخصوص ہیں، اس لیے یقینی بنائیں کہ آپ نے درخواست کی ہے۔ us-east-1 or us-west-2.
  2. اپنے ماڈل کی بنیاد پر اپنی مثال پر فیصلہ کریں۔ کیونکہ v-alpha-tross ایک 70B فن تعمیر ہے، ہم نے ایک inf2.48xlarge مثال استعمال کرنے کا فیصلہ کیا۔ ایک inf2.xlarge (7B Mistral ماڈل کے لیے) تعینات کریں۔ اگر آپ کسی مختلف ماڈل کی جانچ کر رہے ہیں، تو آپ کو اپنے ماڈل کے سائز کے لحاظ سے اپنی مثال کو ایڈجسٹ کرنے کی ضرورت پڑ سکتی ہے۔
  3. کا استعمال کرتے ہوئے مثال کو تعینات کریں۔ گلے لگانا چہرہ DLAMI ورژن 20240123تاکہ تمام ضروری ڈرائیورز انسٹال ہو جائیں۔ (دکھائی گئی قیمت میں مثال کی قیمت شامل ہے اور کوئی اضافی سافٹ ویئر چارج نہیں ہے۔)
  4. ڈرائیو کا سائز 600 GB (100 GB Mistral 7B کے لیے) میں ایڈجسٹ کریں۔
  5. کلون اور انسٹال کریں۔ lm-evaluation-harness مثال کے طور پر. ہم ایک تعمیر کی وضاحت کرتے ہیں تاکہ ہمیں معلوم ہو کہ کوئی بھی تغیر ماڈل کی تبدیلیوں کی وجہ سے ہے، نہ کہ ٹیسٹ یا کوڈ کی تبدیلیوں کی وجہ سے۔
git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
# optional: pick specific revision from the main branch version to reproduce the exact results
git checkout 756eeb6f0aee59fc624c81dcb0e334c1263d80e3
# install the repository without overwriting the existing torch and torch-neuronx installation
pip install --no-deps -e . 
pip install peft evaluate jsonlines numexpr pybind11 pytablewriter rouge-score sacrebleu sqlitedict tqdm-multiprocess zstandard hf_transfer

  1. رن lm_eval hf-neuron ماڈل کی قسم کے ساتھ اور اس بات کو یقینی بنائیں کہ آپ کے پاس Hugging Face پر ماڈل کے واپس جانے کے راستے کا لنک ہے:
# e.g use mistralai/Mistral-7B-v0.1 if you are on inf2.xlarge
MODEL_ID=gradientai/v-alpha-tross

python -m lm_eval --model "neuronx" --model_args "pretrained=$MODEL_ID,dtype=bfloat16" --batch_size 1 --tasks gsm8k

اگر آپ سابقہ ​​مثال Mistral کے ساتھ چلاتے ہیں، تو آپ کو درج ذیل آؤٹ پٹ ملنا چاہیے (چھوٹے inf2.xlarge پر، اسے چلانے میں 250 منٹ لگ سکتے ہیں):

███████████████████████| 1319/1319 [32:52<00:00,  1.50s/it]
neuronx (pretrained=mistralai/Mistral-7B-v0.1,dtype=bfloat16), gen_kwargs: (None), limit: None, num_fewshot: None, batch_size: 1
|Tasks|Version|  Filter  |n-shot|  Metric   |Value |   |Stderr|
|-----|------:|----------|-----:|-----------|-----:|---|-----:|
|gsm8k|      2|get-answer|     5|exact_match|0.3806|±  |0.0134|

صاف کرو

جب آپ کام کر لیں، تو یقینی بنائیں کہ ایمیزون EC2 کنسول کے ذریعے EC2 انسٹینس کو روک دیں۔

نتیجہ

گریڈیئنٹ اور نیوران ٹیمیں اس ریلیز کے ساتھ LLM تشخیص کو وسیع تر اپنانے کے لیے پرجوش ہیں۔ اسے خود آزمائیں اور AWS Inferentia2 مثالوں پر سب سے مقبول تشخیصی فریم ورک چلائیں۔ اب آپ AWS Inferentia2 کی آن ڈیمانڈ دستیابی سے فائدہ اٹھا سکتے ہیں جب آپ استعمال کر رہے ہوں گریڈینٹ سے اپنی مرضی کے مطابق ایل ایل ایم ڈیولپمنٹ. ان کے ساتھ AWS Inferentia پر ماڈلز کی میزبانی شروع کریں۔ سبق.


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

گریڈینٹ AWS Inferentia کے ساتھ LLM بینچ مارکنگ کو لاگت سے موثر اور آسان بناتا ہے۔ ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عیمائیکل فیل گریڈینٹ میں ایک AI انجینئر ہے اور اس سے قبل Rodhe & Schwarz میں ML انجینئر اور میکس-پلانک انسٹی ٹیوٹ فار انٹیلیجنٹ سسٹمز اور Bosch Rexroth میں ایک محقق کے طور پر کام کر چکے ہیں۔ مائیکل LLMs اور اوپن سورس پروجیکٹس جیسے StarCoder کے لیے مختلف اوپن سورس انفرنس لائبریریوں میں ایک اہم معاون ہے۔ مائیکل نے KIT سے میکیٹرونکس اور IT میں بیچلر کی ڈگری اور میونخ کی ٹیکنیکل یونیورسٹی سے روبوٹکس میں ماسٹر کی ڈگری حاصل کی۔

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

ٹائم اسٹیمپ:

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