چگونه فضای پنهان از کتابخانه موازی مدل آمازون SageMaker برای فشار دادن مرزهای ترانسفورماتورهای مقیاس بزرگ استفاده کرد

گره منبع: 1204406

این وبلاگ توسط سارا جین هونگ CSO، Darryl Barnhart CTO، و Ian Thompson مدیر عامل Ltent Space و Prem Ranga از AWS نوشته شده است.

فضای پنهان نمایشی پنهان از ایده های انتزاعی است که مدل های یادگیری ماشین (ML) یاد می گیرند. برای مثال، «سگ»، «گل» یا «در» مفاهیم یا مکان‌هایی در فضای پنهان هستند. در فضای نهفته، ما در حال کار بر روی موتوری هستیم که به شما امکان می دهد این فضا را با اعلان های زبانی و بصری دستکاری و کاوش کنید. تیم فضای پنهان از دو زمینه تشکیل شده است که مدت هاست همپوشانی چندانی با هم ندارند: گرافیک و پردازش زبان طبیعی (NLP). به طور سنتی، روش‌های تصاویر و متن به‌طور جداگانه مورد بررسی قرار می‌گرفتند، که هر کدام دارای تاریخچه خاص خود در مهندسی ویژگی‌های پیچیده، گران‌قیمت و شکننده هستند. وظایف NLP مانند درک سند یا پاسخ به سؤال معمولاً با وظایف بینایی مانند درک صحنه یا رندر مشترک اندک است و معمولاً ما از رویکردها و مدل‌های بسیار متفاوتی برای هر کار استفاده می‌کنیم. اما این به سرعت در حال تغییر است.

این ادغام روش‌ها در یک فضای پنهان مشترک، نسل جدیدی از برنامه‌های خلاقانه و تجاری، از بازی تا درک اسناد را باز می‌کند. اما باز کردن قفل این برنامه‌های جدید در یک مدل، چالش‌های مقیاس‌بندی جدیدی را به وجود می‌آورد، همانطور که در «درس تلخ» توسط ریچارد ساتون، و کار هیجان‌انگیز در چند سال اخیر بر روی قوانین مقیاس‌بندی برجسته شده است. برای امکان‌پذیر ساختن این امر، فضای پنهان روی تحقیقات پیشرفته‌ای کار می‌کند تا این روش‌ها را در یک مدل واحد ترکیب کند، اما همچنین مقیاس‌بندی و انجام کارآمدی این کار را انجام دهد. اینجاست که موازی سازی مدل به میان می آید.

آمازون SageMakerپارتیشن بندی مدل خودکار منحصر به فرد و رویکرد خط لوله کارآمد، پذیرش موازی سازی مدل را با تلاش مهندسی اندک امکان پذیر کرد و آموزش مدل ها را فراتر از 1 میلیارد پارامتر افزایش دادیم (ما از نمونه های p4d.24xlarge A100) که برای ما یک نیاز مهم است. علاوه بر این، مشاهده کردیم که هنگام آموزش با راه‌اندازی آموزش 16 گره، هشت GPU با کتابخانه موازی مدل SageMaker، نسبت به دوره‌های آموزشی قبلی خود 38 درصد بهبودی در کارایی ثبت کردیم.

چالش های آموزش ترانسفورماتورهای مقیاس بزرگ

در فضای پنهان، ما زبان و بینایی را در مدل‌های ترانسفورماتور با میلیاردها پارامتر ترکیب می‌کنیم تا موارد استفاده «خارج از توزیع» را از تخیل کاربر یا مواردی که در دنیای واقعی اتفاق می‌افتد، اما نه در داده‌های آموزشی ما، پشتیبانی می‌کنند. ما چالش‌های ذاتی در مقیاس‌بندی به میلیاردها پارامتر و فراتر از آن را به دو روش مختلف مدیریت می‌کنیم:

تکنیک های بازیابی اطلاعات از دیرباز جزء کلیدی موتورهای جستجو و وظایف QA بوده اند. اخیراً، با ترکیب تکنیک‌های IR کلاسیک با ترانسفورماتورهای مدرن، پیشرفت‌های هیجان‌انگیزی حاصل شده است، به‌ویژه برای وظایف پاسخ‌گویی به سؤال که در آن یک مدل به طور مشترک با یک بازیابی عصبی آموزش داده می‌شود که یاد می‌گیرد اسناد مربوطه را برای کمک به پاسخ به سؤالات بازیابی کند. برای یک نمای کلی، به کار اخیر FAIR in مراجعه کنید Retrieval Augmented Generation: ساده‌سازی ایجاد مدل‌های پردازش هوشمند زبان طبیعی و Fusion-in-Decoder، Google Brain's واقعیو انویدیا رتریور عصبی برای پاسخ به سوال

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

کتابخانه موازی مدل SageMaker

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

پارتیشن بندی مدل های خودکار

