نحن نقوم باستمرار بتدريب النماذج اللغوية لعملنا. يستخدم فريقنا العشرات من بطاقات الفيديو المختلفة المختارة لمهام مختلفة: في مكان ما نحتاج إلى محطة DGX قوية، وفي مكان ما تكفي بطاقة ألعاب قديمة مثل RTX 2080Ti. يمكن أن يؤثر اختيار وحدة معالجة الرسومات المثالية للتدريب النموذجي بشكل كبير على سرعة العملية وفعاليتها من حيث التكلفة.
المثير للاهتمام هو أن هناك عددًا لا بأس به من المقالات على الإنترنت مع مقارنة GPU للتعلم الآلي، ولكن القليل جدًا منها يركز على السرعة للتدريب على نماذج اللغة. في الغالب تم العثور على اختبارات الاستدلال فقط. عندما تم إصدار شريحة H100 الجديدة، ذكر تقرير NVidia أنها كانت أسرع بما يصل إلى تسع مرات من شريحة A100 في التدريب، ولكن بالنسبة لمهامنا، كانت البطاقة الجديدة أسرع بنسبة 90% فقط من البطاقة القديمة. بالمقارنة، كان لدى موفري الخدمات السحابية لدينا فرق سعر 2x بين وحدات معالجة الرسومات هذه، لذلك لم يكن هناك أي فائدة من التحول إلى H100 الجديد لتوفير المال.
بالإضافة إلى ذلك، قمنا باختبار محطة DGX، والتي تتكون من 8 بطاقات رسومات A100 بسعة 80 جيجابايت وتبلغ تكلفتها 10 آلاف دولار شهريًا. بعد الاختبار، أصبح من الواضح أن نسبة السعر/الأداء لهذه المحطة لا تناسبنا على الإطلاق، ومقابل هذه الأموال، يمكننا الحصول على 66 x RTX 3090، والتي ستكون في المجمل أكثر فائدة.
تحتوي نماذج لغة الترجمة لدينا على ما يصل إلى 500 مليون معلمة (100 مليون إلى 300 مليون في المتوسط). من الممكن أنه إذا قمنا بزيادة عدد المعلمات بشكل كبير، فإن نسبة السعر/الأداء لـ DGX ستكون أفضل. حاليًا، لا نقوم بتدريب نماذج لغوية كبيرة يمكنها الترجمة بين جميع اللغات بجميع أشكالها مرة واحدة، ولكننا نستخدم نماذج لغوية منفصلة لكل زوج لغوي، على سبيل المثال. الإنجليزية الألمانية. يستغرق كل طراز من هذه الطرازات من 120 إلى 300 ميجابايت.
ومن الجدير بالذكر أن اللغات المختلفة لديها كميات مختلفة من البيانات على شبكة الإنترنت، وفي حين. على سبيل المثال، بالنسبة للغة الإسبانية، يمكنك العثور على 500 مليون جملة مع ترجمات، ولكن عند تدريب نماذج للغات النادرة مثل التبتية، تحتاج إلى اختيار وحدة معالجة رسومات محددة لمهام التعلم الآلي بناءً على البيانات المتاحة. لإنشاء نموذج ترجمة من الإنجليزية إلى الإسبانية، نستخدم خادمًا مزودًا بذاكرة وصول عشوائي 4x RTX 4500 و256 جيجابايت. وفي الوقت نفسه، يمكن تدريب اللغة التبتية على RTX 2080 Ti مع ذاكرة وصول عشوائي سعة 16 جيجابايت، لأنه ليس من المنطقي زيادة تعقيد الشبكة العصبية، ونتيجة لذلك، الحصول على خادم أكثر قوة مع كمية صغيرة من البيانات.
اختيار معالجات الرسومات والأشكال النظرية
تم إجراء التدريب على نموذج اللغة على منصة Data Studio الداخلية لدينا باستخدام إطار عمل OpenNMT-tf. تضمنت هذه المرحلة إعداد البيانات والتدريب على النماذج ومقارنة النماذج مع الترجمة المرجعية. سمح لنا استخدام FP16 بدلاً من FP32 أثناء التدريب بتقليل وقت تدريب نماذج اللغة بشكل كبير دون التقليل من جودة الترجمة، ولكن لم تدعم جميع وحدات معالجة الرسومات لدينا ذلك.
عند اختيار معالج الرسومات، من المعتاد مراعاة مقاييس مثل قوة المعالجة (TFLOPS)، وذاكرة الفيديو (VRAM)، ونتائج معايير وحدة معالجة الرسومات، ودعم المكتبة وإطار العمل، والميزانية، وعوامل أخرى (حجم بطاقة الرسومات وعامل الشكل، ومتطلبات الطاقة والتبريد والتوافق مع نظامك). عند التدريب على نماذج إنشاء النصوص، يجب عليك أيضًا أن تضع في اعتبارك أن اللغات المختلفة ستستهلك كميات مختلفة من الموارد. على سبيل المثال، يتم استخدام بايت واحد لتشفير حرف واحد للغات اللاتينية، وبايتين للغات السيريلية، و3 بايت للغات التي تحتوي على الهيروغليفية. إن فهم الخصائص التي ستتمتع بها بطاقة الرسومات الخاصة بك له تأثير كبير على سرعة عملية التعلم.
عند تدريب النماذج من حيث وحدات معالجة الرسومات المستخدمة، تم تقسيم بطاقات الفيديو إلى مجموعتين حسب فترة الاستخدام: بطاقات الفيديو المبكرة، والتي تم استخدامها لإجراء القياسات الأولى لسرعة التعلم، والبطاقات المستخدمة حاليًا. يمكن العثور على الخصائص الرئيسية لبطاقات الرسومات هذه في الجدول 1 والجدول 2 على التوالي.
الجدول 1 - معالجات الرسومات المستخدمة سابقاً ومعلماتها الفنية
Number of GPUs | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Tesla V100-SXM2 | HBM2, 16 | 7.0 | 31.33 | 16.31 |
2 | Tesla V100-SXM2 | HBM2, 32 | 7.0 | 31.33 | 15.67 |
1 | RTX 4060 Ti | GDDR6, 8 | 8.9 | 22.06 | 22.06 |
1 | Nvidia A40 | GDDR6, 48 | 8.6 | 37.42 | 37.42 |
2 | Nvidia A40 | GDDR6, 96 | 8.6 | 37.42 | 37.42 |
1 | Nvidia A100 | HBM2, 40 | 8.0 | 77.97 | 19.49 |
1 | Nvidia A100 | HBM2, 80 | 8.0 | 77.97 | 19.49 |
1 | Nvidia RTX A6000 | GDDR6, 48 | 8.6 | 38.71 | 38.71 |
1 | Nvidia A10 | GDDR6, 24 | 8.6 | 31.24 | 31.24 |
8 | Nvidia A10 | GDDR6, 192 | 8.6 | 31.24 | 31.24 |
1 | Nvidia H100 | HBM3, 80 | 9.0 | 204.9 | 51.22 |
ملاحظات
1. مع CUDA أكبر من 7.0، فإن استخدام FP16 سيعطي دفعة في سرعة التدريب، اعتمادًا على إصدار CUDA وخصائص بطاقة الرسومات نفسها.
2. إذا كانت مواصفات بطاقة الرسومات تشير إلى أن نسبة أداء FP16 إلى FP32 أكبر من 1 إلى 1، فسيتم ضمان استخدام الدقة المختلطة لزيادة سرعة التدريب بالمبلغ المحدد في المواصفات. على سبيل المثال، بالنسبة لـ Quadro RTX 6000، فإن قيمة FP16 TFLOPS البالغة 32.62 (2:1) ستؤدي إلى تسريع التمرين مرتين على الأقل (2.4 مرة في الممارسة العملية)
الجدول 2 - نماذج GPU المستخدمة حاليًا وخصائصها الرئيسية
Number of GPUs in use | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Quadro RTX 6000 | GDDR6, 24 | 7.5 | 32.62 | 16.31 |
2 | Quadro RTX 6000 | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Quadro RTX 6000 | GDDR6, 96 | 7.5 | 32.62 | 16.31 |
2 | Nvidia TITAN RTX | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Nvidia RTX A4500 | GDDR6, 96 | 8.6 | 23.65 | 23.65 |
1 | Nvidia GeForce RTX 3090 | GDDR6X, 24 | 8.6 | 35.58 | 35.58 |
1 | Nvidia GeForce RTX 3070 | GDDR6, 8 | 8.6 | 20.31 | 20.31 |
* - قيم FP16 وTFLOPS وFP32 وTFLOPS مأخوذة من المواصفات لكل وحدة معالجة رسومات
عملية التدريب والاختبار لوحدة معالجة الرسومات
تم تدريب النماذج باستخدام مجموعة من 18 وحدة معالجة رسومات. في عملية تدريب الشبكة العصبية، استخدمنا العديد من الأزواج اللغوية (أكثر من مائة لغة). ساعدت اختبارات GPU في تحديد الأجهزة التي تعمل بشكل أفضل لمهام محددة. أثناء تدريب أزواجنا اللغوية، تم أخذ معلمات الشبكة العصبية التالية كأساس
- حجم المفردات = 30000
- نومونيتس = 768
- طبقات = 6
- الرؤوس = 16
- البعد الداخلي = 4 096
أولاً، دعونا نصف وحدات معالجة الرسومات التي تنتمي إلى المجموعة الأولى بناءً على الجدول 1. سيتم أخذ الوقت بالدقائق والثواني المستغرق في تدريب النموذج بسرعة تقريبية تبلغ 1000 خطوة ومضاعف حجم الدفعة يبلغ 100000 وحدة كأساس لمقارنة المؤشرات.
ونؤكد أنه بالنسبة للمجموعة الأولى، تم إجراء قياسات السرعة باستخدام محاذاة الآلية والاستخدام فقط FP32. وبدون استخدام هذه الآلية، يمكن أن تكون سرعة التعلم على بعض الخوادم أسرع بكثير.
تسمح آلية المحاذاة بمطابقة السلاسل الفرعية في النص الأساسي والمترجم. من الضروري ترجمة النص المنسق، مثل صفحات الويب، عندما يمكن تمييز سلسلة فرعية في الجملة بخط مختلف ويجب ترجمتها مع التمييز.
مع الأخذ في الاعتبار المعلمات المذكورة أعلاه للشبكة العصبية، تم عرض أفضل وقت من الجدول الأول بواسطة GPU Nvidia H100 مع وقت تعلم قدره 22 دقيقة وتم عرض الوقت المتوسط بواسطة وحدة معالجة الرسومات من نفس العلامة التجارية GeForce RTX 4060 Ti مع وقت تعلم قدره 72 دقيقة والمركز الأخير تم بواسطة وحدة معالجة الرسومات Tesla V100-SXM 2 مع وقت تعلم قدره 140 دقيقة.
كانت هناك أيضًا ثماني بطاقات Nvidia A10 في اختبار GPU بمنحنى تعلم يبلغ 20 دقيقة و28 ثانية، وبطاقتي Nvidia A40 بزمن قدره 56 دقيقة، وبطاقتي Tesla V100-SXM تم تسجيلهما في 86 دقيقة. يمكن أن يؤدي التطبيق المتزامن لبطاقات متعددة من نفس السلسلة من وحدات معالجة الرسومات إلى تسريع عملية تدريب النماذج وإظهار نفس الوقت تقريبًا مع وحدات معالجة الرسومات التي تتمتع بقدرات أعلى، ولكن مثل هذه التقنية قد لا تكون عقلانية ماليًا وإجرائيًا بدرجة كافية. ويمكن ملاحظة نتائج قياسات سرعة التعلم في الجدول رقم 3.
الجدول 3 - قياسات وقت التدريب على الخرائط الرسومية المستخدمة سابقاً
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
8 | Nvidia A10 | 20,28 | 6 250 |
1 | Nvidia H100 | 22 | 25 000 |
1 | A100 (80 Gb) | 40 | 25 000 |
1 | A100 (40 Gb) | 56 | 15 000 |
2 | Nvidia A40 | 56 | 12 500 |
1 | RTX A6000 | 68,25 | 12 500 |
1 | GeForce RTX 4060 Ti | 72 | 4 167 |
1 | Nvidia A40 | 82,08 | 12 500 |
2 | Tesla V100-SXM | 86 | 4 167 |
1 | Nvidia A10 | 104,50 | 5 000 |
1 | Tesla V100-SXM2 | 140 | 4 167 |
بعد ذلك، دعونا نجري تحليلًا مقارنًا لدواسات الغاز الرسومية المستخدمة حاليًا (الجدول 2). بالنسبة لهذه المجموعة من معالجات الرسومات، تم إجراء قياسات السرعة باستخدام محاذاة الآلية، وكذلك استخدام FP16 وFP32. سيتم عرض قياسات السرعة بما في ذلك هذه الآلية والدقة المختلطة أدناه في الجدولين 4 و5 على التوالي.
لذلك، بعد قياس سرعة وحدات معالجة الرسومات من هذا الجدول، يمكننا القول أن المركز الأول تم الحصول عليه بواسطة وحدة معالجة الرسومات من سلسلة RTX A4500 بزمن تدريب قدره 31 دقيقة، ولكن يجب التأكيد على أنه تم الحصول على مثل هذه السرعة لنماذج التدريب عن طريق زيادة عدد وحدات وحدة معالجة الرسومات المستخدمة حتى 4. وبغض النظر عن هذه الحقيقة، فإن سرعة تدريب وحدة معالجة الرسومات المذكورة أعلاه ستكون أعلى بكثير، مما سيضعها في المركز قبل الأخير في الجدول النهائي.
تحتل وحدة معالجة الرسومات Quadro RTX 6000 series التي تبلغ مدة تعلمها 47 دقيقة المركز الثاني. وتجدر الإشارة إلى أن سرعة التدريب هذه مشروطة عكسيا بعدد وحدات المعالج المستخدم، وهو ما يساوي أربع وحدات. إن استخدام وحدة معالجة رسومات واحدة فقط من هذا القبيل سيؤدي إلى فقدان السرعة بحوالي 3.2 مرة وبالتالي سيكون حوالي 153 دقيقة ويضعها في المركز الأخير.
تم أخذ السطر الثالث بواسطة وحدة معالجة الرسومات من سلسلة TITAN RTX بزمن قدره 75 دقيقة و 85 ثانية. ترجع درجة سرعة التعلم هذه إلى استخدام معالجين، مما أدى إلى تقليل وقت تدريب النموذج.
إن الرائد الذي لا جدال فيه من حيث سرعة التدريب في عدد وحدة واحدة سيكون بالتأكيد وحدة معالجة الرسومات من سلسلة GeForce RTX 3090 بزمن قدره 78 دقيقة و 26 ثانية. ستؤدي زيادة عدد وحدات وحدة معالجة الرسومات هذه إلى تسريع سرعة تدريب النموذج، والتي ستتجاوز بوضوح جميع نماذج وحدة معالجة الرسومات المذكورة أعلاه. يمكن الاطلاع على البيانات المتعلقة بقياسات وقت التدريب النموذجية في الجدول 4.
الجدول 4 - تحليل مقارن لسرعة التدريب على نموذج اللغة على وحدات معالجة الرسومات المستخدمة سابقًا
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 31 | 5 000 |
4 | Quadro RTX 6000 | 47 | 6 250 |
2 | Nvidia TITAN RTX | 75,85 | 6 250 |
1 | GeForce RTX 3090 | 78,26 | 6 250 |
2 | Quadro RTX 6000 | 88 | 6 250 |
1 | GeForce RTX 3070 | 104,17 | 2 000 |
1 | Quadro RTX 6000 | 153 | 6 250 |
تم إجراء قياسات سرعة التدريب التالية باستخدام FP16. بالمقارنة مع FP32، يسمح نصف الدقة بتقليل كمية الذاكرة المستهلكة أثناء التدريب على النموذج وتسريع الحساب على وحدة معالجة الرسومات. ستكون دقة التمثيل أقل من استخدام FP32.
بقياس وقت تدريب النماذج باستخدام FP32 من الجدول السابق، يمكننا القول أن وقت تدريب الشبكة العصبية انخفض بمقدار مرتين تقريبًا. بناءً على نتائج قياس الأداء، يمكننا أن نلاحظ من معايير وحدة معالجة الرسومات للتعلم الآلي في الجدول 4 أن مواضع وحدات معالجة الرسومات ظلت دون تغيير إلى حد كبير. انتقلت بطاقة سلسلة Quadro RTX 6000 من المركز الخامس إلى المركز السادس، متغلبة على وحدة معالجة الرسوميات GeForce RTX 3090 بفارق 96 ثانية. وتظهر الأرقام النهائية في الجدول 5.
الجدول 5 - تحليل مقارن لسرعة التدريب على نموذج اللغة على وحدات معالجة الرسومات المستخدمة سابقًا
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 16 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 15,81 | 10 000 |
4 | Quadro RTX 6000 | 20,34 | 12 500 |
2 | Nvidia TITAN RTX | 32,68 | 6 250 |
2 | Quadro RTX 6000 | 37,93 | 10 000 |
1 | GeForce RTX 3090 | 38,89 | 10 000 |
1 | GeForce RTX 3070 | 48,51 | 2 500 |
1 | Quadro RTX 6000 | 52,56 | 10 000 |