سود:
- توانایی تشخیص چالش های خاص ML مربوط به کد-داده-مدل سه گانه و بسته و ارائه مدل به صورت آنلاین یا دسته ای بر حسب نیاز کسب و کار.
- امکان پیادهسازی الگوهای استقرار تدریجی و برگشتی (سایه، قناری، A/B، بازگشت) و افزودن یک طرح بازگشت آزمایش شده به هر استقرار
- قابلیت ردیابی پیوند داده-کد-متریک مدل تولید شده با CI/CD کنترل شده با آستانه ارزیابی و رجیستری مدل
بدست آوردن مدلی برای دستیابی به دقت 95 درصد در نوت بوک تنها نیمی از ماجرا است. نیمه دیگر - اغلب قسمت سخت - رساندن آن مدل به کاربران واقعی به روشی قابل اعتماد، مقیاس پذیر و قابل نگهداری است. MLOps (عملیات یادگیری ماشین: رشته قرار دادن، بهره برداری و نگهداری مدل های ML در تولید) شیوه های DevOps مهندسی نرم افزار را با چالش های منحصر به فرد ML ترکیب می کند. در این واحد به مراحل انتقال مدل به سمت تولید و چگونگی کمک هوش مصنوعی به این فرآیند می پردازیم.
چرا ML با نرم افزار معمولی متفاوت است؟
در نرم افزارهای معمولی، رفتار در کد است. اگر کد تغییر نکند، رفتار تغییر نمی کند. در ML، رفتار به کد، داده و مدل بستگی دارد. این سه بعد چالش های اضافی MLO ها را ایجاد می کند:
- انحراف داده ها: داده های تولیدی به مرور زمان از داده های آموزش دور می شوند. مدل منسوخ می شود
- شما باید سه چیز را نسخه کنید: کد، داده و مدل - هر سه.
- شکست بیصدا: یک مدل میتواند بدون خرابی، بدون خطا، به سادگی با تولید پیشبینیهای نادرست شکست بخورد. گرفتن این نیاز به نظارت دارد.
به همین دلیل است که بین «مدل کار» و «مدل آماده تولید» تفاوت زیادی وجود دارد.
بسته بندی و ارائه مدل
اولین گام در تولید مدل، بسته بندی آن است: فایل مدل، کتابخانه های لازم، کد پیش پردازش و اطلاعات نسخه با هم به عنوان یک کل قابل تکرار. Containerization (به عنوان مثال Docker: قرار دادن برنامه در یک جعبه ایزوله با تمام وابستگی های آن) در اینجا استاندارد است. این مشکل "روی دستگاه من کار می کرد" را از بین می برد.
دو الگوی اصلی خدمت به مدل:
- آنلاین/زمان واقعی (آنلاین): مدل پشت یک API قرار دارد و برای هر درخواست دریافتی یک پیشبینی فوری ارائه میکند. تأخیر کم بسیار مهم است.
- دسته ای: مدل مجموعه داده های بزرگ را به صورت دوره ای پردازش می کند (به عنوان مثال برای همه مشتریان در شب امتیاز ایجاد می کند). تأخیر مهم نیست، کارایی مهم است.
اینکه کدام یک درست است بستگی به نیاز کسب و کار دارد: توصیه فوری آنلاین، امتیاز ریسک ماهانه به صورت دسته ای.
نکته: "زمان واقعی" یک هزینه است، نه پیش فرض. اگر نتیجه ظرف چند ساعت استفاده شود، دسته بسیار ارزانتر و سادهتر است. آیا واقعاً به یک پاسخ فوری نیاز دارید؟ اول آن را بپرس
استراتژی های توزیع امن
باز کردن یک مدل جدید به طور مستقیم برای همه ترافیک خطرناک است. اگر اشتباه باشد، همه تحت تأثیر قرار می گیرند. الگوهای توزیع ایمن:
- استقرار سایه: مدل جدید ترافیک تولید را دریافت می کند، اما پیش بینی های آن به کاربر نشان داده نمی شود، فقط ثبت می شود. با مدل قدیمی مقایسه می شود تا ببینیم آیا در داده های واقعی ایمن است یا خیر.
- استقرار قناری: مدل جدید ابتدا برای درصد کمی از ترافیک (به عنوان مثال 5٪) عرضه می شود. در صورت عدم وجود مشکل به تدریج افزایش می یابد.
- تست A/B: دو مدل به صورت موازی به کاربر واقعی ارائه میشود و معیارهای تجاری (تبدیل، کلیکها) با هم مقایسه میشوند.
- بازگشت: امکان بازگشت سریع به نسخه قدیمی در صورت بد بودن مدل جدید. هر استقرار باید یک برنامه بازگشت داشته باشد.
احتیاط: استقرار بدون برنامه بازگشت کامل نیست. زمانی که مدل جدید در تولید رفتار غیرمنتظره ای نشان می دهد، توانایی بازگشت به نسخه قدیمی در عرض چند دقیقه از کاربر محافظت می کند. این را قبل از استقرار تست کنید.
رویکرد ضعیف / رویکرد قوی
ضعیف: "مدل در تست خوب بود، لایو رفتیم، برای همه باز کردیم."
Güçlü: "ما مدل را کانتینری کردیم، آن را به عنوان نسخه برچسب گذاری کردیم. ابتدا آن را در حالت سایه با ترافیک تولید به مدت 3 روز اجرا کردیم، پیش بینی ها را با مدل قدیمی مقایسه کردیم - انحراف قابل قبول بود. سپس آن را با 5% قناری باز کردیم، متریک های توان و تأخیر را زیر نظر گرفتیم. وقتی مشکلی وجود نداشت، به تدریج آن را به 10% افزایش دادیم."
تفاوت: رویکرد قوی تدریجی، اندازه گیری شده و برگشت پذیر است. ریسک در هر مرحله محدود است.
CI/CD و اتوماسیون
CI/CD (ادغام مداوم / استقرار مستمر: خط لوله آزمایش و انتشار خودکار تغییرات کد) در ML نه تنها کد، بلکه داده ها و مراحل مدل را نیز پوشش می دهد. خط لوله خوب ML CI/CD: زمانی که کد تغییر میکند، آزمایشها را اجرا میکند، اعتبار دادهها را انجام میدهد، مدل را مجدداً آموزش میدهد (در صورت لزوم)، آستانههای ارزیابی را بررسی میکند، و تنها در صورت حفظ آستانهها، استقرار را پیش میبرد. اصل "آموزش خودکار است، استقرار مبتنی بر آستانه است" از نشت بی سر و صدا مدل بد به تولید جلوگیری می کند.
هوش مصنوعی هنگام تنظیم این خطوط لوله بسیار مفید است: نوشتن پیشنویسهای فایل پیکربندی (YAML)، موارد تست، اسکریپتهای استقرار. اما آستانه توزیع (هر معیاری که از مقدار منتشر شده فراتر رود) و خط مشی بازگشت را تعیین می کنید. اینها تصمیمات ریسک تجاری هستند.
زیرساخت تکرارپذیری
به منظور بازتولید رفتار یک مدل در تولید، ثبت مدل: رکوردی که نگه میدارد کدام مدل با کدام داده و کد آموزش داده شده است و چه معیارهایی دریافت کرده است. برای هر مدل تولید، موارد زیر باید قابل ردیابی باشند: نسخه داده آموزشی، نسخه کد (git commit)، هایپرپارامترها، امتیازهای ارزیابی و تاریخ استقرار. وقتی مشکلی پیش میآید، باید بتوانید به این سؤال پاسخ دهید که «کدام مدل این پیشبینی را ایجاد کرده است، با کدام داده؟» در عرض چند دقیقه ما این را در واحد 11 عمیق تر خواهیم کرد.
سه کیف کوچک
مورد 1 - مشکل با توزیع سایه. یک مدل پیشنهادی در آزمایش مدل قبلی را شکست داد. مشخص شد که اجرای آن با ترافیک تولید در حالت سایه، توصیه های بسیار ضعیفی برای بخش خاصی از کاربران (کاربران جدید) ایجاد می کند - داده های آزمایشی این بخش را کمتر نشان می دهد. مدل بدون نمایش به کاربر ثابت شد. اگر مستقیماً باز می شد، تجربه کاربری جدید مختل می شد.
مورد 2 - توزیع غیر قابل برگشت. یک تیم یک مدل قیمت گذاری جدید را برای همه ترافیک ارائه کرد، بدون برنامه بازگشت. این مدل به طور غیرمنتظره ای قیمت برخی از محصولات را بسیار ارزان کرد. بازگشت به نسخه قدیمی ساعت ها طول کشید زیرا فرآیند آماده نبود. از دست دادن درآمد جدی بود. پس از آن، تست بازگشت اجباری به هر استقرار اضافه شد.
مورد 3 - رانش داده های بی صدا. یک الگوی تقلب برای ماه ها بدون هیچ خطایی ظاهر شد. اما تاکتیک های کلاهبرداران تغییر کرد (انحراف داده ها) و فراخوان مدل بی سر و صدا متوقف شد. هیچ کس متوجه نشد زیرا نظارتی وجود نداشت. هنگامی که یک پانل نظارت بر توزیع پیشبینی ایجاد شد، رانش در اوایل قابل مشاهده بود. ما نظارت را در واحد 8 پوشش خواهیم داد.
قالب های قابل کپی
یک پیش نویس برنامه استقرار برای این مدل بنویسید. مدل: [چه کاری انجام میدهد]، استفاده: [آنلاین یا دستهای؟] باید شامل: 1) بستهبندی (کانتینر، نسخهسازی) 2) استراتژی استقرار افزایشی (سایه/قناری/A-B) و چرا3) معیارهای ردیابی (تجارت + فنی + تأخیر) 4) طرح بازگشت و نحوه تست کردن
این خط لوله ML CI/CD را بررسی کنید: 1) آیا اعتبارسنجی داده ها در خط است؟ 2) آیا می توان بدون نگه داشتن آستانه ارزیابی ادامه داد؟ 3) آیا بازگشت خودکار است؟
به من کمک کنید تصمیم بگیرم که آیا ارائه آنلاین یا دسته ای برای این مدل مناسب است. چه مدت از نتیجه استفاده می شود: [آنی / دقیقه / ساعت / روز] حجم درخواست مورد انتظار: [شماره] آیا محدودیت تاخیر وجود دارد: [ms] کدام یک را از نظر هزینه و پیچیدگی توصیه می کنید و چرا؟
یک رویه بازگشت به عقب برای این مدل بنویسید.- کدام متریک/آستانه باعث عملکرد ضعیف می شود؟- مراحل بازگشت چیست؟- چه مدت باید بازگشت (هدف) طول بکشد؟- چگونه این روش را قبل از تولید آزمایش کنم؟
جدول الگوی ارائه
معیار
آنلاین (زمان واقعی)
دسته ای
تاخیر
بحرانی (ms)
ناچیز
استفاده
پاسخ فوری مورد نیاز است
امتیاز دوره ای
هزینه
بالا
پایین
پیچیدگی
بالا
پایین
مثال
توصیه زنده، کلاهبرداری
امتیاز ریسک ماهانه
اشتباهات رایج
- بدون برنامه بازیابی توزیع کنید. مدل اشتباه به کل کاربر ضربه می زند.
- باز کردن مستقیم به ترافیک 100٪. ریسک را با توزیع پلکانی محدود کنید.
- عدم ایجاد نظارت مدل خطاها را بی صدا و بدون خطا تولید می کند.
- ارائه بیدرنگ. در حالی که بچینگ کافی است، هزینه و پیچیدگی افزایش می یابد.
- پیوند دادن نسخههای مدل-داده-کد. شما نمی توانید مشکل را تکرار کنید.
- انتشار خودکار بدون آستانه توزیع. مدل بد بی صدا یواشکی وارد می شود.
به طور خلاصه
انتقال مدل به تولید یک کار مهندسی متفاوت و اغلب دشوارتر از آموزش آن است. ML نیاز به نظم و انضباط بیشتری دارد زیرا به سه مدل کد-داده-مدل بستگی دارد: بسته بندی و نسخه سازی، الگوی تحویل (آنلاین/دسته ای) متناسب با نیاز تجاری، استقرار تدریجی و برگشت پذیر، CI/CD کنترل شده با آستانه و ثبت مدل. هوش مصنوعی کمکی قدرتمند در تولید کد و پیکربندی این زیرساخت است. اما آستانه توزیع، سیاست بازگرداندن کالا و تصمیمات ریسک با شماست. توزیع بدون طرح بازگشت کامل نیست.
وظیفه کاربردی
Containerize (Docker) یک مدل و برچسب نسخه آن. تصمیم بگیرید که بر اساس نیازهای تجاری خود به صورت آنلاین یا دسته ای ارائه دهید و توجیه خود را بنویسید. یک طرح استقرار مرحلهای (سایه یا قناری) و یک روش بازگشت آزمایش شده را مستند کنید. مطمئن شوید که نسخه داده، تعهد کد و امتیازات ارزیابی را در رجیستری مدل ثبت کنید.
چک لیست
- [ ] مدل بسته بندی و نسخه بندی شده است (ظرف + برچسب).
- [ ] الگوی ارائه (آنلاین / دسته ای) با توجه به نیاز کسب و کار انتخاب شد.
- [ ] استراتژی استقرار مرحلهای (سایه/قناری) اجرا شد.
- [ ] روش بازگشت نوشته و آزمایش شده است.
- [ ] CI/CD استقرار را قبل از رسیدن به آستانه ارزیابی پیش نمیبرد.
- [ ] رجیستری مدل پیوند داده + کد + متریک را نگه می دارد.