هوش مصنوعی

MLOps و کنترل هزینه هوش مصنوعی در ابر

با MLOps مدل‌ها را قابل تکرار، قابل پایش و کم‌هزینه نگه دارید؛ از نسخه‌بندی داده و پایش مدل تا کاهش هزینه ابری. راهنمای عملی را بخوانید.

کارخانه‌ای روشن با بازوهای رباتیک زرد و نوار نقاله؛ نمادی از خودکارسازی MLOps و کنترل هزینه هوش مصنوعی

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

در این مقاله ابتدا اجزای اصلی MLOps را مرور می‌کنیم و بعد سراغ موضوعی می‌رویم که این روزها برای همه تیم‌ها مهم شده است: کنترل هزینه هوش مصنوعی در ابر، بدون این‌که کیفیت سرویس قربانی شود.

MLOps چیست و چرا به آن نیاز داریم؟

MLOps همان ایده DevOps است که برای یادگیری ماشین بازتعریف شده است. در نرم‌افزار معمولی، رفتار سیستم فقط به کد بستگی دارد؛ در یادگیری ماشین، رفتار به سه چیز وابسته است: کد، داده و مدل. هر کدام از این سه ممکن است تغییر کند و هر تغییر می‌تواند نتیجه را عوض کند. بدون فرایند منظم، تیم نمی‌تواند نتیجه‌ای را بازتولید کند، علت افت کیفیت را پیدا کند یا با اطمینان نسخه جدید منتشر کند.

هدف MLOps سه چیز است: تکرارپذیری (بتوان هر مدل را دوباره با همان نتیجه ساخت)، خودکارسازی (مسیر از داده تا انتشار کمترین کار دستی را داشته باشد) و مشاهده‌پذیری (همیشه بدانیم مدل در محیط اصلی چه می‌کند و چقدر هزینه دارد).

اجزای اصلی چرخه عمر مدل یادگیری ماشین

  • نسخه‌بندی داده: هر مجموعه‌داده آموزشی شناسه و نسخه مشخص داشته باشد. ابزارهایی مانند DVC یا ساختار نام‌گذاری منظم در فضای ذخیره‌سازی فایل این کار را ممکن می‌کنند.
  • ثبت آزمایش‌ها: پارامترها، معیارها و خروجی هر آزمایش ثبت شود تا بتوان آن‌ها را مقایسه کرد. MLflow یکی از ابزارهای متن‌باز رایج برای این کار است.
  • رجیستری مدل: مدل‌های آماده انتشار با نسخه، معیارهای ارزیابی و پیوند به داده و کد سازنده‌شان نگهداری شوند.
  • انتشار خودکار: ساخت ایمیج، آزمون و استقرار با یک خط لوله خودکار انجام شود و وضعیت مطلوب در Git تعریف شود.
  • پایش مدل در محیط اصلی: هم سلامت فنی سرویس و هم کیفیت پیش‌بینی‌ها مرتب سنجیده شود.

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

پایش مدل؛ فراتر از روشن بودن سرویس

سرویسی که پاسخ می‌دهد لزوماً سرویس درستی نیست. مدل ممکن است بدون هیچ خطای فنی، به‌تدریج پیش‌بینی‌های بدتری تولید کند؛ چون داده‌های دنیای واقعی با داده آموزشی فاصله گرفته‌اند. به این پدیده رانش داده (Data Drift) می‌گویند. در پایش مدل، توزیع داده‌های ورودی، توزیع خروجی‌ها و در صورت امکان دقت واقعی را در طول زمان دنبال می‌کنید و برای تغییرات معنادار هشدار تعریف می‌کنید.

برای مدل‌های زبانی، پایش شکل دیگری دارد. یک مجموعه ثابت از پرسش‌های آزمون بسازید و پس از هر تغییر در مدل، پرامپت یا اسناد آن را اجرا کنید. بازخورد کاربران را هم، مثلاً پسندیدن یا نپسندیدن پاسخ، ثبت کنید و در کنار کیفیت، تعداد توکن ورودی و خروجی و هزینه هر درخواست را هم بسنجید؛ اینجاست که MLOps و کنترل هزینه به هم می‌رسند.

هزینه هوش مصنوعی از کجا می‌آید؟

پیش از کاهش هزینه باید بدانید پول کجا خرج می‌شود. در بیشتر پروژه‌ها این موارد سهم اصلی را دارند:

  • منابع پردازشی سرویس‌دهی که باید همیشه روشن بمانند، به‌ویژه سخت‌افزار شتاب‌دهنده.
  • کارهای آموزش و تنظیم دقیق که ممکن است بیش از نیاز طول بکشند یا بی‌دلیل تکرار شوند.
  • محیط‌های آزمایشی و نوت‌بوک‌هایی که فراموش می‌شوند و بدون استفاده باقی می‌مانند.
  • ذخیره‌سازی داده‌ها، نقاط ذخیره قدیمی و نسخه‌های متعدد مدل که هیچ‌وقت پاک نمی‌شوند.
  • در صورت استفاده از API بیرونی، تعداد توکن‌های مصرفی که با طولانی شدن پرامپت‌ها سریع رشد می‌کند.

بهینه‌سازی هزینه ابری در پروژه‌های هوش مصنوعی

اندازه درست منابع

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

مدل کوچک‌تر، فشرده‌سازی و مسیریابی

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

کش و بچینگ

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

مدیریت چرخه عمر داده‌ها

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

شفافیت هزینه برای هر تیم و هر مدل

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

چک‌لیست MLOps و کنترل هزینه

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

پرسش‌های متداول

آیا تیم کوچک هم به MLOps نیاز دارد؟

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

تفاوت MLOps با DevOps چیست؟

DevOps بر کد و زیرساخت تمرکز دارد. MLOps همان اصول را به داده و مدل هم گسترش می‌دهد و موضوعاتی مثل نسخه‌بندی داده، ثبت آزمایش‌ها و پایش کیفیت مدل را اضافه می‌کند.

سریع‌ترین راه کاهش هزینه هوش مصنوعی چیست؟

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

سرویس ابری مناسب کسب‌وکارتان را راه بیندازید

هزینه را پیش از ساخت برآورد کنید، ساعتی پرداخت کنید و برای انتخاب سرویس مناسب، درخواست مشاوره بدهید.