تقدم Amazon SageMaker XGBoost الآن تدريبًا موزعًا بالكامل على وحدة معالجة الرسومات | خدمات أمازون ويب

تقدم Amazon SageMaker XGBoost الآن تدريبًا موزعًا بالكامل على وحدة معالجة الرسومات | خدمات أمازون ويب

الأمازون SageMaker يوفر مجموعة من خوارزميات مدمجة, نماذج مدربة مسبقًاو قوالب الحلول الجاهزة لمساعدة علماء البيانات وممارسي التعلم الآلي (ML) على البدء في التدريب ونشر نماذج التعلم الآلي بسرعة. يمكنك استخدام هذه الخوارزميات والنماذج لكل من التعلم الخاضع للإشراف وغير الخاضع للإشراف. يمكنهم معالجة أنواع مختلفة من بيانات الإدخال ، بما في ذلك الجدول والصورة والنص.

خوارزمية SageMaker XGBoost يسمح لك بتشغيل تدريب XGBoost والاستدلال بسهولة على SageMaker. XGBoost (eXtreme Gradient Boosting) هو تطبيق مفتوح المصدر شائع وفعال لخوارزمية الأشجار المعززة بالتدرج. تعزيز التدرج عبارة عن خوارزمية تعلم خاضعة للإشراف تحاول التنبؤ بدقة بالمتغير المستهدف من خلال الجمع بين مجموعة من التقديرات من مجموعة من النماذج الأبسط والأضعف. تؤدي خوارزمية XGBoost أداءً جيدًا في مسابقات تعلم الآلة نظرًا لمعالجتها القوية لمجموعة متنوعة من أنواع البيانات والعلاقات والتوزيعات ومجموعة متنوعة من المعلمات الفائقة التي يمكنك ضبطها. يمكنك استخدام XGBoost لمشاكل الانحدار والتصنيف (ثنائي ومتعدد الفئات) والترتيب. يمكنك استخدام وحدات معالجة الرسومات لتسريع التدريب على مجموعات البيانات الكبيرة.

اليوم ، يسعدنا أن نعلن ذلك SageMaker يوفر XGBoost الآن تدريبًا موزعًا بالكامل على وحدة معالجة الرسومات.

بدءًا من الإصدار 1.5-1 وما فوق ، يمكنك الآن استخدام جميع وحدات معالجة الرسومات عند استخدام مثيلات متعددة لوحدات معالجة الرسومات. تلبي الميزة الجديدة احتياجاتك لاستخدام تدريب GPU الموزع بالكامل عند التعامل مع مجموعات البيانات الكبيرة. هذا يعني القدرة على استخدام متعددة الأمازون الحوسبة المرنة السحابية مثيلات (Amazon EC2) (GPU) واستخدام جميع وحدات معالجة الرسومات لكل مثيل.

تدريب GPU موزع مع مثيلات متعددة لوحدات معالجة الرسومات

باستخدام الإصدار 1.2-2 من SageMaker XGBoost أو إصدار أحدث ، يمكنك استخدام مثيل واحد أو أكثر من مثيلات وحدة معالجة الرسومات الفردية للتدريب. ال فرط المعلمة يجب تعيين tree_method على gpu_hist. عند استخدام أكثر من مثيل واحد (الإعداد الموزع) ، يجب تقسيم البيانات بين الحالات على النحو التالي (مثل خطوات التدريب الموزعة التي لا تعتمد على GPU والمذكورة في خوارزمية XGBoost). على الرغم من أن هذا الخيار فعال ويمكن استخدامه في إعدادات تدريب متنوعة ، إلا أنه لا يمتد إلى استخدام جميع وحدات معالجة الرسومات عند اختيار مثيلات متعددة GPU مثل g5.12xlarge.

مع الإصدار 1.5-1 من SageMaker XGBoost وما فوق ، يمكنك الآن استخدام جميع وحدات معالجة الرسومات في كل مثيل عند استخدام مثيلات متعددة لوحدات معالجة الرسومات. يتم تقديم القدرة على استخدام جميع وحدات معالجة الرسومات في مثيل متعدد GPU من خلال دمج داسك الإطار.

يمكنك استخدام هذا الإعداد لإكمال التدريب بسرعة. بصرف النظر عن توفير الوقت ، سيكون هذا الخيار مفيدًا أيضًا للتغلب على الموانع مثل حدود المثيل (الناعمة) القصوى القابلة للاستخدام ، أو إذا كانت مهمة التدريب غير قادرة على توفير عدد كبير من مثيلات GPU الفردية لسبب ما.