برای مورد استفاده PyTorch ما، کتابخانه موازی مدل به صورت داخلی یک مرحله ردیابی (در اولین مرحله آموزش) اجرا می‌کند که نمودار مدل را می‌سازد و شکل‌های تانسور و پارامتر را تعیین می‌کند. سپس درختی را می سازد که از درخت تودرتو تشکیل شده است nn.Module اشیاء در مدل، و همچنین داده های اضافی جمع آوری شده از ردیابی، مانند مقدار ذخیره شده nn.Parametersو زمان اجرا برای هر کدام nn.Module.

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

برنامه ریزی اجرای خط لوله

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

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

آموزش معماری

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

همانطور که مدل های خود را افزایش می دهیم، یک روند رایج این است که همه چیز در وزن شبکه ذخیره شود. با این حال، برای اهداف عملی، می‌خواهیم مدل‌های خود را تقویت کنیم تا یاد بگیریم چگونه به دنبال زمینه‌های مرتبط برای کمک به کار رندر باشیم. این به ما امکان می دهد تا هزینه های سرویس خود را بدون کاهش کیفیت تصویر پایین نگه داریم. ما از یک مدل NLP مبتنی بر ترانسفورماتور بزرگ استفاده می کنیم و همانطور که قبلاً ذکر شد، با کتابخانه موازی مدل SageMaker افزایش 38 درصدی را در بازده آموزشی مشاهده کردیم که در زیر نشان داده شده است:

  • برای هر محاسباتی در مورد موازی بودن سطح تانسور، به یک allreduce نیاز داریم. این مراحل موازی O(log_2 n) را طی می کند. این یعنی n ماشین که O(n) گام برمی دارند، برای کل عملیات O(n log_2 n).
  • برای موازی سازی خط لوله، ما به مراحل موازی O(1) برای ارسال داده ها در خط لوله نیاز داریم
  • با توجه به 16 ماشین با هشت پردازنده گرافیکی، هزینه O(1) برای موازی خط لوله و O(log_2(8)) = O(3) هزینه برای موازی مدل از نظر عمق داریم.
  • در این مورد، می بینیم که هزینه شبکه با تغییر به موازی خط لوله که با موازی سازی مدل SageMaker استفاده می کنیم، به 1/3 کاهش می یابد و هزینه کلی آموزش به 1/2 + 1/2 * 1/log_2 (16) کاهش می یابد. ) = 0.625 از هزینه اصلی که منجر به بهبود کارایی متناظر می شود.

به طور کلی، زمانی که نیاز، آموزش توزیع شده را تضمین می کند (مشکلات مربوط به اندازه مدل مقیاس بندی یا داده های آموزشی)، ما می توانیم مجموعه ای از بهترین شیوه ها را دنبال کنیم تا تعیین کنیم که چه رویکردی بهترین کار را انجام می دهد.

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

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

اگر در حین آموزش حافظه شما تمام شد، همانطور که در این سناریو انجام دادیم، ممکن است بخواهید به رویکرد موازی مدل تغییر دهید. با این حال، قبل از امتحان کردن آموزش موازی مدل، این گزینه‌ها را در نظر بگیرید:

  • در سخت افزار NVIDIA Tensor Core، استفاده کنید آموزش با دقت ترکیبی برای ایجاد سرعت و کاهش مصرف حافظه.
  • اندازه دسته را کاهش دهید (یا در صورت امکان وضوح تصویر یا طول توالی NLP را کاهش دهید).

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

زمانی که محدودیت های زیر را دارید با آموزش موازی مدل شروع کنید:

  • مدل شما روی یک دستگاه قرار نمی گیرد
  • با توجه به اندازه مدل خود، در انتخاب اندازه های بزرگتر با محدودیت هایی مواجه هستید، مثلاً اگر وزن مدل شما بیشتر حافظه GPU شما را اشغال کند و مجبور شوید اندازه دسته ای کوچکتر و غیربهینه را انتخاب کنید.

هنگام بهینه سازی برای عملکرد، موارد زیر را انجام دهید:

  • برای به حداقل رساندن تأخیر و افزایش توان عملیاتی از خط لوله برای ارتباطات بین گره ای استفاده کنید
  • خطوط لوله را تا حد امکان کوتاه نگه دارید تا هرگونه حباب به حداقل برسد. تعداد میکروبچ ها باید طوری تنظیم شود که کارایی محاسباتی را با اندازه حباب متعادل کند و حداقل طول خط لوله باشد. در صورت نیاز، می توانید میکروبچ ها را در سطح توکن همانطور که در توضیح داده شده است، تشکیل دهید TeraPipe: Token Level Pipeline Parallelism برای آموزش مدل های زبان در مقیاس بزرگ

هنگام بهینه سازی هزینه، از نمونه های Spot مدیریت شده SageMaker برای آموزش استفاده کنید. این می تواند هزینه مدل های آموزشی را تا 90 درصد نسبت به نمونه های درخواستی بهینه کند. SageMaker وقفه های Spot را از طرف شما مدیریت می کند.

عوامل دیگری که باید در نظر گرفته شوند:

  • در داخل یک گره زمانی که یک اتصال سریع وجود دارد، تفاوت های ظریف بیشتری دارد. اگر ظرفیت شبکه درون گره‌ای کافی وجود داشته باشد، تغییر داده‌ها برای محاسبه بهینه‌تر ممکن است سودمند باشد.
  • اگر فعال‌سازی‌ها بسیار بزرگ‌تر از تانسورهای وزنی باشند، یک بهینه‌ساز خرد شده نیز ممکن است کمک کند. مراجعه فرمایید زرو برای جزئیات بیشتر.

