با AWS Trainium و Amazon SageMaker، کارایی را به حداکثر برسانید و هزینه آموزش عمیق خود را کاهش دهید

با AWS Trainium و Amazon SageMaker، کارایی را به حداکثر برسانید و هزینه آموزش عمیق خود را کاهش دهید

گره منبع: 2010875

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

SageMaker یک سرویس ML کاملاً مدیریت شده است که به توسعه دهندگان و دانشمندان داده کمک می کند تا به راحتی مدل های ML را بسازند، آموزش دهند و به کار گیرند. SageMaker در حال حاضر گسترده‌ترین و عمیق‌ترین گزینه‌های محاسباتی را با شتاب‌دهنده‌های سخت‌افزاری برای آموزش ML، از جمله G5 (Nvidia A10G) موارد و P4d (Nvidia A100) مصادیق

نیازهای رو به رشد محاسباتی نیازمند قدرت پردازش سریعتر و مقرون به صرفه تر است. برای کاهش بیشتر زمان‌های آموزش مدل و فعال کردن تمرین‌کنندگان ML برای تکرار سریع‌تر، AWS در تراشه‌ها، سرورها و اتصال مرکز داده نوآوری کرده است. نمونه های جدید Trn1 که توسط AWS Trainium تراشه‌ها بهترین کارایی قیمت و سریع‌ترین آموزش مدل ML را در AWS ارائه می‌کنند و تا 50 درصد هزینه کمتری را برای آموزش مدل‌های یادگیری عمیق نسبت به نمونه‌های مشابه مبتنی بر GPU بدون هیچ افت دقت ارائه می‌کنند.

در این پست، ما نشان می دهیم که چگونه می توانید با استفاده از نمونه های Trn1 با SageMaker، عملکرد خود را به حداکثر برسانید و هزینه را کاهش دهید.

بررسی اجمالی راه حل

مشاغل آموزشی SageMaker از نمونه‌های ml.trn1 پشتیبانی می‌کنند که توسط تراشه‌های Trainium طراحی شده‌اند که برای برنامه‌های آموزشی ML با کارایی بالا در فضای ابری ساخته شده‌اند. می‌توانید از نمونه‌های ml.trn1 در SageMaker برای آموزش پردازش زبان طبیعی (NLP)، بینایی رایانه و مدل‌های توصیه‌کننده در یک برنامه استفاده کنید. مجموعه گسترده ای از برنامه های کاربردیمانند تشخیص گفتار، توصیه، تشخیص تقلب، طبقه‌بندی تصویر و ویدئو، و پیش‌بینی. نمونه های ml.trn1 دارای حداکثر 16 تراشه Trainium هستند که یک تراشه نسل دوم ML است که توسط AWS پس از آن ساخته شده است. استنتاج AWS. موارد ml.trn1 اولین موارد هستند ابر محاسبه الاستیک آمازون نمونه‌های (Amazon EC2) با پهنای باند شبکه Elastic Fabric Adapter (EFA) تا 800 گیگابیت بر ثانیه. برای داده‌های کارآمد و موازی‌سازی مدل، هر نمونه ml.trn1.32xl دارای 512 گیگابایت حافظه با پهنای باند بالا است، تا 3.4 پتافلاپ توان محاسباتی FP16/BF16 را ارائه می‌کند، و دارای NeuronLink، یک اتصال داخلی، پهنای باند بالا و غیرانسدادی است. .

Trainium در دو پیکربندی موجود است و می تواند در مناطق شرقی ایالات متحده (N. Virginia) و غرب ایالات متحده (Oregon) استفاده شود.

جدول زیر ویژگی های نمونه های Trn1 را خلاصه می کند.

اندازه نمونه Trainium
شتاب دهنده ها
شتاب دهنده
حافظه
(گیگابایت)
vCPU ها نمونه، مثال
حافظه
(گیگابایت)
شبکه ارتباطی
پهنای باند
(گیگابیت بر ثانیه)
EFA و
RDMA
پشتیبــانی
trn1.2xlarge 1 32 8 32 تا 12.5 نه
trn1.32xlarge 16 512 128 512 800 بله
trn1n.32xlarge (به زودی) 16 512 128 512 1600 بله

بیایید نحوه استفاده از Trainium با SageMaker را با یک مثال ساده درک کنیم. ما یک مدل طبقه بندی متن را با آموزش SageMaker و PyTorch با استفاده از Hugging Face Transformers Library آموزش خواهیم داد.

ما از مجموعه داده های Amazon Reviews استفاده می کنیم که شامل بررسی های amazon.com است. این داده ها یک دوره 18 ساله را شامل می شود که شامل تقریباً 35 میلیون بررسی تا مارس 2013 می شود. بررسی ها شامل اطلاعات محصول و کاربر، رتبه بندی ها و بررسی متن ساده است. کد زیر نمونه ای از کد است AmazonPolarity مجموعه تست:

{
title':'Great CD', 'content':"My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing ""Who was that singing ?""", 'label':1
}

برای این پست، ما فقط از فیلدهای محتوا و برچسب استفاده می کنیم. فیلد محتوا یک بررسی متنی رایگان است و فیلد برچسب یک مقدار باینری است که به ترتیب حاوی 1 یا 0 برای نظرات مثبت یا منفی است.

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

جزئیات پیاده سازی

بیایید با نگاهی دقیق تر به اجزای مختلف درگیر در آموزش مدل شروع کنیم:

  • AWS Trainium - در هسته خود، هر کدام نمونه Trainium دارای دستگاه های Trainium تعبیه شده در آن. Trn1.2xlarge دارای 1 دستگاه Trainium و Trn1.32xlarge دارای 16 دستگاه Trainium است. هر دستگاه Trainium از محاسبات (2 NeuronCore-v2)، 32 گیگابایت حافظه دستگاه HBM و NeuronLink برای ارتباط سریع بین دستگاهی تشکیل شده است. هر یک NeuronCore-v2 شامل یک واحد محاسباتی ناهمگن کاملاً مستقل با موتورهای جداگانه (Tensor/Vector/Scalar/GPSIMD). GPSIMD پردازنده های همه منظوره کاملاً قابل برنامه ریزی هستند که می توانید از آنها برای پیاده سازی اپراتورهای سفارشی و اجرای مستقیم آنها بر روی موتورهای NeuronCore استفاده کنید.
  • آموزش آمازون SageMaker - SageMaker یک تجربه آموزشی کاملاً مدیریت شده برای آموزش آسان مدل ها بدون نیاز به نگرانی در مورد زیرساخت ارائه می دهد. وقتی از SageMaker Training استفاده می‌کنید، همه چیزهایی که برای یک کار آموزشی لازم است، مانند کد، کانتینر و داده‌ها را در یک زیرساخت محاسباتی جدا از محیط فراخوانی اجرا می‌کند. این به ما امکان می دهد آزمایش ها را به صورت موازی و سریع تکرار کنیم. SageMaker ارائه می دهد پایتون SDK برای راه اندازی مشاغل آموزشی مثال موجود در این پست از SageMaker Python SDK برای راه اندازی کار آموزشی با استفاده از Trainium استفاده می کند.
  • نورون AWS – از آنجایی که Trainium NeuronCore موتور محاسباتی خود را دارد، ما به مکانیزمی برای کامپایل کد آموزشی خود نیاز داریم. این نورون AWS کامپایلر کد نوشته شده در Pytorch/XLA را می گیرد و آن را برای اجرا در دستگاه های Neuron بهینه می کند. کامپایلر Neuron به عنوان بخشی از Deep Learning Container که برای آموزش مدل خود استفاده خواهیم کرد، یکپارچه شده است.
  • PyTorch/XLA - این بسته پایتون از کامپایلر یادگیری عمیق XLA برای اتصال چارچوب یادگیری عمیق PyTorch و شتاب دهنده های ابری مانند Trainium استفاده می کند. ساختن یک شبکه PyTorch جدید یا تبدیل شبکه موجود برای اجرا در دستگاه های XLA تنها به چند خط کد مخصوص XLA نیاز دارد. ما برای مورد استفاده خود خواهیم دید که چه تغییراتی باید ایجاد کنیم.
  • آموزش توزیع شده - برای اجرای کارآمد آموزش بر روی چند هسته‌ی عصبی، به مکانیزمی نیاز داریم تا آموزش را در هسته‌های عصبی موجود توزیع کنیم. SageMaker از torchrun با نمونه‌های Trainium پشتیبانی می‌کند، که می‌توان از آن برای اجرای چندین فرآیند معادل تعداد NeuronCores در خوشه استفاده کرد. این کار با ارسال پارامتر توزیع به تخمین‌گر SageMaker به صورت زیر انجام می‌شود، که یک آموزش توزیع موازی داده را شروع می‌کند که در آن همان مدل در هسته‌های عصبی مختلف بارگذاری می‌شود که دسته‌های داده جداگانه را پردازش می‌کنند:
distribution={"torch_distributed": {"enabled": True}}

برای اجرا در Trainium نیاز به تغییرات اسکریپت است

بیایید به تغییرات کد مورد نیاز برای استفاده از اسکریپت PyTorch مبتنی بر GPU معمولی برای اجرا در Trainium نگاه کنیم. در سطح بالا باید تغییرات زیر را اعمال کنیم:

  1. دستگاه های GPU را با دستگاه های Pytorch/XLA جایگزین کنید. از آنجا که ما از توزیع مشعل استفاده می کنیم، باید آموزش را با XLA به عنوان دستگاه به صورت زیر مقداردهی کنیم:
    device = "xla"
    torch.distributed.init_process_group(device)

  2. ما از باطن توزیع‌شده PyTorch/XLA برای پل زدن APIهای توزیع‌شده PyTorch به معناشناسی ارتباطی XLA استفاده می‌کنیم.
  3. ما از PyTorch/XLA MpDeviceLoader برای خطوط لوله انتقال داده استفاده می کنیم. MpDeviceLoader با همپوشانی سه مرحله به بهبود عملکرد کمک می کند: ردیابی، کامپایل، و بارگذاری دسته ای داده در دستگاه. ما باید دیتالودر PyTorch را با MpDeviceDataLoader به صورت زیر بپیچیم:
    train_device_loader = pl.MpDeviceLoader(train_loader, "xla")

  4. همانطور که در کد زیر نشان داده شده است، مرحله بهینه سازی را با استفاده از API ارائه شده توسط XLA اجرا کنید. این شیب بین هسته‌ها را ادغام می‌کند و محاسبه مرحله دستگاه XLA را صادر می‌کند.
    torch_xla.core.xla_model.optimizer_step(optimizer)

  5. APIهای CUDA (در صورت وجود) را به APIهای عمومی PyTorch ترسیم کنید.
  6. بهینه سازهای ذوب شده CUDA (در صورت وجود) را با جایگزین های عمومی PyTorch جایگزین کنید.

کل مثال، که یک مدل طبقه بندی متن را با استفاده از SageMaker و Trainium آموزش می دهد، در زیر موجود است GitHub repo. فایل نوت بوک تنظیم دقیق ترانسفورماتورها برای مدل های طبقه بندی ساختمان با استفاده از SageMaker و Trainium.ipynb نقطه ورود است و حاوی دستورالعمل های گام به گام برای اجرای آموزش است.

تست های معیار

در آزمایش، ما دو کار آموزشی را اجرا کردیم: یکی در ml.trn1.32xlarge، و دیگری در ml.p4d.24xlarge با همان اندازه دسته‌ای، داده‌های آموزشی و سایر پارامترها. در طول کارهای آموزشی، ما زمان قابل صورت‌حساب مشاغل آموزشی SageMaker را اندازه‌گیری کردیم و با ضرب زمان مورد نیاز برای اجرای مشاغل آموزشی بر حسب ساعت در قیمت هر ساعت برای نوع نمونه، قیمت-عملکرد را محاسبه کردیم. ما بهترین نتیجه را برای هر نوع نمونه از بین چندین کار اجرا شده انتخاب کردیم.

جدول زیر یافته های معیار ما را خلاصه می کند.

