Jannah Theme License is not validated, Go to the theme options page to validate the license, You need a single license for each domain name.
تقنية وتكنولوجيا

يجعل Gradient قياس LLM فعالاً من حيث التكلفة وسهلًا مع AWS Inferentia


هذه مشاركة ضيف تمت كتابتها بالاشتراك مع مايكل فيل في Gradient.

يعد تقييم أداء نماذج اللغات الكبيرة (LLMs) خطوة مهمة في عملية التدريب المسبق والضبط الدقيق قبل النشر. كلما تمكنت من التحقق من صحة الأداء بشكل أسرع وأكثر تكرارًا، زادت فرصك في تحسين أداء النموذج.

في Gradient، نعمل على تطوير LLM مخصص، وقد أطلقنا مؤخرًا مختبر تطوير الذكاء الاصطناعي الخاص بنا، والذي يقدم لمؤسسات المؤسسات خدمة تطوير مخصصة وشاملة لبناء LLMs خاصة ومخصصة ومساعدين للذكاء الاصطناعي (AI). وكجزء من هذه العملية، نقوم بانتظام بتقييم أداء نماذجنا (المضبوطة، المدربة، والمفتوحة) مقابل المعايير المفتوحة والخاصة. أثناء العمل مع فريق AWS لتدريب نماذجنا على AWS Trainium، أدركنا أننا مقيدون بكل من VRAM وتوافر مثيلات GPU عندما يتعلق الأمر بالأداة الرئيسية لتقييم LLM، lm-evaluation-harness. يتيح لك إطار العمل مفتوح المصدر هذا تسجيل نماذج لغة توليدية مختلفة عبر مهام التقييم والمعايير المختلفة. يتم استخدامه من قبل المتصدرين مثل Hugging Face لقياس الأداء العام.

للتغلب على هذه التحديات، قررنا بناء الحل الخاص بنا وفتحه المصدر — من خلال دمج AWS Neuron، وهي المكتبة التي تقف وراء AWS Inferentia وTrainium، في lm-evaluation-harness. لقد أتاح هذا التكامل قياس مستوى v-alpha-tross، وهو إصدار مبكر من نموذج Albatross الخاص بنا، مقابل النماذج العامة الأخرى أثناء عملية التدريب وبعدها.

بالنسبة للسياق، يعمل هذا التكامل كفئة نموذجية جديدة ضمن lm-evaluation-harness، مما يلخص استنتاج الرموز المميزة وتقدير احتمالية السجل للتسلسلات دون التأثير على مهمة التقييم الفعلية. لقد مكننا قرار نقل مسار الاختبار الداخلي الخاص بنا إلى مثيلات Inf2 من Amazon Elastic Compute Cloud (Amazon EC2) (المدعومة من AWS Inferentia2) من الوصول إلى ما يصل إلى 384 جيجابايت من ذاكرة التسريع المشتركة، مما يناسب جميع بنياتنا العامة الحالية دون عناء. باستخدام مثيلات AWS Spot، تمكنا من الاستفادة من سعة EC2 غير المستخدمة في سحابة AWS، مما أتاح توفير التكاليف بنسبة تصل إلى 90% مخفضة من الأسعار عند الطلب. أدى هذا إلى تقليل الوقت الذي يستغرقه الاختبار وسمح لنا بإجراء الاختبار بشكل متكرر لأننا تمكنا من الاختبار عبر مثيلات متعددة كانت متاحة بسهولة وإصدار المثيلات عند الانتهاء.

في هذا المنشور، نقدم تحليلًا تفصيليًا لاختباراتنا، والتحديات التي واجهناها، ومثالًا لاستخدام أدوات الاختبار على AWS Inferentia.

قياس الأداء على AWS Inferentia2

كان الهدف من هذا المشروع هو الحصول على درجات متطابقة كما هو موضح في Open LLM Leaderboard (بالنسبة للعديد من نماذج CausalLM المتوفرة على Hugging Face)، مع الاحتفاظ بالمرونة اللازمة لتشغيلها وفقًا للمعايير الخاصة. لرؤية المزيد من الأمثلة على النماذج المتاحة، راجع AWS Inferentia وTrainium على Hugging Face.

كانت تغييرات التعليمات البرمجية المطلوبة لنقل نموذج من محولات Hugging Face إلى مكتبة Hugging Face Optimum Neuron Python منخفضة جدًا. لأن استخدامات lm-evaluation-harness AutoModelForCausalLM، هناك انخفاض في الاستبدال باستخدام NeuronModelForCausalLM. بدون نموذج مُترجم مسبقًا، يتم تجميع النموذج تلقائيًا في الوقت الحالي، مما قد يضيف 15 إلى 60 دقيقة إلى المهمة. لقد منحنا هذا المرونة لنشر الاختبار لأي مثيل AWS Inferentia2 ونموذج CausalLM المدعوم.

نتائج

نظرًا للطريقة التي تعمل بها المعايير والنماذج، لم نتوقع أن تتطابق النتائج تمامًا عبر عمليات التشغيل المختلفة. ومع ذلك، ينبغي أن تكون قريبة جدًا بناءً على الانحراف المعياري، وقد رأينا ذلك باستمرار، كما هو موضح في الجدول التالي. تم تأكيد جميع المعايير الأولية التي أجريناها على AWS Inferentia2 من خلال لوحة المتصدرين Hugging Face.

