سیستم های ML تولید: آزمایش استقرار

شما آماده استقرار مدل اسب شاخدار هستید که ظاهر اسب شاخدار را پیش بینی می کند! هنگام استقرار، خط لوله یادگیری ماشین (ML) شما باید بدون مشکل اجرا، به‌روزرسانی و ارائه شود. اگر فقط استقرار یک مدل به آسانی فشار دادن یک دکمه Deploy بزرگ بود. متأسفانه، یک سیستم کامل یادگیری ماشینی به آزمایش هایی برای موارد زیر نیاز دارد:

  • اعتبارسنجی داده های ورودی
  • اعتبارسنجی مهندسی ویژگی
  • تایید کیفیت نسخه های مدل جدید.
  • اعتبار سنجی زیرساخت های خدمات رسانی
  • تست یکپارچگی بین اجزای خط لوله

بسیاری از مهندسان نرم افزار از توسعه تست محور (TDD) حمایت می کنند. در TDD، مهندسان نرم افزار قبل از نوشتن کد منبع "واقعی" تست هایی را می نویسند. با این حال، TDD می تواند در یادگیری ماشینی مشکل باشد. به عنوان مثال، قبل از آموزش مدل خود، نمی توانید تستی برای تایید ضرر بنویسید. در عوض، ابتدا باید زیان قابل دستیابی را در طول توسعه مدل کشف کنید و سپس نسخه های مدل جدید را در برابر ضرر قابل دستیابی آزمایش کنید.

در مورد مدل تک شاخ

این بخش به مدل تک شاخ اشاره دارد. در اینجا چیزی است که شما باید بدانید:

شما از یادگیری ماشینی برای ساخت یک مدل طبقه بندی استفاده می کنید که ظاهر تکشاخ را پیش بینی می کند. مجموعه داده شما 10000 ظاهر تکشاخ و 10000 تکشاخ غیر ظاهری را نشان می دهد. مجموعه داده شامل مکان، زمان روز، ارتفاع، دما، رطوبت، پوشش درخت، وجود رنگین کمان و چندین ویژگی دیگر است.

به روز رسانی مدل تست با آموزش تکراری

شاید بخواهید به بهبود مدل تک شاخ خود ادامه دهید. برای مثال، فرض کنید مهندسی ویژگی های اضافی را روی یک ویژگی خاص انجام می دهید و سپس مدل را مجدداً آموزش می دهید، به امید اینکه نتایج بهتر (یا حداقل مشابه) بگیرید. متأسفانه، گاهی اوقات بازتولید آموزش مدل دشوار است. برای بهبود تکرارپذیری، توصیه های زیر را دنبال کنید:

  • به طور قطعی مولد اعداد تصادفی را بذر کنید. برای جزئیات، به تصادفی سازی در تولید داده مراجعه کنید

  • اجزای مدل را با یک ترتیب ثابت راه اندازی کنید تا اطمینان حاصل شود که اجزا در هر اجرا همان عدد تصادفی را از مولد اعداد تصادفی دریافت می کنند. کتابخانه های ML معمولاً این نیاز را به طور خودکار انجام می دهند.

  • میانگین چند اجرا مدل را در نظر بگیرید.

  • از کنترل نسخه حتی برای تکرارهای اولیه استفاده کنید تا بتوانید هنگام بررسی مدل یا خط لوله خود کد و پارامترها را مشخص کنید.

حتی پس از پیروی از این رهنمودها، ممکن است منابع دیگری از غیر جبرگرایی همچنان وجود داشته باشد.

تست تماس‌ها به API یادگیری ماشین

چگونه به‌روزرسانی‌های تماس‌های API را آزمایش می‌کنید؟ شما می توانید مدل خود را مجدداً آموزش دهید، اما این کار زمان بر است. در عوض، یک تست واحد بنویسید تا داده‌های ورودی تصادفی تولید کند و یک مرحله از گرادیان نزول را اجرا کنید. اگر این مرحله بدون خطا تمام شود، احتمالاً هر گونه به روز رسانی در API مدل شما را خراب نکرده است.

تست های یکپارچه سازی اجزای خط لوله را بنویسید

در خط لوله ML، تغییرات در یک جزء می تواند باعث ایجاد خطا در اجزای دیگر شود. با نوشتن یک تست یکپارچه سازی که کل خط لوله را از سر به انتها اجرا می کند، بررسی کنید که اجزا با هم کار کنند.

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

قبل از سرو کیفیت مدل را تأیید کنید

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

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

  • تخریب آهسته آزمایش شما برای تخریب ناگهانی ممکن است کاهش آهسته کیفیت مدل را در چندین نسخه تشخیص ندهد. درعوض، اطمینان حاصل کنید که پیش‌بینی‌های مدل شما در مجموعه داده اعتبارسنجی یک آستانه ثابت را برآورده می‌کند. اگر مجموعه داده اعتبارسنجی شما از داده‌های زنده منحرف می‌شود، سپس مجموعه داده اعتبارسنجی خود را به‌روزرسانی کنید و مطمئن شوید که مدل شما همچنان از آستانه کیفیت یکسانی برخوردار است.

پیش از ارائه، سازگاری مدل و زیرساخت را تأیید کنید

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