یادگیری ماشین بدون سرور یک روش کارآمد برای اجرای مدلهای یادگیری ماشین در محیط ابری است، بدون اینکه نیاز به مدیریت سرورهای زیرساخت داشته باشید. با استفاده از این روش، مدلهای یادگیری ماشین میتوانند به صورت خودکار اجرا و مقیاسپذیری شوند و تنها هزینه زمان محاسبه و استفاده از منابع را پرداخت میکنید. در این مستندات، به بررسی پیادهسازی یادگیری ماشین بدون سرور بر روی سرورهای ابری پرداخته میشود.
الزامات
- دسترسی به سرور ابری با دسترسی ریشه (Root Access)
- سیستمعامل اوبونتو ۲۰.۰۴ یا بالاتر
- نصب Docker و OpenFaaS برای مدیریت توابع بدون سرور
- آشنایی با Python و کتابخانههای یادگیری ماشین مانند TensorFlow یا scikit-learn
۱. مقدمهای بر یادگیری ماشین بدون سرور
در مدل یادگیری ماشین بدون سرور، مدلها به صورت توابع یا کانتینرها اجرا میشوند که میتوانند براساس تقاضا و بار کاری مقیاسپذیری شوند. این روش امکان پردازش حجم زیادی از دادهها را به صورت همزمان و با استفاده بهینه از منابع فراهم میکند. مزایای استفاده از مدلهای یادگیری ماشین بدون سرور شامل کاهش هزینهها، مقیاسپذیری خودکار، و کاهش نیاز به مدیریت زیرساخت است.
۲. پیادهسازی یادگیری ماشین بدون سرور با OpenFaaS
یکی از ابزارهای محبوب برای پیادهسازی Serverless Machine Learning، OpenFaaS است که میتواند توابع یادگیری ماشین را به صورت سرورلس اجرا کند.
مرحله ۱: نصب Docker و OpenFaaS
ابتدا Docker و Docker Compose را بر روی سرور نصب کنید:
sudo apt-get update
sudo apt-get install -y docker.io docker-compose
sudo systemctl start docker
sudo systemctl enable docker
سپس OpenFaaS را نصب کنید:
git clone https://github.com/openfaas/faas
cd faas
./deploy_stack.sh
این اسکریپت OpenFaaS را بر روی سرور نصب میکند و شما میتوانید از OpenFaaS برای پیادهسازی توابع یادگیری ماشین بدون سرور استفاده کنید.
مرحله ۲: ایجاد یک تابع برای مدل یادگیری ماشین
برای ایجاد تابع جدید، از faas-cli
استفاده کنید. ابتدا faas-cli
را نصب کنید:
curl -sL https://cli.openfaas.com | sudo sh
سپس یک تابع جدید برای مدل یادگیری ماشین خود ایجاد کنید:
faas-cli new --lang python3 ml-function
مرحله ۳: پیادهسازی مدل یادگیری ماشین
به فایل handler.py
مراجعه کنید و کد مدل یادگیری ماشین را در آن بنویسید. به عنوان مثال، یک مدل ساده برای پیشبینی قیمت خانه با استفاده از scikit-learn:
import json
from sklearn.linear_model import LinearRegression
import numpy as np
# نمونهسازی و آموزش مدل (این بخش برای سادگی ثابت است)
model = LinearRegression()
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([150, 200, 250, 300, 350])
model.fit(X, y)
def handle(event, context):
data = json.loads(event.body)
prediction = model.predict(np.array(data['features']).reshape(-1, 1))
return {"prediction": prediction.tolist()}
این کد یک مدل خطی ساده برای پیشبینی مقادیر بر اساس ورودیهای داده شده پیادهسازی میکند.
مرحله ۴: ساخت و استقرار تابع
برای ساخت و استقرار تابع، از دستور زیر استفاده کنید:
faas-cli up -f ml-function.yml
این دستور تابع ml-function
را ایجاد کرده و آن را در محیط OpenFaaS مستقر میکند.
مرحله ۵: فراخوانی تابع یادگیری ماشین
پس از استقرار تابع، میتوانید مدل یادگیری ماشین خود را با استفاده از curl
فراخوانی کنید:
curl -X POST http://<server-ip>:8080/function/ml-function -d '{"features": [6]}'
این دستور درخواست پیشبینی را به مدل ارسال کرده و نتیجه را برمیگرداند.
۳. مدیریت و مقیاسپذیری خودکار
مرحله ۱: تنظیمات مقیاسپذیری در OpenFaaS
OpenFaaS به طور خودکار توابع را براساس نیاز مقیاس میکند. برای کنترل تعداد توابع در حال اجرا، میتوانید فایل stack.yml
را ویرایش کرده و تعداد رپلیکیشنها را تنظیم کنید:
functions:
ml-function:
image: ml-function:latest
environment:
min_replicas: 1
max_replicas: 5
با این تنظیمات، تعداد رپلیکیشنهای تابع ml-function
بین ۱ تا ۵ مقیاس میشود.
۴. ذخیرهسازی و مدیریت مدلها با استفاده از Docker
به جای آموزش مدل در هر اجرا، میتوانید مدلهای یادگیری ماشین را به صورت فایل ذخیره کرده و در هر اجرا فقط از مدل بارگذاریشده استفاده کنید. این کار باعث کاهش زمان اجرا میشود.
مرحله ۱: ذخیره مدل در Docker
پس از آموزش مدل، مدل را به عنوان فایل ذخیره کنید. برای مثال، با استفاده از joblib
مدل را ذخیره کنید:
import joblib
# آموزش مدل
model = LinearRegression()
model.fit(X, y)
# ذخیره مدل
joblib.dump(model, '/path/to/model.pkl')
مرحله ۲: بارگذاری مدل در تابع OpenFaaS
مدل ذخیرهشده را در فایل handler.py
بارگذاری کنید:
import json
import joblib
import numpy as np
# بارگذاری مدل
model = joblib.load('/path/to/model.pkl')
def handle(event, context):
data = json.loads(event.body)
prediction = model.predict(np.array(data['features']).reshape(-1, 1))
return {"prediction": prediction.tolist()}
با این روش، مدل از فایل بارگذاری میشود و نیازی به آموزش در هر بار اجرای تابع نیست.
۵. نظارت و ارزیابی مدلها
برای نظارت بر عملکرد و دقت مدلها، میتوانید از ابزارهای نظارتی مانند Prometheus و Grafana استفاده کنید.
مرحله ۱: نصب Prometheus و Grafana
ابتدا Prometheus را نصب کنید:
sudo apt-get install -y prometheus
sudo systemctl start prometheus
sudo systemctl enable prometheus
سپس Grafana را نصب کنید:
sudo apt-get install -y grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
مرحله ۲: پیکربندی داشبوردهای نظارت
با استفاده از Prometheus و Grafana، میتوانید داشبوردهای نظارتی برای نظارت بر عملکرد مدلها ایجاد کنید و اطلاعات مربوط به درخواستها و زمانهای پاسخدهی را مشاهده کنید.
نتیجهگیری
در این مستندات، به بررسی و پیادهسازی یادگیری ماشین بدون سرور بر روی سرورهای ابری با استفاده از OpenFaaS پرداخته شد. این رویکرد به شما امکان میدهد مدلهای یادگیری ماشین خود را به صورت خودکار و مقیاسپذیر اجرا کنید و از مزایای مدیریت سادهتر و هزینه کمتر برخوردار شوید. با استفاده از این راهنما، میتوانید سرویسهای یادگیری ماشین بدون سرور را برای کاربردهای مختلف پیادهسازی کنید.