في lm-evaluation-harness، هناك نوعان من التدفقات الرئيسية التي تستخدمها الاختبارات المختلفة: generate_until و loglikelihood. يستخدم اختبار gsm8k في المقام الأول generate_until لتوليد الاستجابات تماما كما هو الحال أثناء الاستدلال. Loglikelihood يستخدم بشكل رئيسي في قياس الأداء والاختبار، ويفحص احتمالية إنتاج مخرجات مختلفة. كلاهما يعمل في الخلايا العصبية، ولكن loglikelihood تستخدم الطريقة في SDK 2.16 خطوات إضافية لتحديد الاحتمالات ويمكن أن تستغرق وقتًا إضافيًا.

نتائج تسخير تقييم Lm
تكوين الأجهزة النظام الأصلي AWS Inferentia inf2.48xlarge
الوقت مع Batch_size=1 لتقييم mistralai/Mistral-7B-Instruct-v0.1 على gsm8k 103 دقيقة 32 دقيقة
النتيجة على gsm8k (الحصول على إجابة – تطابق_دقيق مع الأمراض المنقولة جنسيا) 0.3813 – 0.3874 (± 0.0134) 0.3806 – 0.3844 (± 0.0134)

ابدأ باستخدام Neuron وأداة تقييم lm

يمكن أن يساعدك الكود الموجود في هذا القسم في الاستخدام lm-evaluation-harness وتشغيله على النماذج المدعومة على Hugging Face. لرؤية بعض النماذج المتاحة، قم بزيارة AWS Inferentia وTrainium على Hugging Face.

إذا كنت معتادًا على تشغيل النماذج على AWS Inferentia2، فقد تلاحظ عدم وجود ذلك num_cores تم تمرير الإعداد. يكتشف الكود الخاص بنا عدد النوى المتاحة ويمرر هذا الرقم تلقائيًا كمعلمة. يتيح لك هذا إجراء الاختبار باستخدام نفس الرمز بغض النظر عن حجم المثيل الذي تستخدمه. قد تلاحظ أيضًا أننا نشير إلى النموذج الأصلي، وليس إلى نسخة مجمعة من Neuron. يقوم الحزام تلقائيًا بتجميع النموذج لك حسب الحاجة.

توضح لك الخطوات التالية كيفية نشر التدرج gradientai/v-alpha-tross النموذج الذي اختبرناه. إذا كنت تريد الاختبار باستخدام مثال أصغر على مثيل أصغر، فيمكنك استخدام الأمر mistralai/Mistral-7B-v0.1 نموذج.

  1. الحصة الافتراضية لتشغيل مثيلات Inf عند الطلب هي 0، لذا يجب عليك طلب زيادة عبر Service Quotas. أضف طلبًا آخر لجميع طلبات مثيلات Inf Spot حتى تتمكن من الاختبار باستخدام مثيلات Spot. ستحتاج إلى حصة تبلغ 192 وحدة معالجة مركزية افتراضية لهذا المثال باستخدام مثيل inf2.48xlarge، أو حصة تبلغ 4 وحدات معالجة مركزية افتراضية لوحدة inf2.xlarge الأساسية (إذا كنت تقوم بنشر نموذج Mistral). الحصص مخصصة لمنطقة AWS، لذا تأكد من طلبك us-east-1 أو us-west-2.
  2. حدد المثيل الخاص بك بناءً على النموذج الخاص بك. لأن v-alpha-tross هي بنية 70B، قررنا استخدام مثيل inf2.48xlarge. قم بنشر inf2.xlarge (للطراز 7B Mistral). إذا كنت تختبر نموذجًا مختلفًا، فقد تحتاج إلى ضبط المثيل الخاص بك وفقًا لحجم النموذج الخاص بك.
  3. انشر المثيل باستخدام إصدار Hugging Face DLAMI رقم 20240123، بحيث يتم تثبيت جميع برامج التشغيل الضرورية. (يتضمن السعر الموضح تكلفة المثيل ولا توجد رسوم برامج إضافية.)
  4. اضبط حجم محرك الأقراص على 600 جيجابايت (100 جيجابايت لـ 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 عبر وحدة تحكم Amazon EC2.

خاتمة

يسعد فريقي Gradient وNeuron برؤية اعتماد أوسع لتقييم LLM مع هذا الإصدار. جرب ذلك بنفسك وقم بتشغيل إطار التقييم الأكثر شيوعًا على مثيلات AWS Inferentia2. يمكنك الآن الاستفادة من توفر AWS Inferentia2 عند الطلب عند استخدام تطوير LLM مخصص من Gradient. ابدأ في استضافة النماذج على AWS Inferentia باستخدام هذه البرامج التعليمية.


عن المؤلفين

مايكل فيل هو مهندس ذكاء اصطناعي في Gradient وعمل سابقًا كمهندس تعلم الآلة في Rodhe & Schwarz وباحث في معهد Max-Plank للأنظمة الذكية وBosch Rexroth. يعد مايكل مساهمًا رئيسيًا في العديد من مكتبات الاستدلال مفتوحة المصدر لمجالات LLM والمشاريع مفتوحة المصدر مثل StarCoder. حصل مايكل على درجة البكالوريوس في الميكاترونكس وتكنولوجيا المعلومات من KIT ودرجة الماجستير في الروبوتات من الجامعة التقنية في ميونيخ.

جيم بيرتوفت هو أحد كبار مهندسي حلول الشركات الناشئة في AWS ويعمل مباشرةً مع الشركات الناشئة مثل Gradient. جيم هو CISSP، وهو جزء من مجتمع AWS AI/ML الفني الميداني، وسفير Neuron، ويعمل مع مجتمع مفتوح المصدر لتمكين استخدام Inferentia وTrainium. يحمل جيم درجة البكالوريوس في الرياضيات من جامعة كارنيجي ميلون ودرجة الماجستير في الاقتصاد من جامعة فيرجينيا.

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى