Amazon SageMaker XGBoost اکنون آموزش GPU کاملاً توزیع شده | خدمات وب آمازون

Amazon SageMaker XGBoost اکنون آموزش GPU کاملاً توزیع شده | خدمات وب آمازون

آمازون SageMaker مجموعه ای از الگوریتم های داخلی, مدل های از پیش آموزش دیدهو الگوهای راه حل از پیش ساخته شده برای کمک به دانشمندان داده و متخصصان یادگیری ماشین (ML) برای شروع آموزش و استقرار سریع مدل‌های ML. شما می توانید از این الگوریتم ها و مدل ها برای یادگیری تحت نظارت و بدون نظارت استفاده کنید. آنها می توانند انواع مختلفی از داده های ورودی از جمله جدولی، تصویری و متنی را پردازش کنند.

La الگوریتم SageMaker XGBoost به شما اجازه می دهد تا به راحتی آموزش و استنباط XGBoost را در SageMaker اجرا کنید. XGBoost (EXtreme Gradient Boosting) یک پیاده سازی منبع باز محبوب و کارآمد از الگوریتم درختان تقویت شده گرادیان است. تقویت گرادیان یک الگوریتم یادگیری نظارت شده است که سعی می کند با ترکیب مجموعه ای از تخمین ها از مجموعه ای از مدل های ساده تر و ضعیف تر، یک متغیر هدف را به طور دقیق پیش بینی کند. الگوریتم XGBoost در مسابقات ML به دلیل مدیریت قوی انواع داده‌ها، روابط، توزیع‌ها و تنوع فراپارامترهایی که می‌توانید به خوبی تنظیم کنید، عملکرد خوبی دارد. می توانید از XGBoost برای مشکلات رگرسیون، طبقه بندی (دودویی و چند کلاسه) و رتبه بندی استفاده کنید. می‌توانید از GPU برای تسریع آموزش در مجموعه داده‌های بزرگ استفاده کنید.

امروز، ما خوشحالیم که آن را اعلام کنیم SageMaker XGBoost اکنون آموزش GPU کاملاً توزیع شده را ارائه می دهد.

با شروع نسخه 1.5-1 و بالاتر، اکنون می توانید از همه GPU ها هنگام استفاده از نمونه های چند GPU استفاده کنید. ویژگی جدید نیازهای شما را برای استفاده از آموزش GPU کاملاً توزیع شده در هنگام برخورد با مجموعه داده های بزرگ برطرف می کند. این به این معنی است که می توانید از چندگانه استفاده کنید ابر محاسبه الاستیک آمازون نمونه های (Amazon EC2) (GPU) و استفاده از همه پردازنده های گرافیکی در هر نمونه.

آموزش GPU توزیع شده با نمونه های چند GPU

با SageMaker XGBoost نسخه 1.2-2 یا بالاتر، می توانید از یک یا چند نمونه تک GPU برای آموزش استفاده کنید. را فرا پارامتر tree_method باید روی gpu_hist تنظیم شود. هنگام استفاده از بیش از یک نمونه (تنظیم توزیع شده)، داده ها باید بین نمونه های زیر تقسیم شوند (همان مراحل آموزشی توزیع شده غیر GPU ذکر شده در الگوریتم XGBoost). اگرچه این گزینه کارآمد است و می‌توان از آن در تنظیمات آموزشی مختلف استفاده کرد، اما در هنگام انتخاب نمونه‌های چند GPU مانند g5.12xlarge، به استفاده از همه GPU‌ها تعمیم نمی‌یابد.

با SageMaker XGBoost نسخه 1.5-1 و بالاتر، اکنون می توانید هنگام استفاده از نمونه های چند GPU از همه GPU ها در هر نمونه استفاده کنید. توانایی استفاده از تمام GPU ها در نمونه چند GPU با یکپارچه سازی ارائه می شود داسک چارچوب

شما می توانید از این تنظیمات برای تکمیل سریع آموزش استفاده کنید. جدای از صرفه جویی در زمان، این گزینه همچنین برای کار در مورد مسدود کننده هایی مانند حداکثر محدودیت های نمونه قابل استفاده (نرم) یا اگر کار آموزشی به دلایلی قادر به ارائه تعداد زیادی نمونه تک GPU نیست، مفید خواهد بود.

تنظیمات برای استفاده از این گزینه مانند گزینه قبلی است، به جز تفاوت های زیر:

  • جدید را اضافه کنید فرا پارامتر use_dask_gpu_training با مقدار رشته true.
  • هنگام ایجاد ورودی آموزش، پارامتر توزیع را تنظیم کنید FullyReplicated، چه با استفاده از نمونه های منفرد یا چندگانه. چارچوب اصلی Dask بار داده را انجام می دهد و داده ها را بین کارگران Dask تقسیم می کند. این با تنظیمات توزیع داده برای سایر آموزش های توزیع شده با SageMaker XGBoost متفاوت است.

