40 گام به سوی آینده‌ای هوشمند - مجموعه وبینارهای رایگان در حوزه هوش مصنوعی
Filter by دسته‌ها
chatGTP
آموزش هوش مصنوعی و انواع آن
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
پایتون و ابزارهای یادگیری عمیق
کتابخانه‌ های یادگیری عمیق
یادگیری با نظارت
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
اخبار
تیتر یک
رسانه‌ها
آموزش پردازش زبان طبیعی
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
رویدادها
کاربردهای هوش مصنوعی
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
 مقیاس‌بندی خوشه‌ها به‌صورت فعال با استفاده از پیش‌بینی FBProphet

مقیاس‌بندی خوشه‌ها به‌صورت فعال با استفاده از پیش‌بینی FBProphet


در پروژه‌ اخیرم، موفق شدم اندازه‌ خوشه cluster را بر اساس پیش‌بینی بار به‌صورت فعال مدیریت کنم. در این نوشتار، پروژه‌ مذکور را توضیح می‌دهیم، قابلیت‌های داخلی موجود در AWS را به‌صورت دقیق مورد بررسی قرار می‌دهیم، دلایل استفاده از FBProhphet را مرور می‌کنیم و نحوه‌ پیاده‌سازی این راهکار را با هم می‌بینیم.

در این متن، منظور از کلمه‌ خوشه‌، مجموعه‌‌نمونه‌های Amazon EC2 است.


قابلیت‌های داخلی AWS

AWS دو قابلیت داخلی دارد که در کاهش و افزایش اندازه‌ خوشه کاربرد دارند؛ این دو قابلیت، عبارت‌اند از: مقیاس‌‌بندی پویا Dynamic و مقیاس‌بندی پیش‌بیی کننده Predictive .

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

 با این حال، واکنشی بودن این رویکرد و زمانبر بودن تغییر اندازه‌ خوشه، بر روی زمان لازم برای انجام کار و تجربه‌ مشتریان تأثیر منفی می‌گذارد.

مقیاس‌بندی پیش‌بینی کننده: این قابلیت که از طریق AWS ارائه می‌شود، می‌تواند بر اساس داده‌هایی که طی دو هفته‌ گذشته در منبع استفاده شده است، دو روز بعدی را پیش‌بینی کند. سپس، در شرایطی که انتظار بار بیشتری داریم، می‌توان از این پیش‌بینی‌ها برای تغییر اندازه‌ خوشه‌ها به‌صورت فعالانه استفاده کرد. بدین ترتیب، مشکلی که در روش مقیاس‌بندی پویا وجود داشت، تا حدی حل می‌شود.

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

پیش‌بینی با استفاده از Facebook Prophet

Prophet یک کتابخانه‌ پیش‌بینی است که   توسط فیسبوک معرفی شده است. این کتابخانه برای ارائه‌ پیش‌بینی‌هایی به کار می‌رود که می‌توان از آن‌ها در مقیاس‌بندی خوشه‌ها استفاده کرد. انتخاب معیار درست، نقشی تعیین‌کننده در عملکرد مناسب این پیش‌بینی‌ها دارد.

AWS از طریق رابط برنامه‌نویسی کاربردی CloudWatch چندین معیار پیشنهاد می‌کند: میانگین مصرف CPU، ماکزیمم مصرف CPU، تعداد گره‌ها Node count ، حافظه‌ اشغال‌شده در فواصل زمانی مشخص. بعد از ارزیابی مسئله‌ای که در دست داریم، تصمیم گرفتیم از معیارهای مصرف CPU و تعداد گره‌ها استفاده کنیم.

استفاده از Facebook Prophet

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

در استفاده از رابط برنامه‌نویسی کاربردی Prophet باید به چندین نکته توجه داشت. Prophet دو مدل رشد Growth model اصلی ارائه می‌دهد: مدل‌ رشد خطی مدل‌ رشد خطی Linear growth model و مدل رشد لوجیستیک Logistic growth model (جزئیات هر کدام از این مدل‌ها در مقاله آورده شده است).

علاوه بر این مدل‌ها، قابلیت‌های دیگری هم در Prophet وجود دارد که امکان ارائه‌ الگوهای روزانه، هفتگی و سالانه را فراهم می‌کند؛ دوره‌های زمانی و ترتیب آن‌ها از سوی متخصص حوزه تعیین می‌شود. به همین دلیل، تحلیلگرانی که در این حوزه تخصص دارند، قادر هستند Prophet را به‌سادگی در آموزش مدل‌ها به کار ببرند.

یکی از نکات منحصربه‌فرد مدل Prophet پیاده‌سازی آن در زبان برنامه‌نویسی Python است؛ در این زبان، ساختار داده‌های آموزشی باید به شکل pandas و دارای دو ستون ‘ds’  و ‘y’ باشد (‘ds’ مربوط به برچسب‌های زمانی timestamps و ‘y’ نشان‌دهنده‌ مقدار معیاری که قرار است پیش‌بینی شود).

قسمتی از کد زیر در تولید پیش‌بینی‌ کاربرد دارد:

from fbprophet import Prophet# Define parameters of modelprophet = ( Prophet(growth = ‘logistic’)  .add_seasonality(name=’daily’, period= 1, fourier_order= specified_fourier_order_daily)  .add_seasonality(name=’weekly’, period=7, fourier_order=specified_fourier_order_daily)  )# Fit prophet model on training data prophet.fit(df)# Prepare future Dataframe for the time period to forecast, to store the forecasted values future_df = prophet.make_future_dataframe(freq='min', periods = time_period_to_forecast)# Forecast the values for the specified time frame   forecast_df = prophet.predict(future_df) 

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

بعد از آموزش، با استفاده از دستور plot_component در Prophet، می‌توان نموداری رسم کرد، تا رویه‌ها و الگوهای زمانی مدل مشخص شود.

fig2 = prophet.plot_components(forecast_df) display(fig2) 

این تابع، نموداری مشابه تصویر پایین رسم می‌کند. نمودار اصلی بسته به رفتار زیربنایی داده‌ها متفاوت خواهد بود.

کتابخانه متن باز

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

# Code to plot prophet forecast   prophet.plot(forecasted_df) 

این تابع نیز نموداری شبیه به شکل پایین رسم می‌کند:

نمودار

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

مقیاس‌بندی فعال اندازه‌ خوشه در AWS

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

می‌توان بر روی یک نمونه‌ EC2 دیگر یا با استفاده از تابع Lambda، یک اسکریپت script دیگر را تنظیم کرد که می‌تواند به‌صورت لحظه‌ای معیارهای خوشه را دریافت کند. AWS یک رابط برنامه‌نویسی کاربردی معرفی می‌کند که در جمع‌آوری معیارهای گوناگون (همچون گنجایش موردنظر (نمونه‌ها)، گنجایش کنونی (نمونه‌ها) و غیره) کاربرد دارد.

با بررسی منطقی این موارد به همراه معیارهای پیش‌بینی‌شده می‌توان اندازه‌ خوشه را به‌صورت فعالانه تغییر داد و تجربه‌ای بهتر برای مشتریان رقم زد.


میانگین امتیاز / 5. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
[wpforms id="48325"]