محاسبه و ذخیره‌سازی برای یادگیری ماشینی

شکل ۱: یادگیری ماشینی
شکل ۱: یادگیری ماشینی


منتشر‌شده در: towardsdatascience به تاریخ ۱۳ مارس ۲۰۲۱
لینک منبع: Storage & Compute for Machine Learning

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

شکل ۲:مراحل جمع‌آوری، ذخیره‌سازی و استفاده از داده‌ها
شکل ۲:مراحل جمع‌آوری، ذخیره‌سازی و استفاده از داده‌ها

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

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

ممکن است به مطالعه مقاله ساخت سریع برنامه‌های کاربردی وب ML با Streamlitعلاقمند باشید.

چند محدودیت مهم وجود دارد که باید در رابطه با GPU‌ها در ذهن داشته باشید.

اول، آن‌ها همچنین بسیار گران هستند، و یک فروشنده (Nvidia) سهم بازار قابل‌توجهی دارد. اگر می‌خواهید مدل‌های AI بسازید، احتمال این وجود دارد که از پردازنده‌های Nvidia استفاده کنید. دوم، باید محاسبات خود را در نزدیکی داده‌های خود داشته باشید. هیچ فایده‌ای ندارد که GPU‌های گران‌قیمت بی‌کار منتظر درخواست‌های I / O باشند. سوم، دیدن زمان‌های train که در روزها یا هفته‌ها اندازه‌گیری می‌شوند، غیر‌معمول نیست. زمان لازم برای آموزش مدل‌ها به معماری مدل بستگی دارد، هر چه پیچیده‌تر باشد، آموزش بیشتر طول خواهد کشید، مقدار داده‌ها و توان محاسباتی موجود برای آموزش بیشتر خواهد بود.

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

با توجه به تجربه من که به طور کامل بر نمونه‌های GPU مبتنی بر ابر تکیه دارد، شما بهتر است برای GPU‌های مبتنی بر ابر، مانند Nvidia DGX پول پرداخت کنید و اگر به قدرت محاسباتی بیشتری نیاز دارید، به ابر تکیه کنید. شایان ذکر است که ارائه‌دهندگان اصلی خدمات ابری در حال ساخت ASIC‌های خود هستند و آن‌ها را با قیمت‌های بسیار پایین‌تر از GPU‌های طراحی‌شده توسط Nvidia ارائه می‌دهند. به عنوان مثال، AWS نمونه‌های فوری (Inf1) را ارائه می‌دهد و قصد تکمیل آن‌ها با مدل‌های جدیدتر مانند Trainium را دارد.

همچنین شما نمی‌خواهید که GPU‌های گران‌قیمت بی‌کار در اطراف منتظر I / O بنشینند یا کم‌تر از حد، مورد استفاده قرار گیرند. شما به علاوه نمی‌خواهید که تیم ML در کار تلاش برای فهمیدن نحوه برنامه‌ریزی مشاغل ML برای کار در برابر خوشه GPU‌ها باشد.

این جایی است که موتورهای MLOPs مانند پولیاکسون وارد بازی می‌شوند. جایگزین‌های متعددی برای پولیآکسون وجود دارد که برخی از آن‌ها توسط ارائه‌دهندگان ابر مانندAWS ساگیمیکر و برخی دیگر مانند الگوریتم ارائه شده‌اند. در Kheiron ما پولیاکسون را به دلیل مجموعه ویژگی‌های گسترده آن و توانایی اجرا در محل و در ابر انتخاب کردیم. پولی‌آکسون یک سرویس مدیریت‌شده نیز ارائه می‌دهد.

با در نظر گرفتن همه این موارد، معماری ذخیره‌سازی مواد خام محاسبه ما در زیر نشان داده شده‌است. در بالای پشته شما لایه ذخیره‌سازی ما را می‌بینید، که از S3 (تصاویر) و redshift برای داده‌های بالینی و دیگر فراداده‌ها تشکیل شده است. ما همچنین از نمونه‌های GPU موجود در AWS استفاده می‌کنیم، اگر و هنگامی که نیاز به انفجار فراتر از ظرفیت در محل موجود خود داریم.

شکل ۳: استفاده از نمونه‌های GPU موجود در AWS
شکل ۳: استفاده از نمونه‌های GPU موجود در AWS


اکثریت قریب به اتفاق خوشه محاسباتی ما در محل (Nvidia DGX) قرار دارد. برای کاهش تاخیر I / O بین زیرساخت در محل و ذخیره‌سازی میزبانی شده در AWS ما از مخازن S3 مانند Mino استفاده می‌کنیم. رسانه ذخیره‌سازی برای حافظه نهان ما، NVMe SSD‌های سریع است. پلتفرم MLOPs انتخابی ما پولی‌اکسونی است که ما به طور گسترده برای تخصیص منابع GPU استفاده می‌کنیم که در آن مشاغل ML می‌توانند روی آن اجرا شوند. این منابع به طور پیش‌فرض به GPU‌های در محل ما تعلق دارند، اما ما همچنین قادر به انفجار نمونه‌های GPU در AWS هستیم. زمانی که ما این کار را انجام می‌دهیم، می‌توانیم مستقیما از S3 بدون عبور از لایه ذخیره‌سازی را بخوانیم. پولی‌آکسون بسیار بیشتر از توانایی مدیریت و برنامه‌ریزی یک خوشه محاسباتی بزرگ ارائه می‌دهد. یکی از مزایای متعدد آن، پی‌گیری بسیاری از داده‌های تاریخی در مورد مدل‌هایی است که بر روی یک پایگاه‌داده Postgres محلی اجرا می‌کند.

در نهایت، ما از ابزارهای BI، ذخیره شده در S3 و Redshift با عملکرد مدل، برای ارزیابی رابطه بین داده‌های آموزشی خود استفاده می‌کنیم.
سپس در پلی‌آکسون ذخیره می‌شود. سوالات متعددی وجود دارند که ما می‌خواهیم از این تجزیه و تحلیل به آن‌ها پاسخ دهیم. در حالی‌که ما به وضوح به عملکرد کلی مدل‌های خود اهمیت می‌دهیم، ما همچنین علاقه‌مند به درک توزیع‌های مجموعه داده‌های آموزشی هستیم. به عنوان مثال، اگر مجموعه داده ما به سمت یک گروه سنی خاص به عنوان مثال زنان زیر ۴۵ سال تعصب داشته باشد، در این صورت مدل‌های ما ممکن است اگر با داده‌های خارج از توزیع آموزش مواجه شوند، در این مورد زنان بالای ۴۵ سال، به اندازه کافی خوب عمل نکنند.
ما به توزیع داده‌های آموزشی خود برای درک پروفایل ریسک کلی مدل‌های خود و اینکه چگونه آن‌ها می‌توانند در یک توزیع گسترده‌تر تعمیم یابند، اهمیت می‌دهیم. این تجزیه و تحلیل همچنین در کمک به ما برای تشخیص شکاف‌ها در داده‌های آموزشی ما ارزشمند است. هرچه همپوشانی بین داده‌های آموزشی ما و داده‌های کلی بیشتر باشد (یعنی جمعیت) هر چه توزیع جمعیت بهتر باشد، مدل بهتر تعمیم داده می‌شود.

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