چالش های اجرای یادگیری ماشین در محیط عملیاتی

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

  • سازماندهی آزمایش های یادگیری ماشین

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

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

  • دیباگ کردن مدل تحت آموزش

دیباگ کردن مدل ها در محیط های تعاملی مثل جوپیتر راحت است. وقتی کد را به صورت دستی اجرا کنید، خطاها را دیده و می تواند آنها را trace کنید. میتواند منحنی های آموزش و دیگر متریک ها را ترسیم کنید (البته اگر آموزش بصورت موفقیت آمیز پیش برود). این روش ها امکان متوجه شدن رخدادن overfit یا محو شدن گرادیان (vanishing gradient) را فراهم می کند.

ولی وقتی Jobهای آموزش به صورت دسته ای (Batch) ،خودکار، و در دوره های زمانی مختلف اجرا میشوند، دیباگ کردن آنها تقریبا غیرممکن خواهد شد! گرچه schedulerها  Jobهایی را که با خطا مواجه شده ­اند برمی گرداند، ولی پیدا کردن علت رخ داد خطا (مثلا در صورت overfit یا محو شدن گرادیان) راحت نیست مگر اینکه راه حل های سفارشی شده داشته باشید. و چون هدف یک تیم علوم داده تولید مدل های بیشتر و بیشتر است، این مشکل حادتر و حادتر می شود.

  • استقرار مدل در محیط های production

فرایند راه اندازی یک مدل یادگیری ماشین، و ارائه پیش بینی های آن به کاربران یا سیستم های دیگر، به عنوان استقرار مدل یادگیری ماشین شناخته میشود. استقرار، کاملا از تسک های روتین یادگیری ماشین (مانند مهندسی فیچرها، انتخاب مدل، یا ارزیابی مدل) متفاوت است. در واقع فهم استقرار نیاز به داشتن دانش مهندسی نرم افزار و devops دارد. وقتی میخواهیم مدلی را مستقر کنیم چند فاکتور را باید در نظر بگیریم:

  • با چه نرخی باید پیش بینی انجام شود
  • آیا پیش بینی برای یک نمونه در هر زمان انجام می شود یا برای دسته ای از نمونه ها
  • تعداد برنام های کاربردی ای که به یک مدل دسترسی دارند چقدر است
  • حد قابل تحمل تاخیر در این برنامه ها چقدر است

دو نوع پیش بینی/استنتاج در محیط عملیاتی داریم:

1) Batch inference: که امکان پیش بینی روی یک دسته از نمونه ها را معمولا به صورت دوره ای فراهم میکند.

2) Online inference: که وقتی نیاز است پیش بینی ها سنکرون باشند انجام میشود.

برای هر دو استنتاج فوق، نیازهای خاص استقرار آنها نیز باید در نظر گرفته شود.

  • افزایش مقیاس پیش بینی یادگیری ماشین

وقتی بار و درخواست روی مدل زیاد شود باید سیستم های محاسباتی مرتبط با مدل زیاد شوند و وقتی درخواست کم شود، این منابع باید حذف شوند. به این فرایند autoscaling  یا مقیاس پذیری خودکار گفته می شود که برای رفع نیاز بار روی مدل ها در محیط استقرار باید در نظر گرفته شوند.

  • مانیتور کردن مدل در محیط عملیاتی

مدل ها باید دائما مانیتور شوند تا انحراف کیفیت مدل (deviations in the model quality) مانند data drift شناسایی و رفع شود. شناسایی زودهنگام و pro-active این انحرافات امکان طراحی عملکردهای تصحیح کنند (مانند آموزش مجدد مدل)، چک کردن سیستمهای upstream، یا فیکس کردن کیفیت داده را فراهم می کند بدون اینکه نیاز به مانیتور کردن دستی مدل یا ساختن ابزارهای اضافه تر باشد. 

 

منبع: Mlproduction

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