در چند سال اخیر شاهد توسعه سریع در زمینه پردازش زبان طبیعی (NLP) بوده ایم. در حالی که سختافزار بهبود یافته است، مانند آخرین نسل شتابدهندههای NVIDIA و آمازون، متخصصان یادگیری ماشین پیشرفته (ML) هنوز به طور مرتب با مشکلاتی در مقیاسبندی مدلهای زبان بزرگ خود در چندین GPU مواجه میشوند.
در این پست وبلاگ، به طور خلاصه ظهور مدلهای NLP در مقیاس بزرگ و کوچک را، عمدتاً از طریق انتزاع ارائه شده توسط Hugging Face و با پشتوانه مدولار Amazon SageMaker، خلاصه میکنیم. به طور خاص، راهاندازی چهار ویژگی اضافی در کتابخانه موازی مدل SageMaker را برجسته میکنیم که 175 میلیارد پارامتر مدل NLP را برای پیشآموزش و تنظیم دقیق برای مشتریان باز میکند.
ما از این کتابخانه در پلتفرم آموزشی SageMaker استفاده کردیم و به 32 نمونه در ثانیه در 120 ml.p4d.24x بزرگ و 175 میلیارد پارامتر دست یافتیم. ما پیشبینی میکنیم که اگر این مقدار را تا 240 نمونه افزایش دهیم، آموزش مدل کامل 25 روز طول میکشد.
برای اطلاعات بیشتر در مورد موازی سازی مدل، مقاله را ببینید آمازون SageMaker Model Parallelism: چارچوبی عمومی و انعطاف پذیر برای آموزش مدل های بزرگ.
همچنین میتوانید نوتبوک GPT2 را که برای تولید این اعداد عملکرد استفاده کردهایم، روی ما ببینید مخزن GitHub.
برای کسب اطلاعات بیشتر در مورد نحوه استفاده از ویژگی های جدید در مدل SageMaker به موازات، مراجعه کنید ویژگی های توسعه یافته کتابخانه موازی مدل SageMaker برای PyTorchو با SageMaker Python SDK استفاده کنید.
NLP در Amazon SageMaker – صورت در آغوش گرفتن و موازی سازی مدل
اگر با Hugging Face و NLP تازه کار هستید، بزرگترین نکته ای که باید بدانید این است که برنامه های کاربردی با استفاده از پردازش زبان طبیعی (NLP) شروع به دستیابی به عملکرد سطح انسانی کرده اند. این تا حد زیادی توسط یک مکانیسم یادگیری به نام توجه، که باعث ایجاد یک مدل یادگیری عمیق به نام the ترانسفورماتور، که بسیار مقیاس پذیرتر از روش های متوالی یادگیری عمیق قبلی است. در حال حاضر معروف مدل BERT برای سرمایه گذاری روی ترانسفورماتور توسعه داده شد و چندین تاکتیک مفید NLP را در طول مسیر توسعه داد. ترانسفورماتورها و مجموعه ای از مدل ها، چه در داخل و چه در خارج از NLP، که همگی از BERT الهام گرفته شده اند. موتور اصلی پشت نتایج جستجوی گوگل شما هستند، در شما نتایج ترجمه گوگلو انبوهی از استارت آپ های جدید.
SageMaker و Hugging Face با هم همکاری کردند تا این کار را برای مشتریان آسانتر از قبل کنند. ما ظروف یادگیری عمیق Hugging Face (DLC) را برای شما راه اندازی کرده ایم تا بتوانید مدل های از پیش آموزش دیده را مستقیماً از Hugging Face آموزش دهید و میزبانی کنید. مخزن بیش از 26,000 مدل راه اندازی کرده ایم کامپایلر آموزشی SageMaker برای اینکه بتوانید زمان اجرای حلقه های آموزش Hugging Face خود را تا 50 درصد افزایش دهید. ما هم ادغام کردیم پرچمدار Hugging Face Transformers SDK با کتابخانه های آموزشی توزیع شده ما تا مقیاس بندی مدل های NLP خود را آسان تر از همیشه کنید.
برای اطلاعات بیشتر در مورد مدلهای ترانسفورماتور Hugging Face در Amazon SageMaker، رجوع کنید پشتیبانی از مدل های ترانسفورماتور Hugging Face.
ویژگی های جدید برای آموزش مدل NLP در مقیاس بزرگ با کتابخانه موازی مدل SageMaker
در AWS re:Invent 2020، SageMaker کتابخانه های توزیع شده ای را راه اندازی کرد که بهترین عملکرد را در فضای ابری برای آموزش مدل های بینایی کامپیوتری مانند ماسک-RCNN و مدل های NLP مانند T5-3B. این امر از طریق ارتباطات ابتدایی پیشرفتهای که 20 تا 40 درصد سریعتر از NCCL در AWS هستند، و تکنیکهای توزیع مدل که مدلهای زبان بسیار بزرگ را قادر میسازد تا بین دهها تا صدها تا هزاران GPU مقیاس شوند، امکانپذیر است.
کتابخانه موازی مدل SageMaker (SMP) همیشه به شما این امکان را می دهد که مدل NLP از پیش تعریف شده خود را در PyTorch، چه از طریق Hugging Face یا هر جای دیگر، ببرید و آن مدل را بر روی چندین GPU در خوشه خود تقسیم کنید. به روشی دیگر، SMP مدل شما را به قطعات کوچکتر تقسیم میکند تا خطاهای کمبود حافظه (OOM) را تجربه نکنید. ما خوشحالیم که تکنیکهای ذخیرهسازی حافظه اضافی را که برای مدلهای مقیاس بزرگ حیاتی هستند، اضافه میکنیم:
- موازی تانسور
- اشتراک گذاری وضعیت بهینه ساز
- ایست بازرسی فعال سازی
- بارگذاری فعال سازی
شما می توانید این چهار ویژگی را با هم ترکیب کنید تا از حافظه به طور موثرتری استفاده کنید و نسل بعدی مدل های NLP در مقیاس شدید را آموزش دهید.
آموزش توزیع شده و موازی تانسور
برای درک موازی تانسور، دانستن این نکته مفید است که انواع مختلفی از آموزش توزیع شده یا موازی سازی وجود دارد.. احتمالاً قبلاً با رایج ترین نوع آن آشنا هستید، موازی سازی داده ها هسته موازی داده ها به این صورت عمل می کند: شما یک گره اضافی به خوشه خود اضافه می کنید، مانند رفتن از یک به دو نمونه ml.EC2 در برآوردگر SageMaker. سپس، از یک چارچوب موازی داده مانند Horovod، PyTorch Distributed Data Parallel یا SageMaker Distributed استفاده می کنید. این کپیهایی از مدل شما را ایجاد میکند، یکی در هر شتابدهنده، و به اشتراک گذاری دادهها در هر گره، همراه با جمعآوری تمام نتایج در طول مرحله انتشار برگشتی شبکه عصبی شما، رسیدگی میکند. نزول گرادیان توزیع شده را در نظر بگیرید. موازی سازی داده ها نیز در سرورها رایج است. شما در حال به اشتراک گذاری داده ها در تمام GPU ها و گاهی اوقات CPU ها در همه گره های خود هستید. نمودار زیر موازی بودن داده ها را نشان می دهد.
موازی سازی مدل کمی متفاوت است به جای کپی کردن از همان مدل، مدل شما را به قطعات تقسیم می کنیم. سپس ما اجرای آن را مدیریت میکنیم، بنابراین دادههای شما هنوز دقیقاً به روش ریاضی از طریق شبکه عصبی شما جریان دارد، اما قطعات مختلف مدل شما روی پردازندههای گرافیکی مختلف قرار دارند. اگر از ml.p3.8xlarge استفاده می کنید، چهار NVIDIA V100 دارید، بنابراین احتمالاً می خواهید مدل خود را به 4 قطعه تقسیم کنید، یک قطعه برای هر پردازنده گرافیکی. اگر تا دو ml.p4d.24xlarge بپرید، این تعداد در کلستر شما 16 A100 است، بنابراین ممکن است مدل خود را به 16 قطعه تقسیم کنید. این نیز گاهی اوقات نامیده می شود موازی خط لوله این به این دلیل است که مجموعه لایههای شبکه در بین GPUها تقسیم شدهاند و به صورت خط لوله اجرا میشوند تا استفاده از GPU را به حداکثر برسانند. نمودار زیر موازی بودن مدل را نشان می دهد.
برای ایجاد موازی سازی مدل در مقیاس، به نوع سوم توزیع نیاز داریم: موازی تانسور. موازی تانسور مفاهیم یکسانی را در یک گام جلوتر به کار می برد - ما بزرگترین لایه های شبکه عصبی شما را جدا می کنیم و قسمت هایی از خود لایه ها را روی دستگاه های مختلف قرار می دهیم. زمانی که شما با 175 میلیارد پارامتر یا بیشتر کار میکنید و سعی میکنید حتی چند رکورد را به همراه بخشهایی از مدل خود در حافظه RAM قرار دهید تا آن ترانسفورماتور را آموزش دهید، این موضوع مهم است. نمودار زیر موازی بودن تانسور را نشان می دهد.
برای فعال کردن موازی تانسور، آن را در گزینه های smp تنظیم کنید شما به برآوردگر خود منتقل می کنید.
در کد قبل، pipeline_parallel_degree
بر اساس موازی خط لوله که در بالا مورد بحث قرار گرفتیم، به چند بخش مدل شما باید تقسیم شود. کلمه دیگر برای این است نمرات.
برای فعال کردن موازی تانسور، تنظیم کنید tensor_parallel_degree
به سطح مورد نظر شما مطمئن شوید که عددی مساوی یا کوچکتر از تعداد GPU در هر نمونه انتخاب میکنید، بنابراین برای دستگاههای ml.p8d.4xlarge بیشتر از 24 نباشد. برای تغییرات بیشتر اسکریپت، به اجرای یک کار آموزشی موازی مدل توزیع شده SageMaker با موازی تانسور.
پارامتر ddp به داده های موازی توزیع شده اشاره دارد. اگر از موازی سازی داده یا موازی تانسور استفاده می کنید، معمولاً این را فعال می کنید، زیرا کتابخانه موازی مدل برای این ویژگی ها به DDP متکی است.
اشتراک گذاری وضعیت بهینه ساز، بارگذاری فعال سازی و نقاط بازرسی
اگر یک مدل بسیار بزرگ دارید، به یک حالت بهینه ساز بسیار بزرگ نیز نیاز دارید. آماده سازی بهینه ساز خود برای SMP ساده است: به سادگی آن را از دیسک موجود در اسکریپت خود بردارید و در آن بارگذاری کنید. smp.DistributedOptimizer()
هدف - شی.
مطمئن شوید که این را در برآوردگر با تنظیم فعال کرده اید shard_optimizer_state
به درستی در smp_options
برای پیکربندی SMP از:
مشابه تانسور و موازی خط لوله، SMP مدل شما و اندازه جهانی شما (تعداد کل GPUها در تمام گره های آموزشی شما) را برای یافتن بهترین استراتژی های قرار دادن نمایه می کند.
در یادگیری عمیق به خروجی های لایه میانی فعال سازی نیز گفته می شود و این خروجی ها باید در حین عبور به جلو ذخیره شوند. این به این دلیل است که آنها باید برای محاسبه گرادیان در گذر به عقب استفاده شوند. در یک مدل بزرگ، ذخیره همه این فعال سازی ها به طور همزمان در حافظه می تواند گلوگاه های حافظه قابل توجهی ایجاد کند. برای رفع این تنگنا می توانید استفاده کنید ایست بازرسی فعال سازی، سومین ویژگی جدید در کتابخانه موازی مدل SageMaker. ایست بازرسی فعال سازی یا ایست بازرسی گرادیان، تکنیکی برای کاهش استفاده از حافظه با پاک کردن فعالسازی لایههای خاص و محاسبه مجدد آنها در طی یک پاس به عقب است. این به طور موثر زمان محاسبات اضافی را با کاهش استفاده از حافظه مبادله می کند.
در نهایت، بارگذاری فعال سازی به طور مستقیم از چک پوینت فعال سازی استفاده می کند. این یک استراتژی است که در طول آموزش مدل، تنها چند فعال سازی تانسور روی رم GPU نگه دارید. به طور خاص، ما فعالسازیهای چک پوینتشده را در حین عبور به جلو به حافظه CPU منتقل میکنیم و آنها را برای عبور از یک میکرو دسته خاص به GPU برمیگردانیم.
میکرو دسته ها و استراتژی های قرار دادن
موضوعات دیگری که گاهی باعث سردرگمی مشتریان می شود، میکرو بچ ها و استراتژی های مکان یابی است. هر دوی این ها فراپارامترهایی هستند که می توانید به کتابخانه موازی مدل SageMaker ارائه دهید. به طور خاص، ریز دستهها هنگام اجرای مدلهایی که بر موازیسازی خطوط لوله متکی هستند، مانند آنهایی که حداقل 30 میلیارد پارامتر اندازه یا بیشتر دارند، مرتبط هستند.
میکرو بچ ها زیر مجموعه ای از مینی بچ ها هستند. هنگامی که مدل شما در حلقه آموزشی خود قرار دارد، شما تعداد معینی رکورد را برای برداشتن و عبور به جلو و عقب در لایه ها تعریف می کنید - این یک نامیده می شود. مینی بچ، یا گاهی اوقات فقط یک دسته. عبور کامل از مجموعه داده شما an نامیده می شود دوره. کتابخانه موازی مدل SageMaker برای اجرای گذرهای رو به جلو و عقب با موازی خط لوله، دسته ها را به زیرمجموعه های کوچکتری به نام میکرو دسته تقسیم می کند که برای به حداکثر رساندن استفاده از GPU یکی یکی اجرا می شوند. مجموعه بسیار کوچکتری از نمونههای حاصل در هر GPU، میکرو دسته نامیده میشود. در مثال GPT-2 ما، ما یک پیش فرض 1 میکروبچ را مستقیماً به اسکریپت آموزشی اضافه کردیم.
همانطور که پیکربندی آموزشی خود را افزایش می دهید، اکیداً به شما توصیه می شود که اندازه دسته و اندازه میکرو دسته خود را مطابق با آن تغییر دهید. این تنها راه برای اطمینان از عملکرد خوب است: هنگام تکیه بر موازی خطوط لوله، باید اندازه دسته و اندازه های میکروبچ را تابعی از اندازه جهانی خود در نظر بگیرید.
استراتژیهای مکانیابی به این صورت است که چگونه به SageMaker به صورت فیزیکی بگویید که پارتیشنهای مدل خود را کجا قرار دهد. اگر از هر دو مدل موازی و داده موازی استفاده می کنید، تنظیم کنید placement_strategy
به “cluster”
ماکت های مدل را در شناسه های دستگاه (GPU) قرار می دهد که از نظر فیزیکی به یکدیگر نزدیک هستند. با این حال، اگر واقعاً میخواهید در مورد استراتژی موازیسازی خود دستور بیشتری داشته باشید، میتوانید آن را به یک رشته واحد با ترکیبهای مختلف از سه حرف تقسیم کنید: D برای موازیسازی دادهها، P
نشان دهنده موازی بودن خط لوله، و T
برای موازی تانسور ما به طور کلی توصیه می کنیم قرار دادن پیش فرض را حفظ کنید "cluster"
، زیرا این برای آموزش مدل در مقیاس بزرگ مناسب است. قرارگیری «خوشه» با «DPT
".
برای اطلاعات بیشتر در مورد استراتژی های قرار دادن، رجوع کنید به استراتژی قرار دادن با موازی تانسور.
مثال استفاده
بیایید تصور کنیم که یک ml.p3.16xlarge در کار آموزشی خود دارید. که به شما می دهد 8 NVIDIA V100 در هر نود. به یاد داشته باشید، هر بار که یک نمونه اضافی اضافه می کنید، سربار پهنای باند اضافی را تجربه می کنید، بنابراین همیشه بهتر است GP'U های بیشتری در یک گره واحد داشته باشید. در این مورد، بهتر است یک ml.p3.16xlarge داشته باشید تا مثلاً دو ml.p3.8xlarge. حتی اگر تعداد GPU ها یکسان است، پهنای باند اضافی سربار گره اضافی، توان عملیاتی شما را کاهش می دهد.
نمودار زیر موازی سازی مدل چهار طرفه، همراه با موازی سازی داده های دو طرفه را نشان می دهد. این بدان معناست که شما در واقع دو کپی از مدل خود دارید (به موازات داده ها فکر کنید)، که هر کدام از آنها در چهار GPU (مدل موازی) تقسیم شده اند.
اگر هر یک از این پارتیشنهای مدل خیلی بزرگ هستند که نمیتوانند روی یک GPU قرار بگیرند، میتوانید یک نوع توزیع اضافی – موازی تانسور – اضافه کنید تا آن را تفت دهید و از هر دو دستگاه استفاده کنید.
نتیجه
در این پست وبلاگ ما در مورد کتابخانه های آموزشی توزیع شده SageMaker، به ویژه تمرکز بر موازی سازی مدل بحث کردیم. ما معیارهای عملکرد آخرین آزمایش خود را به اشتراک گذاشتیم و به 32 نمونه در ثانیه در 120 ml.p4d.24x بزرگ و پارامترهای 175B در Amazon SageMaker دست یافتیم. ما پیش بینی می کنیم که اگر این مقدار را به 240 نمونه p4 افزایش دهیم، می توانیم یک مدل پارامتر 175B را در 25 روز آموزش دهیم.
ما همچنین جدیدترین ویژگیهای فعال کردن آموزش در مقیاس بزرگ را مورد بحث قرار دادیم، یعنی موازیسازی تانسور، اشتراکگذاری حالت بهینهساز، نقطه بازرسی فعالسازی، و بارگذاری فعالسازی. ما نکات و ترفندهایی را برای فعال کردن این کار از طریق آموزش در Amazon SageMaker به اشتراک گذاشتیم.
خودتان آن را امتحان کنید با استفاده از همان نوتبوکی که شمارههای ما را تولید کرد، که در اینجا در GitHub موجود است. همچنین میتوانید از طریق آن، پردازندههای گرافیکی بیشتری را برای حساب AWS خود درخواست کنید درخواست تأیید محدودیت سرویس را درست در اینجا.
درباره نویسنده
امیلی وبر درست پس از راه اندازی SageMaker به AWS ملحق شد و از آن زمان تلاش کرده است تا در مورد آن به جهان بگوید! غیر از ایجاد تجربیات جدید ML برای مشتریان، امیلی از مراقبه و مطالعه بودیسم تبتی لذت می برد.
آدیتیا بیندال یک مدیر محصول ارشد برای یادگیری عمیق AWS است. او روی محصولاتی کار می کند که آموزش مدل های یادگیری عمیق را در AWS برای مشتریان آسان تر می کند. در اوقات فراغت از گذراندن وقت با دخترش، بازی تنیس، خواندن داستان های تاریخی و سفر لذت می برد.
لوئیس کوینتلا مدیر توسعه دهنده نرم افزار برای کتابخانه موازی مدل AWS SageMaker است. در اوقات فراغت، او را می توان در حال سوار شدن به هارلی خود در منطقه خلیج SF پیدا کرد.
- Coinsmart. بهترین صرافی بیت کوین و کریپتو اروپا.
- پلاتوبلاک چین. Web3 Metaverse Intelligence. دانش تقویت شده دسترسی رایگان.
- CryptoHawk. رادار آلت کوین امتحان رایگان.
- منبع: https://aws.amazon.com/blogs/machine-learning/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- درباره ما
- شتاب دهنده
- حساب
- دست
- در میان
- اضافی
- نشانی
- پیشرفته
- معرفی
- قبلا
- آمازون
- دیگر
- برنامه های کاربردی
- محدوده
- در دسترس
- AWS
- سرخ مایل به قرمز
- بهترین
- بزرگترین
- بیلیون
- بلاگ
- بنا
- علت
- تغییر دادن
- ابر
- رمز
- ترکیب
- مشترک
- ارتباط
- پیکر بندی
- گیجی
- ظروف
- هسته
- میتوانست
- مشتریان
- داده ها
- توسعه
- توسعه دهنده
- پروژه
- دستگاه
- دستگاه ها
- مختلف
- توزیع شده
- توزیع
- پایین
- رانده
- را قادر می سازد
- به خصوص
- مثال
- تجربه
- تجارب
- مفرط
- چهره
- سریعتر
- ویژگی
- امکانات
- داستان
- مناسب
- پیروی
- به جلو
- یافت
- چارچوب
- کامل
- تابع
- سوالات عمومی
- تولید می کنند
- GitHub
- رفتن
- خوب
- گوگل
- جستجوی گوگل
- GPU
- سخت افزار
- مفید
- نماد
- تاریخی
- چگونه
- چگونه
- HTTPS
- صدها نفر
- افزایش
- اطلاعات
- الهام بخش
- یکپارچه
- مسائل
- IT
- کار
- پیوست
- پرش
- نگهداری
- زبان
- بزرگ
- آخرین
- راه اندازی
- یاد گرفتن
- یادگیری
- سطح
- کتابخانه
- بار
- دستگاه
- فراگیری ماشین
- ماشین آلات
- ساخت
- مدیر
- حافظه
- ML
- مدل
- مدل
- پیمانهای
- اکثر
- حرکت
- از جمله
- طبیعی
- شبکه
- ویژگی های جدید
- گره
- دفتر یادداشت
- تعداد
- دیگر
- مقاله
- مشارکت کرد
- کارایی
- قطعه
- سکو
- محبوب
- ممکن
- اصلی
- محصول
- محصولات
- پروفایل
- ارائه
- رم
- RE
- مطالعه
- توصیه
- سوابق
- كاهش دادن
- نتایج
- دویدن
- در حال اجرا
- سعید
- مقیاس پذیر
- مقیاس
- مقیاس گذاری
- sdk
- جستجو
- سرویس
- تنظیم
- محیط
- sharding
- به اشتراک گذاشته شده
- قابل توجه
- اندازه
- So
- نرم افزار
- به طور خاص
- سرعت
- هزینه
- انشعاب
- دولت
- استراتژی ها
- استراتژی
- عرضه
- تاکتیک
- تکنیک
- آزمون
- جهان
- هزاران نفر
- از طریق
- زمان
- نکات
- نکات و ترفندها
- با هم
- تاپیک
- معاملات
- آموزش
- فهمیدن
- استفاده کنید
- استفاده کنید
- دید
- در داخل
- کارگر
- با این نسخهها کار
- جهان
- سال