جریان کار در ساخت و استقرار مدل یادگیری ماشین

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

جریان کاری یادگیری ماشین

1) مدیریت داده

داده آموزشی یکی از فاکتورهای اساسی برای ارزیابی کارکرد یک مدل است. این مرحله شامل جمع آوری داده و آماده سازی آن است. چالش های این مرحله عبارتند از:

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

داده با کیفیت بالا: اگر کیفیت داده خوب نباشد، داده بزرگ مزیتی برای مدل ایجاد نمی کند. دریافت داده از منابع داده ای درست، و ارزیابی کیفیت آن می تواند بسیار مفید باشد. به این طریق می توان مطمئن شد که مدل بر اساس جنبه های خاصی مثل نژاد، جنسیت، سن، گروه درآمدی و … بایاس نشده است. بنابراین لازم است ارزیابی بایاس شدن مدل انجام شود.

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

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

امنیت و سازگاری: گاهی ممکن است داده مورد استفاده حساس باشد یا نیاز به سازگاری با استانداردهای خاص (مثل HIPAA، PCI یا GDRP) داشته باشد.

 

2) آزمایش

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

جریان های کاری ثابت تحقیق و آزمایش: صرف زمان برای جمع آوری یا تولید داده، آزمایش، بررسی معماری های مختلف برای یک usacase خاص، تنظیم هایپرپارامترها و آموزش با مجموعه های آموزشی مختلف برای گرفتن بهترین نتیجه. این جریان کاری باید دائما تکرار شود.

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

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

زمان آموزش و رفع خطای آن: آموزش مدل اغلب ساعت ها و یا روزها زمان نیاز دارد. و نیاز به زیرساخت های خاص دارد. مثلا بیلد کامل شبکه عصبی autopilot تسلا، به 70هزار gpu در ساعت نیاز دارد تا برای هر وبسایت آموزش داده شود. چون آموزش به زمان نیاز دارد باید بتوان به راحتی مشکلات را از طریق مانیتور، لاگ، هشدار، و ارزیابی حین فرایند آموزش رفع کرد. اگر پروسه آموزش با خطا مواجه شود، ارائه روش هایی برای رفع راحت مساله و ادامه دادن/اجرای مجدد آموزش مهم است.

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

آموزش مجدد: اگر data drift رخ دهد، یک باگ در محیط عملیاتی رخ دهد، یا تغییری در نیازمندی ها ایجاد شود، لازم است مدل مجدد آموزش داده شود.

نیازمندی های زیرساختی: بار کاری ML به زیرساخت های خاص مانند GPU و هسته هایی با density بالا نیاز دارد. در یک GPU هزاران هسته به صورت همزمان اجرا می شوند. این زیرساختها هزینه بالایی دارند و بیشتر در مرحله آموزش مدل به صورت دوره­ای به آنها نیاز است. پشتیبانی از کشسانی و خودکارسازی مقیاس پذیری و provision/ deprovision شدن زیرساخت (مخصوصا وقتی از ابر استفاده میشود) حائز اهمیت است.

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

3) استقرار در محیط

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

پیش بینی آفلاین/آنلاین: بر اساس نوع مدل، و این که چگونه باید از آن در محیط عملیاتی و با داده برخط استفاده کرد، ممکن است پیش بینی آفلاین (batch) یا آنلاین(بلادرنگ) انجام شود. برای پشتیبانی از ارائه/سرو مدل ها بر اساس نوع آنها (بچ یا بلادرنگ) به به فریمورک مناسبی نیاز است. اگر مدل از نوع بچ باشد باید بتوان jobهای بچ را به شکل مناسبی زمانبندی کرد، و برای پیش بینی بلادرنگ باید زمان پردازش را در نظر گرفت چرا که معمولا لازم است نتیجه سنکرون باشد.

Degrade شدن مدل: به علت وجود فاکتورهای مختلف مانند data drift، تغییرات محیط و … در طی زمان، ممکن است مدل degrade شود و لذا پیش بینی های آن، صحت قبل را نداشته باشد. ضروریست که اطلاعات لازم برای رفع مشکل و حل مسائل آن به تیم ارائه شود.

منبع TowardDataScience

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