تكوينات استخدام هذا الخيار هي نفسها الخيار السابق ، باستثناء الاختلافات التالية:

  • أضف الجديد فرط المعلمة use_dask_gpu_training مع قيمة السلسلة true.
  • عند إنشاء ملفات التدريب، اضبط معلمة التوزيع على FullyReplicated، سواء باستخدام حالات فردية أو متعددة. سيقوم إطار عمل Dask الأساسي بتنفيذ تحميل البيانات وتقسيم البيانات بين عمال Dask. هذا يختلف عن إعداد توزيع البيانات لجميع التدريبات الموزعة الأخرى باستخدام SageMaker XGBoost.

لاحظ أن تقسيم البيانات إلى ملفات أصغر لا يزال ساريًا على Parquet ، حيث سيقرأ Dask كل ملف كملف تقسيم. نظرًا لأنه سيكون لديك عامل Dask لكل GPU ، يجب أن يكون عدد الملفات أكبر من عدد المثيلات * عدد GPU لكل مثيل. أيضًا ، يمكن أن يؤدي جعل كل ملف صغير جدًا ووجود عدد كبير جدًا من الملفات إلى تدهور الأداء. لمزيد من المعلومات، راجع تجنب الرسوم البيانية الكبيرة جدًا. بالنسبة إلى CSV ، لا نزال نوصي بتقسيم الملفات الكبيرة إلى ملفات أصغر لتقليل وقت تنزيل البيانات وتمكين عمليات القراءة السريعة. ومع ذلك ، فهو ليس شرطًا.

حاليًا ، تنسيقات الإدخال المدعومة مع هذا الخيار هي:

  • text/csv
  • application/x-parquet

وضع الإدخال التالي مدعوم:

سيبدو الرمز مشابهًا لما يلي:

import os
import boto3
import re
import sagemaker
from sagemaker.session import Session
from sagemaker.inputs import TrainingInput
from sagemaker.xgboost.estimator import XGBoost role = sagemaker.get_execution_role()
region = sagemaker.Session().boto_region_name
session = Session() bucket = "<Specify S3 Bucket>"
prefix = "<Specify S3 prefix>" hyperparams = { "objective": "reg:squarederror", "num_round": "500", "verbosity": "3", "tree_method": "gpu_hist", "eval_metric": "rmse", "use_dask_gpu_training": "true"
} output_path = "s3://{}/{}/output".format(bucket, prefix) content_type = "application/x-parquet"
instance_type = "ml.g4dn.2xlarge" xgboost_container = sagemaker.image_uris.retrieve("xgboost", region, "1.5-1")
xgb_script_mode_estimator = sagemaker.estimator.Estimator( image_uri=xgboost_container, hyperparameters=hyperparams, role=role, instance_count=1, instance_type=instance_type, output_path=output_path, max_run=7200, ) test_data_uri = " <specify the S3 uri for training dataset>"
validation_data_uri = “<specify the S3 uri for validation dataset>” train_input = TrainingInput( test_data_uri, content_type=content_type
) validation_input = TrainingInput( validation_data_uri, content_type=content_type
) xgb_script_mode_estimator.fit({"train": train_input, "validation": validation_input})

تُظهر لقطات الشاشة التالية سجل عمل تدريب ناجح من دفتر الملاحظات.

يقدم Amazon SageMaker XGBoost الآن تدريبًا موزعًا بالكامل على وحدة معالجة الرسومات | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

المعايير

قمنا بقياس مقاييس التقييم للتأكد من أن جودة النموذج لم تتدهور مع مسار التدريب متعدد وحدات معالجة الرسومات مقارنةً بتدريب GPU الفردي. قمنا أيضًا بقياس الأداء على مجموعات البيانات الكبيرة للتأكد من أن إعدادات GPU الموزعة لدينا كانت عالية الأداء وقابلة للتطوير.

الوقت القابل للفوترة يشير إلى وقت ساعة الحائط المطلق. وقت التدريب هو فقط وقت تدريب XGBoost ، ويقاس من train() استدعاء حتى يتم حفظ النموذج في خدمة تخزين أمازون البسيطة (أمازون S3).

معايير الأداء على مجموعات البيانات الكبيرة

