مدلهای زبان، روشهای آماری هستند که با استفاده از متن طبیعی، توالی نشانهها را در توالی پیشبینی میکنند. مدلهای زبان بزرگ (LLM) مدلهای زبانی مبتنی بر شبکه عصبی با صدها میلیون (برت) به بیش از یک تریلیون پارامتر (MiCS) و اندازه آن آموزش تک GPU را غیرعملی می کند. توانایی های مولد LLM ها آنها را برای ترکیب متن، خلاصه سازی، ترجمه ماشینی و موارد دیگر محبوب می کند.
اندازه یک LLM و دادههای آموزشی آن یک شمشیر دولبه است: کیفیت مدلسازی را به ارمغان میآورد، اما چالشهای زیرساختی را به همراه دارد. خود مدل اغلب برای جا دادن در حافظه یک دستگاه GPU واحد یا در چندین دستگاه یک نمونه چند GPU بسیار بزرگ است. این عوامل مستلزم آموزش یک LLM بر روی خوشههای بزرگی از نمونههای یادگیری ماشینی شتابدار (ML) هستند. در چند سال گذشته، مشتریان زیادی از AWS Cloud برای آموزش LLM استفاده کردهاند.
در این پست، نکات و بهترین روشها برای آموزش موفق LLM را بررسی میکنیم آموزش آمازون SageMaker. SageMaker Training یک سرویس محاسباتی دسته ای مدیریت شده است که زمان و هزینه آموزش و تنظیم مدل ها را در مقیاس بدون نیاز به مدیریت زیرساخت کاهش می دهد. در یک فرمان پرتاب، آمازون SageMaker یک خوشه محاسباتی کاملاً کاربردی و زودگذر راهاندازی میکند که وظیفه انتخابی شما را اجرا میکند و با ویژگیهای پیشرفته ML مانند metastore، I/O مدیریتشده و توزیع. این پست تمام مراحل یک حجم کاری آموزشی LLM را پوشش میدهد و ویژگیهای زیرساخت مرتبط و بهترین شیوهها را توضیح میدهد. برخی از بهترین روشها در این پست به طور خاص به نمونههای ml.p4d.24xlarge اشاره میکنند، اما بیشتر آنها برای هر نوع نمونهای قابل اجرا هستند. این بهترین شیوه ها به شما امکان می دهد LLM ها را در SageMaker در مقیاس ده ها تا صدها میلیون پارامتر آموزش دهید.
در مورد دامنه این پست به موارد زیر توجه کنید:
- ما طراحی علمی شبکه های عصبی و بهینه سازی های مرتبط را پوشش نمی دهیم. آمازون.علم دارای انتشارات علمی متعدد، از جمله و نه محدود به LLMs.
- اگرچه این پست بر روی LLM تمرکز دارد، اما بیشتر بهترین روشهای آن برای هر نوع آموزش مدل بزرگ، از جمله بینایی کامپیوتر و مدلهای چند وجهی، مانند Stable Diffusion، مرتبط است.
بهترین شیوه
ما در این پست بهترین شیوه های زیر را مورد بحث قرار می دهیم:
- محاسبه – آموزش SageMaker یک API عالی برای راه اندازی کارهای آماده سازی مجموعه داده های CPU و کارهای GPU در مقیاس هزاران است.
- ذخیره سازی - ما می بینیم که بارگیری داده ها و چک پوینت بسته به مهارت ها و ترجیحات به دو صورت انجام می شود: با یک آمازون FSx Luster فایل سیستم یا سرویس ذخیره سازی ساده آمازون فقط (Amazon S3).
- موازی بودن - انتخاب شما از کتابخانه آموزشی توزیع شده برای استفاده مناسب از GPU ها بسیار مهم است. توصیه می کنیم از یک کتابخانه بهینه سازی شده برای ابر، مانند موازی سازی داده های خرد شده SageMaker استفاده کنید، اما کتابخانه های خود مدیریت و منبع باز نیز می توانند کار کنند.
- شبکه – مطمئن شوید که EFA و NVIDIA GPUDirectRDMA برای ارتباط سریع بین ماشینی فعال هستند.
- انعطاف پذیری - در مقیاس، خرابی های سخت افزاری ممکن است رخ دهد. توصیه می کنیم به طور مرتب ایست بازرسی داشته باشید. هر چند ساعت یکبار معمول است.
انتخاب منطقه
نوع نمونه و ظرفیت مورد نظر یک عامل تعیین کننده برای انتخاب منطقه است. برای مناطق پشتیبانی شده توسط SageMaker و ابر محاسبه الاستیک آمازون انواع نمونه (Amazon EC2) که در هر منطقه موجود است، ببینید قیمت گذاری آمازون SageMaker. در این پست، نوع نمونه آموزشی را یک ml.p4d.24xlarge با مدیریت SageMaker فرض میکنیم.
توصیه می کنیم با تیم حساب AWS خود کار کنید یا تماس بگیرید فروش AWS برای تعیین منطقه مناسب برای حجم کاری LLM خود.
آماده سازی داده ها
توسعه دهندگان LLM مدل های خود را بر روی مجموعه داده های بزرگ از متن طبیعی آموزش می دهند. نمونه های محبوب این گونه منابع داده عبارتند از خزش مشترک و توده. متن طبیعی ممکن است دارای سوگیری ها، نادرستی ها، اشتباهات گرامری و تغییرات نحوی باشد. کیفیت نهایی یک LLM به طور قابل توجهی به انتخاب و بررسی داده های آموزشی بستگی دارد. آماده سازی داده های آموزشی LLM یک حوزه فعال تحقیق و نوآوری در صنعت LLM است. آمادهسازی مجموعه داده پردازش زبان طبیعی (NLP) سرشار از فرصتهای موازی مشترک است. به عبارت دیگر، مراحلی وجود دارد که میتوان آنها را برای واحدهای آثار - فایلهای منبع، پاراگرافها، جملات، کلمات - بدون نیاز به همگامسازی بین کارگران اعمال کرد.
APIهای شغلی SageMaker، یعنی SageMaker Training و SageMaker Processing، برای این نوع وظایف عالی هستند. آنها توسعه دهندگان را قادر می سازند تا یک ظرف Docker دلخواه را روی ناوگانی از چندین ماشین اجرا کنند. در مورد SageMaker Training API، ناوگان محاسباتی می تواند باشد ناهمگون. چارچوب های محاسباتی توزیع شده متعددی از جمله در SageMaker استفاده شده است داسک, اشعه، و همچنین PySpark، که اختصاصی دارند ظرف با مدیریت AWS و SDK در SageMaker Processing.
وقتی کاری را با چندین ماشین راه اندازی می کنید، SageMaker Training and Processing کد شما را یک بار در هر دستگاه اجرا می کند. برای نوشتن یک برنامه کاربردی توزیع شده نیازی به استفاده از یک چارچوب محاسباتی توزیع شده خاص ندارید: می توانید کد مورد نظر خود را بنویسید که یک بار در هر ماشین اجرا می شود تا به موازی بودن اشتراک-هیچ چیز پی ببرید. همچنین می توانید منطق ارتباط بین گره ای را که انتخاب می کنید بنویسید یا نصب کنید.
بارگیری داده
راههای متعددی برای ذخیره دادههای آموزشی و انتقال آنها از ذخیرهسازی به گرههای محاسباتی شتابدار وجود دارد. در این بخش، گزینه ها و بهترین روش ها برای بارگذاری داده ها را مورد بحث قرار می دهیم.
گزینه های ذخیره سازی و بارگیری SageMaker
اندازه یک مجموعه داده LLM معمولی در صدها میلیون توکن متن است که نشان دهنده چند صد گیگابایت است. خوشههای مدیریتشده توسط SageMaker از نمونههای ml.p4d.24xlarge چندین گزینه برای ذخیرهسازی و بارگذاری مجموعه دادهها پیشنهاد میکنند:
- SSD NVMe روی گره – نمونه های ml.P4d.24xlarge مجهز به 8 ترابایت NVMe هستند که در زیر
/opt/ml/input/data/<channel>
اگر استفاده می کنید حالت فایل SageMaker، و در/tmp
. اگر به دنبال سادگی و عملکرد خواندن محلی هستید، می توانید داده های خود را در NVMe SSD کپی کنید. کپی را می توان با حالت SageMaker File یا با کد خودتان انجام داد، برای مثال با استفاده از چند پردازش Boto3 or S5cmd. - FSx برای Luster – SSD های NVMe On-node از نظر اندازه محدود هستند و در هر کار یا ایجاد خوشه گرم نیاز به جذب از Amazon S3 دارند. اگر به دنبال مقیاس گذاری به مجموعه داده های بزرگتر و در عین حال حفظ دسترسی تصادفی کم تاخیر هستید، می توانید از FSx برای Lustre استفاده کنید. Amazon FSx یک سیستم فایل موازی منبع باز است که در محاسبات با کارایی بالا (HPC) محبوب است. FSx برای استفاده های Luster ذخیره سازی فایل های توزیع شده (برداشتن) و به طور فیزیکی ابرداده فایل را از محتوای فایل جدا می کند تا به خواندن/نوشتن با کارایی بالا دست یابد.
- حالت فایل سریع SageMaker – حالت فایل سریع (FFM) یک ویژگی فقط SageMaker است که اشیاء S3 راه دور را در نمونه های محاسباتی مدیریت شده توسط SageMaker تحت یک رابط سازگار با POSIX ارائه می دهد و آنها را فقط پس از خواندن با استفاده از FUSE پخش می کند. FFM نتایج را در تماس های S3 می خواند که فایل های راه دور را بلوک به بلوک پخش می کند. به عنوان بهترین روش برای جلوگیری از خطاهای مربوط به ترافیک آمازون S3، توسعه دهندگان FFM باید هدفشان این باشد که تعداد تماس های S3 را معقول نگه دارند، به عنوان مثال با خواندن فایل ها به صورت متوالی و با مقدار موازی کنترل شده.
- بارگیری داده های خود مدیریتی - البته، شما همچنین ممکن است تصمیم بگیرید که منطق بارگیری دادههای کاملاً سفارشی خود را با استفاده از کد اختصاصی یا منبع باز پیادهسازی کنید. برخی از دلایل استفاده از بارگیری دادههای خود مدیریتی، تسهیل انتقال با استفاده مجدد از کدهای توسعهیافته، پیادهسازی منطق مدیریت خطای سفارشی، یا داشتن کنترل بیشتر بر عملکرد و اشتراکگذاری اساسی است. نمونههایی از کتابخانههایی که ممکن است برای بارگیری دادههای خود مدیریتی استفاده کنید عبارتند از torchdata.datapipes (قبلا پلاگین AWS PyTorch S3) و مجموعه داده های وب. AWS Python SDK Boto3 همچنین ممکن است با مجموعه داده مشعل کلاس هایی برای ایجاد کد بارگیری داده های سفارشی. کلاسهای بارگذاری داده سفارشی همچنین استفاده خلاقانه از کلاسترهای ناهمگن SageMaker Training را امکانپذیر میسازد تا تعادل CPU و GPU را با حجم کاری مشخص به خوبی تطبیق دهد.
برای کسب اطلاعات بیشتر در مورد آن گزینه ها و نحوه انتخاب آنها، مراجعه کنید بهترین منبع داده را برای شغل آموزشی Amazon SageMaker خود انتخاب کنید.
بهترین روش ها برای تعامل در مقیاس بزرگ با آمازون S3
آمازون S3 قادر به مدیریت بارهای کاری LLM، هم برای خواندن داده ها و هم برای چک پوینت است. از a پشتیبانی می کند نرخ درخواست از 3,500 درخواست PUT/COPY/POST/DELETE یا 5,500 درخواست GET/HEAD در هر ثانیه در هر پیشوند در یک سطل. با این حال، این نرخ لزوما به طور پیش فرض در دسترس نیست. در عوض، با افزایش نرخ درخواست برای یک پیشوند، آمازون S3 به طور خودکار مقیاس میشود تا نرخ افزایشیافته را مدیریت کند. برای اطلاعات بیشتر مراجعه کنید چرا وقتی درخواست ها در نرخ درخواست پشتیبانی شده در هر پیشوند هستند، خطاهای 503 Slow Down را از آمازون S3 دریافت می کنم؟.
اگر انتظار تعامل با فرکانس بالا آمازون S3 را دارید، بهترین روشهای زیر را توصیه میکنیم:
- سعی کنید از چند سطل S3 بخوانید و بنویسید و پیشوندها. به عنوان مثال، می توانید داده های آموزشی و نقاط چک را در پیشوندهای مختلف پارتیشن بندی کنید.
- معیارهای آمازون S3 را بررسی کنید CloudWatch آمازون برای پیگیری نرخ درخواست
- سعی کنید مقدار PUT/GET همزمان را به حداقل برسانید:
- همزمان با استفاده از آمازون S3 فرآیندهای کمتری داشته باشید. به عنوان مثال، اگر هشت فرآیند در هر گره باید به آمازون S3 چک شود، میتوانید با چکپوینتسازی سلسله مراتبی، ترافیک PUT را تا 8 برابر کاهش دهید: ابتدا درون گره، سپس از گره به آمازون S3.
- به جای استفاده از S3 GET برای هر رکورد آموزشی، چندین رکورد آموزشی را از یک فایل یا S3 GET بخوانید.
- اگر از Amazon S3 از طریق SageMaker FFM استفاده می کنید، SageMaker FFM تماس های S3 را برای واکشی فایل ها تکه تکه انجام می دهد. برای محدود کردن ترافیک آمازون S3 تولید شده توسط FFM، ما شما را تشویق میکنیم که فایلها را بهطور متوالی بخوانید و تعداد فایلهایی که به صورت موازی باز میشوند را محدود کنید.
اگر شما یک طرح پشتیبانی توسعه دهنده، تجاری یا سازمانی، می توانید یک مورد پشتیبانی فنی در مورد خطاهای Slow Down S3 503 باز کنید. اما ابتدا مطمئن شوید که بهترین روش ها را دنبال کرده اید، و شناسه درخواست را دریافت کنید برای درخواست های ناموفق
موازی سازی آموزش
LLM ها معمولاً ده ها تا صدها میلیارد پارامتر دارند که باعث می شود آن ها بیش از حد بزرگ باشند که در یک کارت گرافیک انویدیا قرار نگیرند. پزشکان LLM چندین کتابخانه منبع باز ایجاد کرده اند که محاسبات توزیع شده آموزش LLM را تسهیل می کند، از جمله FSDP, در اعماق و Megatron در. میتوانید آن کتابخانهها را در SageMaker Training اجرا کنید، اما میتوانید از کتابخانههای آموزشی توزیعشده SageMaker نیز استفاده کنید که برای AWS Cloud بهینهسازی شدهاند و تجربه توسعهدهنده سادهتری را ارائه میدهند. توسعه دهندگان برای آموزش توزیع شده LLM خود در SageMaker دو انتخاب دارند: کتابخانه های توزیع شده یا خود مدیریتی.
SageMaker کتابخانه ها را توزیع کرد
SageMaker Training برای ارائه بهبود عملکرد آموزشی توزیع شده و قابلیت استفاده، چندین برنامه افزودنی اختصاصی را برای مقیاسبندی کدهای آموزشی TensorFlow و PyTorch پیشنهاد میکند. آموزش LLM اغلب به روش موازی سه بعدی انجام می شود:
- موازی سازی داده ها برای افزایش سرعت پردازش، مینی دسته های آموزشی را به چندین نسخه مشابه از مدل تقسیم می کند و تغذیه می کند.
- موازی خط لوله لایههای مختلفی از مدل را به پردازندههای گرافیکی یا حتی نمونههای مختلف نسبت میدهد تا اندازه مدل را فراتر از یک واحد پردازش گرافیکی و یک سرور واحد تغییر دهد.
- موازی تانسور یک لایه واحد را به چندین GPU، معمولاً در یک سرور، تقسیم میکند تا لایههای جداگانه را به اندازههایی بیش از یک GPU واحد مقیاس کند.
در مثال زیر، یک مدل 6 لایه روی خوشه ای از سرورهای k*3 با پردازنده گرافیکی 8*k*3 (هر سرور 8 GPU) آموزش داده شده است. درجه موازی داده ها k، موازی خط لوله 6 و موازی تانسور 4 است. هر GPU در خوشه شامل یک چهارم یک لایه مدل است و یک مدل کامل بر روی سه سرور (در مجموع 24 GPU) تقسیم شده است.
موارد زیر به طور خاص برای LLM مرتبط هستند:
- SageMaker مدل را موازی توزیع کرد - این کتابخانه از پارتیشن بندی نمودار برای تولید پارتیشن بندی مدل هوشمند بهینه شده برای سرعت یا حافظه استفاده می کند. موازی مدل توزیعشده SageMaker جدیدترین و بهترین بهینهسازی آموزشی مدل بزرگ را به نمایش میگذارد، از جمله موازیسازی دادهها، موازیسازی خطوط لوله، موازیسازی تانسور، تقسیمبندی حالت بهینهساز، نقطه بازرسی فعالسازی، و بارگذاری. با کتابخانه موازی مدل توزیع شده SageMaker، ما یک آموزش مدل پارامتری 175 میلیاردی را در 920 پردازنده گرافیکی NVIDIA A100 مستند کردیم. برای اطلاعات بیشتر مراجعه کنید آموزش بیش از 175 میلیارد مدل NLP با پارامترهای اضافه شده به موازات مدل و صورت در آغوش گرفتن در Amazon SageMaker.
- SageMaker داده ها را به صورت موازی تقسیم کرد - که در MiCS: مقیاس گذاری نزدیک به خطی برای آموزش مدل غول پیکر در ابر عمومی، ژانگ و همکاران یک استراتژی موازی مدل کم ارتباط را معرفی کنید که مدلها را فقط روی یک گروه موازی داده، به جای کل خوشه، پارتیشن بندی میکند. با MiCS، دانشمندان AWS توانستند به 176 ترافلاپس در هر GPU (56.4 درصد از اوج نظری) برای آموزش یک مدل 210 لایه با پارامتر 1.06 تریلیون بر روی نمونه های EC2 P4de دست یابند. MiCS اکنون برای مشتریان SageMaker Training در دسترس است SageMaker داده ها را به صورت موازی تقسیم کرد.
کتابخانه های آموزشی توزیع شده SageMaker عملکرد بالا و تجربه توسعه دهنده ساده تری را ارائه می دهند. به طور خاص، توسعهدهندگان نیازی به نوشتن و نگهداری یک راهانداز فرآیند موازی سفارشی یا استفاده از ابزار راهاندازی خاص چارچوب ندارند، زیرا راهانداز موازی در SDK راهاندازی کار تعبیه شده است.
خود مدیریتی
با آموزش SageMaker، شما این آزادی را دارید که از چارچوب و پارادایم علمی انتخابی خود استفاده کنید. به طور خاص، اگر می خواهید خودتان آموزش های توزیع شده را مدیریت کنید، دو گزینه برای نوشتن کد سفارشی خود دارید:
- استفاده از کانتینر یادگیری عمیق AWS (DLC) - AWS توسعه و نگهداری می کند DLC های، ارائه محیط های مبتنی بر Docker بهینه شده با AWS برای برترین چارچوب های ML منبع باز. SageMaker Training دارای یکپارچگی منحصر به فرد است که به شما امکان می دهد DLC های AWS را با نقطه ورودی خارجی و تعریف شده توسط کاربر بکشید و اجرا کنید. مخصوصاً برای آموزش LLM، DLC های AWS برای TensorFlow، PyTorch، Hugging Face و MXNet به ویژه مرتبط هستند. استفاده از یک فریمورک DLC به شما این امکان را می دهد که از موازی سازی بومی فریمورک، مانند PyTorch Distributed، بدون نیاز به توسعه و مدیریت تصاویر Docker خود استفاده کنید. علاوه بر این، DLC های ما دارای یک ادغام MPI، که به شما امکان می دهد کدهای موازی را به راحتی اجرا کنید.
- یک تصویر سفارشی Docker سازگار با SageMaker بنویسید - می توانید تصویر (BYO) خود را بیاورید (نگاه کنید به از الگوریتم های آموزشی خود استفاده کنید و ظروف آموزش سفارشی Amazon SageMaker، یا از ابتدا شروع کنید یا یک تصویر DLC موجود را گسترش دهید. هنگام استفاده از یک تصویر سفارشی برای آموزش LLM در SageMaker، بررسی موارد زیر بسیار مهم است:
- تصویر شما حاوی EFA با تنظیمات مناسب است (در ادامه این پست بیشتر بحث خواهد شد)
- تصویر شما حاوی یک کتابخانه ارتباطی NVIDIA NCCL است که با GPUDirectRDMA فعال شده است
مشتریان توانسته اند از تعدادی کتابخانه آموزشی توزیع شده خود مدیریتی، از جمله DeepSpeed استفاده کنند.
ارتباطات
با توجه به ماهیت توزیع شده یک شغل آموزشی LLM، ارتباطات بین ماشینی برای امکان سنجی، عملکرد و هزینه های حجم کار بسیار مهم است. در این بخش، ویژگیهای کلیدی برای ارتباط بین ماشینی را ارائه میکنیم و نکاتی را برای نصب و تنظیم به پایان میرسانیم.
آداپتور پارچه ای الاستیک
به منظور تسریع برنامه های ML و بهبود عملکرد با دستیابی به انعطاف پذیری، مقیاس پذیری و کشش ارائه شده توسط ابر، می توانید از مزایای آداپتور پارچه ای الاستیک (EFA) با SageMaker. در تجربه ما، استفاده از EFA یک الزام برای به دست آوردن عملکرد رضایت بخش آموزش LLM چند گره است.
یک دستگاه EFA یک رابط شبکه است که به نمونه های EC2 که توسط SageMaker در طول اجرای کارهای آموزشی مدیریت می شود، متصل است. EFA در خانواده های خاصی از نمونه ها، از جمله P4d در دسترس است. شبکه های EFA قادر به دستیابی به چند صد گیگابیت بر ثانیه توان عملیاتی هستند.
مرتبط با EFA، AWS آن را معرفی کرده است دیتاگرام قابل اعتماد مقیاس پذیر (SRD)، یک حمل و نقل مبتنی بر اترنت با الهام از دیتاگرام قابل اعتماد InfiniBand، با محدودیت سفارش بسته آرام تکامل یافته است. برای اطلاعات بیشتر در مورد EFA و SRD مراجعه کنید در جستجوی عملکرد، بیش از یک راه برای ایجاد یک شبکه وجود دارد، ویدیو EFA چگونه کار می کند و چرا از infiniband در فضای ابری استفاده نمی کنیمو مقاله پژوهشی یک پروتکل حمل و نقل ابری بهینه شده برای HPC الاستیک و مقیاس پذیر از Shalev و همکاران.
میتوانید ادغام EFA را روی نمونههای سازگار به ظروف Docker موجود SageMaker یا ظروف سفارشی که میتوانند برای آموزش مدلهای ML با استفاده از کارهای SageMaker استفاده شوند، اضافه کنید. برای اطلاعات بیشتر مراجعه کنید آموزش را با EFA اجرا کنید. EFA از طریق منبع باز در معرض دید قرار می گیرد لیب فابریک بسته ارتباطی با این حال، توسعه دهندگان LLM به ندرت آن را مستقیماً با Libfabric برنامه ریزی می کنند و معمولاً در عوض به کتابخانه ارتباطات جمعی NVIDIA (NCCL) تکیه می کنند.
پلاگین AWS-OFI-NCCL
در ML توزیع شده، EFA اغلب با کتابخانه ارتباطات جمعی NVIDIA (NCCL) استفاده می شود. NCCL یک کتابخانه منبع باز توسعه یافته توسط NVIDIA است که الگوریتم های ارتباطی بین GPU را پیاده سازی می کند. ارتباطات بین GPU سنگ بنای آموزش LLM است که مقیاس پذیری و عملکرد را تسریع می کند. برای آموزش DL آنقدر حیاتی است که NCCL اغلب مستقیماً به عنوان یک پشتیبان ارتباطی در کتابخانههای آموزشی یادگیری عمیق ادغام میشود، به طوری که توسعهدهندگان LLM از چارچوب توسعه Python DL ترجیحی خود از آن استفاده میکنند. برای استفاده از NCCL در EFA، توسعه دهندگان LLM از AWS-developed استفاده می کنند پلاگین AWS OFI NCCL، که تماس های NCCL را به رابط Libfabric مورد استفاده توسط EFA نگاشت می کند. توصیه می کنیم از آخرین نسخه AWS OFI NCCL برای بهره مندی از پیشرفت های اخیر استفاده کنید.
برای تأیید اینکه NCCL از EFA استفاده می کند، باید متغیر محیطی را تنظیم کنید NCCL_DEBUG
به INFO
و در گزارشها بررسی کنید که EFA توسط NCCL بارگیری شده است:
برای اطلاعات بیشتر در مورد پیکربندی NCCL و EFA، مراجعه کنید پیکربندی EFA و NCCL خود را آزمایش کنید. شما می توانید NCCL را با چندین مورد سفارشی کنید متغیرهای محیطی. توجه داشته باشید که در NCCL 2.12 و بالاتر، AWS یک منطق انتخاب الگوریتم ارتباطی خودکار را برای شبکههای EFA ارائه کرد.NCCL_ALGO
را می توان تنظیم نشده رها کرد).
NVIDIA GPU Direct RDMA از طریق EFA
با نوع نمونه P4d، ما معرفی GPUDirect RDMA (GDR) روی پارچه EFA. این کارتهای رابط شبکه (NIC) را قادر میسازد تا مستقیماً به حافظه GPU دسترسی داشته باشند، ارتباط GPU به GPU از راه دور در نمونههای EC2 مبتنی بر NVIDIA GPU سریعتر میشود و هزینههای ارکستراسیون روی CPU و برنامههای کاربر را کاهش میدهد. GDR در صورت امکان توسط NCCL در زیر کاپوت استفاده می شود.
استفاده از GDR در ارتباطات بین GPU ظاهر می شود زمانی که سطح گزارش روی INFO تنظیم شود، مانند کد زیر:
استفاده از EFA در ظروف یادگیری عمیق AWS
AWS از ظروف یادگیری عمیق (DLC) نگهداری می کند، که بسیاری از آنها با Dockerfiles مدیریت شده توسط AWS و حاوی EFA، AWS OFI NCCL و NCCL ساخته شده اند. مخازن GitHub زیر نمونه هایی با PyTorch و TensorFlow. نیازی نیست خودتان آن کتابخانه ها را نصب کنید.
استفاده از EFA در ظرف آموزشی SageMaker خودتان
اگر کانتینر آموزشی SageMaker خود را ایجاد میکنید و میخواهید از NCCL روی EFA برای ارتباطات سریعتر بین گرهها استفاده کنید، باید EFA، NCCL، و AWS OFI NCCL را نصب کنید. برای اطلاعات بیشتر مراجعه کنید آموزش را با EFA اجرا کنید. علاوه بر این، باید متغیرهای محیطی زیر را در کانتینر یا کد نقطه ورودی خود تنظیم کنید:
FI_PROVIDER="efa"
ارائه دهنده رابط پارچه را مشخص می کندNCCL_PROTO=simple
به NCCL دستور می دهد تا از یک پروتکل ساده برای ارتباط استفاده کند (در حال حاضر، ارائه دهنده EFA از پروتکل های LL پشتیبانی نمی کند؛ فعال کردن آنها می تواند منجر به خراب شدن داده ها شود)FI_EFA_USE_DEVICE_RDMA=1
از قابلیت RDMA دستگاه برای انتقال یک طرفه و دو طرفه استفاده می کندNCCL_LAUNCH_MODE="PARALLEL"
NCCL_NET_SHARED_COMMS="0"
تنظیم و ارکستراسیون
مدیریت چرخه عمر و حجم کاری ده ها تا صدها نمونه محاسباتی به نرم افزار ارکستراسیون نیاز دارد. در این بخش، ما بهترین شیوه ها را برای ارکستراسیون LLM ارائه می دهیم
ارکستراسیون درون شغلی
توسعه دهندگان باید هم کد آموزشی سمت سرور و هم کد راه اندازی سمت کلاینت را در اکثر چارچوب های توزیع شده بنویسند. کد آموزشی روی ماشینهای آموزشی اجرا میشود، در حالی که کد راهانداز سمت کلاینت حجم کار توزیعشده را از ماشین مشتری راهاندازی میکند. امروزه استانداردسازی کمی وجود دارد، به عنوان مثال:
- در PyTorch، توسعه دهندگان می توانند با استفاده از وظایف چند ماشینی راه اندازی کنند
torchrun
,torchx
,torch.distributed.launch
(مسیر منسوخ شدن)، یاtorch.multiprocessing.spawn
- DeepSpeed راهانداز CLI با سرعت عمیق خود را پیشنهاد میکند و همچنین از راهاندازی MPI پشتیبانی میکند
- MPI یک چارچوب محاسباتی موازی پرطرفدار است که دارای مزیت ML-agnostic بودن و به طور منطقی بودن، و بنابراین پایدار و مستند است و به طور فزاینده ای در بارهای کاری ML توزیع شده دیده می شود.
در یک کلاستر آموزشی SageMaker، کانتینر آموزشی یک بار روی هر دستگاه راه اندازی می شود. در نتیجه، شما سه گزینه دارید:
- پرتاب کننده بومی – می توانید به عنوان نقطه ورودی از راه اندازی بومی یک فریم ورک DL خاص استفاده کنید، به عنوان مثال a
torchrun
فراخوانی، که خود چندین فرآیند محلی را ایجاد می کند و ارتباطات بین نمونه ها را برقرار می کند. - ادغام SageMaker MPI - می توانید از ادغام SageMaker MPI که در DLC AWS ما موجود است یا از طریق خود نصب می شود استفاده کنید حکیم ساز-آموزش-ابزار، برای اجرای مستقیم کد نقطه ورودی N بار در هر دستگاه. این مزیت این است که از استفاده از اسکریپت های راه اندازی واسط و فریمورک خاص در کد خود اجتناب کنید.
- SageMaker کتابخانه ها را توزیع کرد – اگر از کتابخانه های توزیع شده SageMaker استفاده می کنید، می توانید روی کد آموزشی تمرکز کنید و اصلاً نیازی به نوشتن کد راه اندازی ندارید! کد راهانداز توزیعشده SageMaker در SageMaker SDK تعبیه شده است.
ارکستراسیون بین شغلی
پروژه های LLM اغلب شامل چندین کار هستند: جستجوی پارامتر، آزمایش های مقیاس بندی، بازیابی از خطاها و موارد دیگر. برای شروع، توقف، و موازی کردن وظایف آموزشی، استفاده از یک ارکستراتور شغلی مهم است. SageMaker Training یک سازمان دهنده کار ML بدون سرور است که نمونه های محاسباتی گذرا را بلافاصله در صورت درخواست ارائه می کند. شما فقط برای چیزی که استفاده می کنید پول می پردازید و به محض پایان کد شما، خوشه ها از کار می افتند. با استخرهای گرم آموزش SageMaker، شما این گزینه را دارید که برای خوشه های آموزشی یک زمان برای زندگی تعریف کنید تا از زیرساخت های مشابه در بین مشاغل استفاده مجدد کنید. این باعث کاهش زمان تکرار و تغییرپذیری بین مشاغل می شود. مشاغل SageMaker را می توان از انواع زبان های برنامه نویسی راه اندازی کرد، از جمله پــایتــون و CLI.
یک SDK پایتون مخصوص SageMaker به نام the وجود دارد SageMaker Python SDK و از طریق حکیم ساز کتابخانه پایتون، اما استفاده از آن اختیاری است.
افزایش سهمیه مشاغل آموزشی با خوشه آموزشی بزرگ و طولانی
SageMaker دارای سهمیه های پیش فرض در منابع است که برای جلوگیری از استفاده ناخواسته و هزینه ها طراحی شده است. برای آموزش یک LLM با استفاده از یک خوشه بزرگ از نمونههای پیشرفته که برای مدت طولانی اجرا میشوند، احتمالاً باید سهمیههای جدول زیر را افزایش دهید.
نام سهمیه | مقدار پیش فرض |
طولانی ترین زمان برای یک کار آموزشی | ثانیه 432,000 |
تعداد موارد در تمام مشاغل آموزشی | 4 |
حداکثر تعداد موارد در هر شغل آموزشی | 20 |
ml.p4d.24xlarge برای استفاده از شغل آموزشی | 0 |
ml.p4d.24xlarge برای آموزش استفاده از استخر گرم | 0 |
دیدن سهمیه خدمات AWS نحوه مشاهده مقادیر سهمیه خود و درخواست افزایش سهمیه سهمیه های درخواستی، نمونه نقطه ای و استخرهای گرم آموزشی به طور جداگانه پیگیری و اصلاح می شوند.
اگر تصمیم دارید SageMaker Profiler را فعال نگه دارید، توجه داشته باشید که هر کار آموزشی یک کار SageMaker Processing را راهاندازی میکند که هر یک از آنها یک ml.m5.2x بزرگ مصرف میکند. تأیید کنید که سهمیههای SageMaker Processing شما به اندازه کافی بالا هستند تا همزمانی شغل آموزشی مورد انتظار را برآورده کنند. به عنوان مثال، اگر میخواهید 50 کار آموزشی با قابلیت Profiler را به صورت همزمان اجرا کنید، باید مقدار ml.m5.2xlarge را برای پردازش محدودیت استفاده از کار به 50 افزایش دهید.
علاوه بر این، برای راه اندازی یک کار طولانی مدت، باید به صراحت آن را تنظیم کنید برآورد max_run
پارامتر به حداکثر مدت زمان مورد نظر برای کار آموزشی در ثانیه، تا مقدار سهمیه طولانیترین زمان اجرا برای یک کار آموزشی.
نظارت و تاب آوری
خرابی سخت افزار در مقیاس یک نمونه بسیار نادر است و با افزایش تعداد نمونه های استفاده شده به طور همزمان بیشتر و بیشتر می شود. در مقیاس معمولی LLM - صدها تا هزاران پردازنده گرافیکی که به صورت 24/7 برای هفتهها تا ماهها استفاده میشوند - خرابیهای سختافزاری تقریباً قطعی است. بنابراین، یک بار کاری LLM باید مکانیسم های نظارت و انعطاف پذیری مناسب را اجرا کند. در مرحله اول، نظارت دقیق بر زیرساخت های LLM، محدود کردن تأثیر خرابی ها و بهینه سازی استفاده از منابع محاسباتی مهم است. آموزش SageMaker چندین ویژگی را برای این منظور پیشنهاد می کند:
- گزارشها بهطور خودکار به گزارشهای CloudWatch ارسال میشوند. گزارشها شامل اسکریپت آموزشی شما هستند
stdout
وstderr
. در آموزش توزیع شده مبتنی بر MPI، همه کارگران MPI گزارش های خود را به فرآیند رهبر ارسال می کنند. - معیارهای استفاده از منابع سیستم مانند حافظه، مصرف CPU و استفاده از GPU به طور خودکار به CloudWatch ارسال می شود.
- تو می توانی معیارهای آموزشی سفارشی را تعریف کنید که به CloudWatch ارسال خواهد شد. معیارها بر اساس عبارات منظمی که شما تنظیم کردهاید، از گزارشها گرفته میشوند. بسته های آزمایشی شخص ثالث مانند شریک AWS ارائه Weights & Biases را می توان با SageMaker Training استفاده کرد (برای مثال، نگاه کنید به بهینه سازی هایپرپارامترهای CIFAR-10 با W&B و SageMaker).
- SageMaker Profiler به شما امکان می دهد استفاده از زیرساخت را بررسی کنید و توصیه های بهینه سازی را دریافت کنید.
- پل رویداد آمازون و AWS لامبدا به شما امکان می دهد منطق مشتری خودکار ایجاد کنید که به رویدادهایی مانند شکست شغلی، موفقیت، آپلود فایل S3 و موارد دیگر واکنش نشان می دهد.
- SageMaker SSH Helper یک کتابخانه منبع باز نگهداری شده توسط جامعه است که به شما امکان می دهد از طریق SSH به میزبان های شغلی آموزشی متصل شوید. بررسی و عیب یابی اجرای کد در گره های خاص می تواند مفید باشد.
علاوه بر نظارت، SageMaker همچنین تجهیزاتی را برای انعطاف پذیری شغلی به ارمغان می آورد:
- بررسی های سلامت خوشه ای – قبل از شروع کار شما، SageMaker بررسیهای سلامت GPU را اجرا میکند و ارتباطات NCCL را در نمونههای GPU تأیید میکند، در صورت لزوم هر نمونه معیوب را جایگزین میکند تا اطمینان حاصل شود که اسکریپت آموزشی شما شروع به اجرا در مجموعهای از نمونههای سالم میکند. بررسی سلامت در حال حاضر برای انواع نمونه مبتنی بر GPU P و G فعال است.
- تلاشهای مجدد داخلی و بهروزرسانی خوشهای - می توانید SageMaker را به صورت خودکار پیکربندی کنید دوباره سعی کنید کارهای آموزشی که با خطای سرور داخلی SageMaker (ISE) ناموفق هستند. به عنوان بخشی از تلاش مجدد یک کار، SageMaker هر نمونه ای را که با خطاهای GPU غیرقابل بازیابی مواجه شده است را با نمونه های تازه جایگزین می کند، همه نمونه های سالم را راه اندازی مجدد می کند و کار را دوباره شروع می کند. این منجر به راه اندازی مجدد سریعتر و تکمیل حجم کار می شود. بهروزرسانی کلاستر در حال حاضر برای انواع نمونه مبتنی بر GPU P و G فعال است. شما می توانید خود را اضافه کنید مکانیسم آزمایش مجدد کاربردی در اطراف کد مشتری که کار را ارسال می کند، برای رسیدگی به انواع دیگر خطاهای راه اندازی، مانند فراتر رفتن از سهمیه حساب شما.
- خودکار ایست بازرسی به آمازون S3 - این به شما کمک می کند ایست بازرسی پیشرفت شما و بارگذاری مجدد وضعیت گذشته در مشاغل جدید.
برای بهره مندی از جایگزینی در سطح گره، کد شما باید خطا داشته باشد. هنگامی که یک گره از کار می افتد، ممکن است به جای خطا، مجموعه ها معلق شوند. بنابراین، برای اصلاح سریع، به درستی یک بازه زمانی را روی مجموعههای خود تنظیم کنید و زمانی که کد به آن رسید، از آن استفاده کنید که خطا بدهد.
برخی از مشتریان با نظارت بر گزارشها و معیارهای CloudWatch برای الگوهای غیرعادی مانند عدم نگارش گزارش یا 0% استفاده از GPU برای اشاره به توقف، توقف همگرایی و خودکار، یک کلاینت مانیتورینگ راهاندازی میکنند تا در صورت توقف کار یا توقف همگرایی کاربردی، نظارت داشته باشد و عمل کند. کار را متوقف/دوباره امتحان کنید
شیرجه رفتن عمیق در ایست بازرسی
La ایست بازرسی SageMaker ویژگی هر چیزی را که روی آن می نویسید کپی می کند /opt/ml/checkpoints
به عنوان URI مشخص شده در آمازون S3 checkpoint_s3_uri
پارامتر SDK. هنگامی که یک کار شروع می شود یا دوباره راه اندازی می شود، همه چیزهایی که در آن URI نوشته شده است، به همه ماشین ها در آدرس ارسال می شود /opt/ml/checkpoints
. اگر میخواهید همه گرهها به تمام نقاط بازرسی دسترسی داشته باشند، این کار راحت است، اما در مقیاس - وقتی ماشینهای زیادی یا نقاط بازرسی تاریخی زیادی دارید، میتواند منجر به زمانهای دانلود طولانی و ترافیک بسیار بالا در Amazon S3 شود. علاوه بر این، در موازی سازی تانسور و خط لوله، کارگران تنها به کسری از مدل نقطه بازرسی نیاز دارند، نه همه آن. اگر با این محدودیت ها روبرو هستید، گزینه های زیر را توصیه می کنیم:
- چک پوینت به FSx برای Luster - به لطف I/O تصادفی با کارایی بالا، می توانید طرح اشتراک گذاری و اسناد فایل مورد نظر خود را تعریف کنید.
- ایست بازرسی آمازون S3 خود مدیریتی - برای مثال هایی از توابع پایتون که می توانند برای ذخیره و خواندن چک پوینت ها به صورت غیر مسدود کننده استفاده شوند، به ذخیره ایست های بازرسی
ما قویاً پیشنهاد می کنیم مدل خود را هر چند ساعت یکبار بررسی کنید، برای مثال 1 تا 3 ساعت، بسته به سربار و هزینه های مرتبط.
فرانت اند و مدیریت کاربر
مدیریت کاربر یک نقطه قوت کلیدی قابلیت استفاده SageMaker در مقایسه با زیرساخت HPC مشترک قدیمی است. مجوزهای آموزشی SageMaker توسط چندین نفر اداره می شود هویت AWS و مدیریت دسترسی انتزاعات (IAM):
- به اصول - کاربران و سیستم ها - اجازه راه اندازی منابع داده می شود
- مشاغل آموزشی خود دارای نقش هایی هستند که به آنها اجازه می دهد از خود مجوز داشته باشند، برای مثال در مورد دسترسی به داده ها و فراخوانی خدمات.
علاوه بر این، در سال 2022 اضافه کردیم مدیر نقش SageMaker برای تسهیل ایجاد مجوزهای شخصیت محور.
نتیجه
با آموزش SageMaker، میتوانید هزینهها را کاهش دهید و سرعت تکرار را در حجم کار آموزشی مدل بزرگ خود افزایش دهید. ما داستان های موفقیت را در پست ها و مطالعات موردی متعددی مستند کرده ایم، از جمله:
اگر به دنبال بهبود زمان ورود LLM به بازار و در عین حال کاهش هزینه های خود هستید، نگاهی به SageMaker Training API بیندازید و به ما اطلاع دهید که چه چیزی می سازید!
با تشکر ویژه از عمرو راگاب، راشیکا خریا، زمناکو اوراحمان، آرون ناگاراجان، گال اوشری برای نظرات و آموزه های مفیدشان.
درباره نویسنده
آناستازیا تزولکا یک معمار راه حل های تخصصی یادگیری ماشین و هوش مصنوعی در AWS است. او با مشتریان در EMEA کار می کند و به آنها کمک می کند تا راه حل های یادگیری ماشین را در مقیاس با استفاده از خدمات AWS معمار کنند. او روی پروژههایی در حوزههای مختلف از جمله پردازش زبان طبیعی (NLP)، MLOps و ابزارهای Low Code No Code کار کرده است.
گیلی ناچوم یک معمار ارشد راه حل های تخصصی AI/ML است که به عنوان بخشی از تیم یادگیری ماشین آمازون EMEA کار می کند. Gili مشتاق چالشهای آموزش مدلهای یادگیری عمیق است و اینکه چگونه یادگیری ماشینی جهان را آنطور که میشناسیم تغییر میدهد. گیلی در اوقات فراغت خود از بازی تنیس روی میز لذت می برد.
اولیویه کروشانت یک معمار اصلی راه حل های متخصص یادگیری ماشین در AWS، مستقر در فرانسه است. اولیویه به مشتریان AWS - از استارتآپهای کوچک گرفته تا شرکتهای بزرگ - کمک میکند تا برنامههای یادگیری ماشینی درجه تولید را توسعه داده و به کار گیرند. در اوقات فراغت خود از خواندن مقالات تحقیقاتی و کاوش در بیابان با دوستان و خانواده لذت می برد.
برونو پیستون یک معمار راه حل های تخصصی AI/ML برای AWS مستقر در میلان است. او با مشتریانی در هر اندازه ای کار می کند تا به آنها کمک کند تا نیازهای فنی خود را عمیقاً درک کنند و راه حل های هوش مصنوعی و یادگیری ماشینی را طراحی کنند که بهترین استفاده را از AWS Cloud و پشته یادگیری ماشین آمازون می کند. زمینه تخصص او عبارتند از: یادگیری ماشینی، صنعتی سازی یادگیری ماشینی و MLOps. او از گذراندن وقت با دوستانش و کشف مکان های جدید و همچنین سفر به مقاصد جدید لذت می برد.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- پلاتوبلاک چین. Web3 Metaverse Intelligence. دانش تقویت شده دسترسی به اینجا.
- منبع: https://aws.amazon.com/blogs/machine-learning/training-large-language-models-on-amazon-sagemaker-best-practices/