جدول زیر برخی از سناریوهای رایج مقیاس‌بندی آموزشی و نحوه پیکربندی آنها را در AWS ارائه می‌کند.

سناریو چه زمانی اعمال می شود؟ راه حل
تغییر مقیاس از یک GPU به بسیاری از GPUها زمانی که حجم داده های آموزشی یا اندازه مدل خیلی زیاد باشد به یک نمونه چند GPU مانند p3.16xlarge، که دارای هشت پردازنده گرافیکی است، با تقسیم داده ها و پردازش در بین هشت پردازنده گرافیکی، و تولید یک سرعت تقریباً خطی در مدت زمانی که برای آموزش مدل شما نیاز است، تغییر دهید.
مقیاس بندی از یک نمونه به چند نمونه زمانی که نیازهای مقیاس بندی فراتر از تغییر اندازه نمونه است تعداد نمونه‌ها را با تابع تخمین‌گر SageMaker Python SDK با تنظیم instance_type خود روی p3.16xlarge و instance_count را بر روی 2 تغییر دهید. استفاده از را در نظر بگیرید SageMaker کتابخانه موازی داده را توزیع کرد.
انتخاب رویکرد موازی مدل برای آموزش هنگام مواجهه با خطاهای حافظه در حین تمرین به یک رویکرد موازی مدل با استفاده از SageMaker کتابخانه موازی مدل را توزیع کرد.
عملکرد شبکه برای ارتباطات بین گرهی برای آموزش توزیع شده با چندین نمونه (به عنوان مثال، ارتباط بین گره ها در خوشه هنگام انجام یک عملیات AllReduce) نمونه‌های شما باید در همان منطقه و همان منطقه دسترسی باشند. وقتی از SageMaker Python SDK استفاده می کنید، این برای شما انجام می شود. داده های آموزشی شما نیز باید در همان منطقه دسترسی باشد. استفاده از را در نظر بگیرید SageMaker کتابخانه موازی داده را توزیع کرد.
GPU، شبکه و فضای ذخیره سازی بهینه شده برای نیازهای آموزشی توزیع شده در مقیاس بزرگ نوع نمونه p4d.24xlarge برای ذخیره سازی محلی سریع و یک صفحه پشتی شبکه سریع با حداکثر 400 گیگابیت طراحی شده است و ما آن را به عنوان کارآمدترین گزینه برای آموزش توزیع شده به شدت توصیه می کنیم.

نتیجه

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

منابع

برای اطلاعات بیشتر لطفا به زیر مراجعه کنید:


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

پرم رنگا یک معمار Enterprise Solutions مستقر در آتلانتا، GA است. او بخشی از انجمن حوزه فنی یادگیری ماشین است و دوست دارد با مشتریان در سفر ML و AI کار کند. پرم به رباتیک علاقه زیادی دارد، یک محقق وسایل نقلیه خودمختار است و همچنین Beer Pours تحت کنترل الکسا را ​​در هیوستون و مکان‌های دیگر ساخت.

سارا جین هونگ یکی از بنیانگذاران و مدیر ارشد علمی در فضای پنهان است. پیشینه او در تقاطع تعامل انسان و رایانه و یادگیری ماشین قرار دارد. او قبلاً تحقیقات NLP را در Sonar (که توسط Marchex خریداری شده) رهبری می کرد، که به مشاغل در فضای مکالمه AI خدمات می دهد. او همچنین یک توسعه دهنده محترم AR/VR است که جوایز و کمک هزینه تحصیلی را از Oculus، Mozilla Mixed Reality و Microsoft Hololens دریافت کرده است.

داریل بارنهارت یکی از بنیانگذاران و مدیر ارشد فناوری در فضای پنهان است. او یک توسعه دهنده باتجربه با تجربه در شتاب GPU، گرافیک کامپیوتری، داده در مقیاس بزرگ و یادگیری ماشین است. علایق دیگر شامل ریاضیات، توسعه بازی و مطالعه اطلاعات است.

ایان تامپسون بنیانگذار و مدیر عامل شرکت فضای پنهان است. ایان یک مهندس و محقق است که از "ممکن مجاور" الهام گرفته است - فناوری هایی که قرار است تأثیر زیادی بر زندگی ما بگذارند. در حال حاضر روی ساده‌سازی و مقیاس‌بندی یادگیری بازنمایی چندوجهی برای کمک به ساخت هوش مصنوعی ایمن و خلاق متمرکز شده است. او قبلاً به ساخت شرکت‌هایی در زمینه گرافیک/واقعیت مجازی (AltspaceVR، خریداری شده توسط مایکروسافت) و آموزش/NLP (HSE) کمک کرده است.

منبع: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- ترانسفورماتورهای مقیاس/

تمبر زمان:

بیشتر از وبلاگ یادگیری ماشین AWS