مدل نوع نمونه قیمت (هر گره * ساعت) توان عملیاتی (تکرار/ثانیه) صحت اعتبارسنجی زمان قابل پرداخت (ثانیه) هزینه آموزش به دلار
طبقه بندی پایه BERT ml.trn1.32xlarge 24.725 6.64 0.984 6033 41.47
طبقه بندی پایه BERT ml.p4d.24xlarge 37.69 5.44 0.984 6553 68.6

نتایج نشان داد که نمونه Trainium هزینه کمتری نسبت به نمونه P4d دارد و در هنگام آموزش مدل مشابه با داده‌های ورودی و پارامترهای آموزشی مشابه، توان عملیاتی و دقت مشابهی را ارائه می‌دهد. این بدان معناست که نمونه Trainium نسبت به نمونه‌های P4D مبتنی بر GPU عملکرد قیمت بهتری ارائه می‌دهد. با مثال ساده ای مانند این، می توانیم ببینیم که Trainium حدود 22٪ زمان سریع تر برای آموزش و 50٪ هزینه کمتر را نسبت به نمونه های P4d ارائه می دهد.

مدل آموزش دیده را مستقر کنید

پس از آموزش مدل، می‌توانیم آن را در انواع نمونه‌های مختلف مانند CPU، GPU یا AWS Inferentia مستقر کنیم. نکته کلیدی که باید به آن توجه داشت این است که مدل آموزش دیده برای استقرار و استنتاج به سخت افزار تخصصی وابسته نیست. SageMaker مکانیسم هایی را برای استقرار یک مدل آموزش دیده با استفاده از مکانیسم های زمان واقعی یا دسته ای فراهم می کند. مثال نوت بوک موجود در مخزن GitHub حاوی کدی برای استقرار مدل آموزش دیده به عنوان یک نقطه پایانی بلادرنگ با استفاده از نمونه ml.c5.xlarge (مبتنی بر CPU) است.

نتیجه

در این پست، نحوه استفاده از Trainium و SageMaker برای راه‌اندازی و آموزش سریع یک مدل طبقه‌بندی را بررسی کردیم که تا 50٪ در هزینه صرفه‌جویی می‌کند بدون اینکه به دقت دقت شود. می‌توانید از Trainium برای طیف وسیعی از موارد استفاده که شامل پیش‌آموزش یا تنظیم دقیق مدل‌های مبتنی بر ترانسفورماتور است، استفاده کنید. برای اطلاعات بیشتر در مورد پشتیبانی از معماری های مدل های مختلف به ادامه مطلب مراجعه کنید دستورالعمل های مناسب معماری مدل.


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

آرون کومار لوکاناتا یک معمار ارشد راه حل های ML با تیم خدمات آمازون SageMaker است. او بر کمک به مشتریان در ساخت، آموزش و انتقال بارهای کاری تولید ML به SageMaker در مقیاس متمرکز است. او در یادگیری عمیق به ویژه در زمینه NLP و CV تخصص دارد. در خارج از محل کار، او از دویدن و پیاده روی لذت می برد.

مارک یو یک مهندس نرم افزار در AWS SageMaker است. او بر ساختن سیستم‌های آموزشی توزیع‌شده در مقیاس بزرگ، بهینه‌سازی عملکرد تمرینی، و توسعه سخت‌افزارهای آموزشی ml با کارایی بالا، از جمله SageMaker trainium تمرکز می‌کند. مارک همچنین دانش عمیقی در مورد بهینه سازی زیرساخت یادگیری ماشین دارد. در اوقات فراغت خود از پیاده روی و دویدن لذت می برد.

عمری فوکس مدیر توسعه نرم افزار در AWS SageMaker است. او رهبر فنی مسئول پلت فرم شغلی آموزشی SageMaker است که بر بهینه سازی عملکرد آموزشی SageMaker و بهبود تجربه آموزشی تمرکز دارد. او علاقه زیادی به فناوری پیشرفته ML و AI دارد. در اوقات فراغت، دوچرخه سواری و پیاده روی را دوست دارد.

گال عشری یک مدیر ارشد محصول در تیم آمازون SageMaker است. او 7 سال تجربه کار بر روی ابزارها، چارچوب ها و خدمات یادگیری ماشینی دارد.

تمبر زمان:

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