توجه داشته باشید که تقسیم داده ها به فایل های کوچکتر همچنان برای Parquet اعمال می شود، جایی که Dask هر فایل را به عنوان یک تقسیم. از آنجایی که در هر GPU یک Dask worker خواهید داشت، تعداد فایل‌ها باید بیشتر از تعداد نمونه * تعداد 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 اکنون آموزش GPU کاملاً توزیع شده | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.

معیار

ما معیارهای ارزیابی را برای اطمینان از اینکه کیفیت مدل با مسیر آموزش چند GPU در مقایسه با آموزش تک GPU بدتر نمی‌شود، محک زدیم. ما همچنین بر روی مجموعه داده‌های بزرگ محک زدیم تا اطمینان حاصل کنیم که تنظیمات GPU توزیع‌شده ما عملکردی و مقیاس‌پذیر هستند.

زمان قابل پرداخت به زمان مطلق ساعت دیواری اشاره دارد. زمان آموزش فقط زمان آموزش XGBoost است که از روی اندازه گیری می شود train() تماس بگیرید تا مدل در آن ذخیره شود سرویس ذخیره سازی ساده آمازون (Amazon S3).

معیارهای عملکرد در مجموعه داده های بزرگ

استفاده از چند GPU معمولا برای مجموعه داده های بزرگ با آموزش پیچیده مناسب است. ما یک مجموعه داده ساختگی با 2,497,248,278 ردیف و 28 ویژگی برای آزمایش. مجموعه داده 150 گیگابایت و از 1,419 فایل تشکیل شده است. اندازه هر فایل بین 105 تا 115 مگابایت بود. ما داده ها را در قالب پارکت در یک سطل S3 ذخیره کردیم. برای شبیه‌سازی آموزش تا حدودی پیچیده، از این مجموعه داده برای یک کار طبقه‌بندی باینری، با 1,000 دور، برای مقایسه عملکرد بین مسیر آموزش تک GPU و مسیر آموزش چند GPU استفاده کردیم.

جدول زیر شامل زمان آموزش قابل پرداخت و مقایسه عملکرد بین مسیر آموزش تک GPU و مسیر آموزش چند GPU است.

مسیر آموزشی تک GPU
نوع نمونه تعداد نمونه زمان / نمونه (های) قابل پرداخت زمان(های) آموزش
g4dn.xlarge 20 خارج از حافظه
g4dn.2xlarge 20 خارج از حافظه
g4dn.4xlarge 15 1710 1551.9
16 1592 1412.2
17 1542 1352.2
18 1423 1281.2
19 1346 1220.3
مسیر آموزشی چند GPU (با Dask)
نوع نمونه تعداد نمونه زمان / نمونه (های) قابل پرداخت زمان(های) آموزش
g4dn.12xlarge 7 خارج از حافظه
8 1143 784.7
9 1039 710.73
10 978 676.7
12 940 614.35

می‌توانیم ببینیم که استفاده از نمونه‌های چند GPU باعث کاهش زمان آموزش و زمان کلی کم می‌شود. مسیر آموزش تک GPU هنوز در دانلود و خواندن تنها بخشی از داده ها در هر نمونه دارای مزیت است و بنابراین زمان دانلود داده کم است. همچنین از سربار Dask رنج نمی برد. بنابراین تفاوت زمان تمرین با کل زمان کمتر است. با این حال، به دلیل استفاده از GPU های بیشتر، راه اندازی چند GPU می تواند زمان آموزش را به میزان قابل توجهی کاهش دهد.

شما باید از یک نمونه EC2 استفاده کنید که قدرت محاسباتی کافی برای جلوگیری از خطاهای حافظه در هنگام برخورد با مجموعه داده های بزرگ داشته باشد.

با استفاده از نمونه‌های بیشتر یا نمونه‌های قوی‌تر، می‌توانید کل زمان را با راه‌اندازی تک GPU کاهش دهید. با این حال، از نظر هزینه، ممکن است گران تر باشد. به عنوان مثال، جدول زیر مقایسه زمان و هزینه آموزش با یک نمونه تک GPU g4dn.8xlarge را نشان می دهد.

مسیر آموزشی تک GPU
نوع نمونه تعداد نمونه زمان / نمونه (های) قابل پرداخت هزینه ($)
g4dn.8xlarge 15 1679 15.22
17 1509 15.51
19 1326 15.22
مسیر آموزشی چند GPU (با Dask)
نوع نمونه تعداد نمونه زمان / نمونه (های) قابل پرداخت هزینه ($)
g4dn.12xlarge 8 1143 9.93
10 978 10.63
12 940 12.26

محاسبه هزینه بر اساس قیمت درخواستی برای هر نمونه است. برای اطلاعات بیشتر مراجعه کنید نمونه های آمازون EC2 G4.

معیارهای کیفیت مدل

برای کیفیت مدل، معیارهای ارزیابی را بین گزینه Dask GPU و گزینه single-GPU مقایسه کردیم و آموزش‌هایی را روی انواع نمونه‌ها و تعداد نمونه‌های مختلف اجرا کردیم. برای وظایف مختلف، ما از مجموعه داده‌ها و فراپارامترهای مختلف استفاده کردیم که هر مجموعه داده به مجموعه‌های آموزشی، اعتبارسنجی و آزمایش تقسیم شد.