عادةً ما يكون استخدام وحدات معالجة الرسومات المتعددة مناسبًا لمجموعات البيانات الكبيرة ذات التدريب المعقد. أنشأنا مجموعة بيانات وهمية باستخدام 2,497,248,278 صفوف و 28 ميزة للاختبار. كانت مجموعة البيانات 150 جيجابايت وتتألف من 1,419 ملفًا. كان حجم كل ملف بين 105-115 ميغابايت. قمنا بحفظ البيانات بتنسيق باركيه في دلو S3. لمحاكاة تدريب معقد إلى حد ما ، استخدمنا مجموعة البيانات هذه لمهمة تصنيف ثنائية ، مع 1,000 جولة ، لمقارنة الأداء بين مسار التدريب على وحدة معالجة الرسومات الفردية ومسار التدريب متعدد وحدات معالجة الرسومات.

يحتوي الجدول التالي على وقت التدريب القابل للفوترة ومقارنة الأداء بين مسار التدريب لوحدة معالجة الرسومات الفردية ومسار التدريب متعدد وحدات معالجة الرسومات.

مسار تدريب أحادي GPU
نوع الطلب عدد المثيلات الوقت / المثيل القابل للفوترة وقت (أوقات) التدريب
g4dn.xlarge 20 خارج الذاكرة
g4dn.2x تكبير 20 خارج الذاكرة
g4dn.4x تكبير 15 1710 1551.9
16 1592 1412.2
17 1542 1352.2
18 1423 1281.2
19 1346 1220.3
مسار تدريب متعدد GPU (مع Dask)
نوع الطلب عدد المثيلات الوقت / المثيل القابل للفوترة وقت (أوقات) التدريب
g4dn.12x تكبير 7 خارج الذاكرة
8 1143 784.7
9 1039 710.73
10 978 676.7
12 940 614.35

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

يجب عليك استخدام مثيل EC2 لديه قوة حسابية كافية لتجنب أخطاء الذاكرة عند التعامل مع مجموعات البيانات الكبيرة.

من الممكن تقليل الوقت الإجمالي بشكل أكبر باستخدام إعداد GPU الفردي باستخدام المزيد من المثيلات أو مثيلات أكثر قوة. ومع ذلك ، من حيث التكلفة ، قد يكون أكثر تكلفة. على سبيل المثال ، يوضح الجدول التالي وقت التدريب ومقارنة التكلفة مع مثيل GPU واحد g4dn.8xlarge.

مسار تدريب أحادي GPU
نوع الطلب عدد المثيلات الوقت / المثيل القابل للفوترة التكلفة ($)
g4dn.8x تكبير 15 1679 15.22
17 1509 15.51
19 1326 15.22
مسار تدريب متعدد GPU (مع Dask)
نوع الطلب عدد المثيلات الوقت / المثيل القابل للفوترة التكلفة ($)
g4dn.12x تكبير 8 1143 9.93
10 978 10.63
12 940 12.26

يعتمد حساب التكلفة على السعر عند الطلب لكل حالة. لمزيد من المعلومات ، يرجى الرجوع إلى مثيلات Amazon EC2 G4.

معايير جودة النموذج

بالنسبة لجودة النموذج ، قمنا بمقارنة مقاييس التقييم بين خيار Dask GPU وخيار GPU الفردي ، وقمنا بإجراء تدريب على أنواع مختلفة من المثيلات وعدد المثيلات. بالنسبة للمهام المختلفة ، استخدمنا مجموعات بيانات مختلفة ومعلمات فائقة ، مع تقسيم كل مجموعة بيانات إلى مجموعات تدريب وتحقق واختبار.

لتصنيف ثنائي (binary:logistic) المهمة ، استخدمنا ملف هايغس مجموعة البيانات بتنسيق CSV. يحتوي قسم التدريب لمجموعة البيانات على 9,348,181 صفًا و 28 ميزة. كان عدد الطلقات المستخدمة 1,000. يلخص الجدول التالي النتائج.

تدريب متعدد معالجات الجرافيكس مع Dask
نوع الطلب عدد وحدات معالجة الرسومات / المثيل عدد المثيلات الوقت / المثيل القابل للفوترة صحة ٪ F1٪ ROC الجامعة الأمريكية بالقاهرة٪
g4dn.2x تكبير 1 1 343 75.97 77.61 84.34
g4dn.4x تكبير 1 1 413 76.16 77.75 84.51
g4dn.8x تكبير 1 1 413 76.16 77.75 84.51
g4dn.12x تكبير 4 1 157 76.16 77.74 84.52