برای طبقه بندی باینری (binary:logistic) task، ما از هیگز مجموعه داده در قالب CSV. تقسیم آموزشی مجموعه داده دارای 9,348,181،28،1,000 ردیف و XNUMX ویژگی است. تعداد گلوله های استفاده شده XNUMX عدد بود. جدول زیر نتایج را به طور خلاصه نشان می دهد.

آموزش چند GPU با Dask
نوع نمونه تعداد GPU / نمونه تعداد نمونه زمان / نمونه (های) قابل پرداخت دقت ٪ F1 % ROC AUC %
g4dn.2xlarge 1 1 343 75.97 77.61 84.34
g4dn.4xlarge 1 1 413 76.16 77.75 84.51
g4dn.8xlarge 1 1 413 76.16 77.75 84.51
g4dn.12xlarge 4 1 157 76.16 77.74 84.52

برای رگرسیون (reg:squarederror)، ما استفاده کردیم تاکسی سبز نیویورک مجموعه داده (با برخی تغییرات) در قالب پارکت. تقسیم آموزشی مجموعه داده دارای 72,921,051 ردیف و 8 ویژگی است. تعداد دور استفاده شده 500 عدد بود. جدول زیر نتایج را نشان می دهد.

آموزش چند GPU با Dask
نوع نمونه تعداد GPU / نمونه تعداد نمونه زمان / نمونه (های) قابل پرداخت MSE R2 MAE
g4dn.2xlarge 1 1 775 21.92 0.7787 2.43
g4dn.4xlarge 1 1 770 21.92 0.7787 2.43
g4dn.8xlarge 1 1 705 21.92 0.7787 2.43
g4dn.12xlarge 4 1 253 21.93 0.7787 2.44

معیارهای کیفیت مدل بین گزینه آموزشی چند GPU (Dask) و گزینه آموزشی موجود مشابه است. کیفیت مدل هنگام استفاده از تنظیمات توزیع شده با چندین نمونه یا GPU ثابت باقی می ماند.

نتیجه

در این پست، یک نمای کلی از نحوه استفاده از ترکیب‌های مختلف نوع نمونه و تعداد نمونه برای آموزش GPU توزیع شده با SageMaker XGBoost ارائه کردیم. برای بیشتر موارد استفاده، می توانید از نمونه های تک GPU استفاده کنید. این گزینه طیف گسترده ای از نمونه ها را برای استفاده فراهم می کند و بسیار کارآمد است. می‌توانید از نمونه‌های چند GPU برای آموزش با مجموعه داده‌های بزرگ و دورهای زیاد استفاده کنید. می تواند آموزش سریعی را با تعداد نمونه های کمتر ارائه دهد. به طور کلی، می‌توانید از راه‌اندازی GPU توزیع‌شده SageMaker XGBoost برای افزایش سرعت آموزش XGBoost خود استفاده کنید.

برای کسب اطلاعات بیشتر در مورد SageMaker و آموزش های توزیع شده با استفاده از Dask، بررسی کنید Amazon SageMaker داخلی LightGBM اکنون آموزش های توزیع شده را با استفاده از Dask ارائه می دهد


درباره نویسنده

Amazon SageMaker XGBoost اکنون آموزش GPU کاملاً توزیع شده | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.دراج تاکور یک معمار راه حل با خدمات وب آمازون است. او با مشتریان و شرکای AWS کار می کند تا راهنمایی هایی در مورد پذیرش ابر سازمانی، مهاجرت و استراتژی ارائه دهد. او علاقه زیادی به فناوری دارد و از ساختن و آزمایش در حوزه تحلیل و AI/ML لذت می برد.

Amazon SageMaker XGBoost اکنون آموزش GPU کاملاً توزیع شده | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.دوان چودوری یک مهندس توسعه نرم افزار با خدمات وب آمازون است. او روی الگوریتم‌های Amazon SageMaker و پیشنهادات JumpStart کار می‌کند. جدا از ساخت زیرساخت‌های AI/ML، او همچنین مشتاق ساختن سیستم‌های توزیع‌شده مقیاس‌پذیر است.

شین هوانگدکتر شین هوانگ یک دانشمند کاربردی برای آمازون SageMaker JumpStart و آمازون SageMaker الگوریتم های داخلی است. او بر روی توسعه الگوریتم های یادگیری ماشینی مقیاس پذیر تمرکز می کند. علایق تحقیقاتی او در زمینه پردازش زبان طبیعی، یادگیری عمیق قابل توضیح بر روی داده های جدولی و تجزیه و تحلیل قوی خوشه بندی ناپارامتریک فضا-زمان است. او مقالات زیادی را در کنفرانس‌های ACL، ICDM، KDD و مجله Royal Statistical Society: Series A منتشر کرده است.

Amazon SageMaker XGBoost اکنون آموزش GPU کاملاً توزیع شده | خدمات وب آمازون هوش داده پلاتو بلاک چین. جستجوی عمودی Ai.تونی کروز

تمبر زمان:

بیشتر از آموزش ماشین AWS