للانحدار (reg:squarederror) ، استخدمنا ملف مدينة نيويورك الكابينة الخضراء مجموعة بيانات (مع بعض التعديلات) بتنسيق باركيه. يحتوي قسم التدريب لمجموعة البيانات على 72,921,051 صفًا و 8 ميزات. بلغ عدد الجولات المستخدمة 500 جولة. ويبين الجدول التالي النتائج.

تدريب متعدد معالجات الجرافيكس مع Dask
نوع الطلب عدد وحدات معالجة الرسومات / المثيل عدد المثيلات الوقت / المثيل القابل للفوترة MSE R2 MAE
g4dn.2x تكبير 1 1 775 21.92 0.7787 2.43
g4dn.4x تكبير 1 1 770 21.92 0.7787 2.43
g4dn.8x تكبير 1 1 705 21.92 0.7787 2.43
g4dn.12x تكبير 4 1 253 21.93 0.7787 2.44

تتشابه مقاييس جودة النموذج بين خيار التدريب على وحدات معالجة الرسومات المتعددة (Dask) وخيار التدريب الحالي. تظل جودة النموذج متسقة عند استخدام إعداد موزع مع مثيلات متعددة أو وحدات معالجة رسومات.

وفي الختام

في هذا المنشور ، قدمنا ​​نظرة عامة حول كيفية استخدام مجموعات مختلفة من نوع المثيل وعدد المثيلات لتدريب GPU الموزع باستخدام SageMaker XGBoost. بالنسبة لمعظم حالات الاستخدام ، يمكنك استخدام مثيلات GPU المفردة. يوفر هذا الخيار نطاقًا واسعًا من المثيلات للاستخدام وهو فعال للغاية. يمكنك استخدام مثيلات متعددة لوحدات معالجة الرسومات للتدريب باستخدام مجموعات بيانات كبيرة والعديد من الجولات. يمكن أن يوفر تدريبًا سريعًا مع عدد أقل من المثيلات. بشكل عام ، يمكنك استخدام إعداد GPU الموزع الخاص بـ SageMaker XGBoost لتسريع تدريب XGBoost بشكل كبير.

لمعرفة المزيد حول SageMaker والتدريب الموزع باستخدام Dask ، تحقق من يقدم LightGBM المدمج في Amazon SageMaker الآن تدريبًا موزعًا باستخدام Dask


حول المؤلف

يقدم Amazon SageMaker XGBoost الآن تدريبًا موزعًا بالكامل على وحدة معالجة الرسومات | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.ديراج ثكور هو مهندس حلول مع Amazon Web Services. إنه يعمل مع عملاء وشركاء AWS لتقديم إرشادات حول اعتماد سحابة المؤسسة وترحيلها واستراتيجيتها. إنه متحمس للتكنولوجيا ويستمتع بالبناء والتجريب في مجال التحليلات و AI / ML.

يقدم Amazon SageMaker XGBoost الآن تدريبًا موزعًا بالكامل على وحدة معالجة الرسومات | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.ديوان شودري هو مهندس تطوير برمجيات مع Amazon Web Services. يعمل على خوارزميات Amazon SageMaker وعروض JumpStart. بصرف النظر عن بناء البنى التحتية للذكاء الاصطناعي / تعلم الآلة ، فهو متحمس أيضًا لبناء أنظمة موزعة قابلة للتطوير.

شين هوانغالدكتور شين هوانغ هو عالم تطبيقي في Amazon SageMaker JumpStart وخوارزميات Amazon SageMaker المدمجة. يركز على تطوير خوارزميات التعلم الآلي القابلة للتطوير. تتركز اهتماماته البحثية في مجال معالجة اللغة الطبيعية ، والتعلم العميق القابل للتفسير على البيانات المجدولة ، والتحليل القوي لتجميع الزمكان غير المعياري. وقد نشر العديد من الأوراق البحثية في ACL و ICDM ومؤتمرات KDD والجمعية الملكية للإحصاء: مجلة Series A.

يقدم Amazon SageMaker XGBoost الآن تدريبًا موزعًا بالكامل على وحدة معالجة الرسومات | أمازون ويب سيرفيسز PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.توني كروز

الطابع الزمني:

اكثر من التعلم الآلي من AWS