در این مستند به ادغام مدلهای یادگیری ماشین با سرورهای ابری پرداخته میشود. این راهنما شامل مراحل پیادهسازی، پیکربندی و اجرای مدلهای یادگیری ماشین در محیط ابری است و به شما کمک میکند تا بتوانید مدلهای یادگیری ماشین خود را به طور بهینه در سرورهای ابری پیادهسازی کرده و از قابلیتهای مقیاسپذیری و انعطافپذیری این محیطها بهرهمند شوید.
الزامات
- دسترسی به سرورهای ابری با دسترسی ریشه (Root Access)
- سیستمعامل لینوکس (اوبونتو ۲۰.۰۴ یا بالاتر)
- آشنایی با Python و کتابخانههای یادگیری ماشین مانند TensorFlow یا PyTorch
- ابزارهای Docker و Kubernetes برای مدیریت کانتینرها و استقرار مدلها
۱. نصب ابزارها و محیطهای مورد نیاز
مرحله ۱: نصب Python و کتابخانههای یادگیری ماشین
ابتدا باید Python و کتابخانههای مورد نیاز یادگیری ماشین را نصب کنید. در این مثال از کتابخانههای TensorFlow و scikit-learn استفاده میشود:
sudo apt-get update
sudo apt-get install -y python3-pip python3-dev
pip3 install --upgrade pip
pip3 install tensorflow scikit-learn
این دستورها Python و Pip را نصب کرده و سپس TensorFlow و scikit-learn را برای استفاده در پروژه یادگیری ماشین شما نصب میکند.
مرحله ۲: نصب Docker برای مدیریت کانتینرها
Docker یکی از ابزارهای مناسب برای اجرای مدلهای یادگیری ماشین در محیطهای مختلف است. ابتدا Docker را نصب کنید:
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
مرحله ۳: پیکربندی Docker برای اجرای مدلها
برای اجرای مدلهای یادگیری ماشین در کانتینرهای Docker، میتوانید یک Dockerfile ایجاد کنید که شامل تمامی وابستگیها و محیط اجرایی برای مدل شما باشد. به عنوان مثال، یک Dockerfile ساده برای اجرای مدلهای یادگیری ماشین با TensorFlow:
FROM tensorflow/tensorflow:latest
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
مرحله ۴: ساخت و اجرای کانتینر
برای ساخت کانتینر، از دستور زیر استفاده کنید:
docker build -t my-ml-model .
سپس کانتینر ساخته شده را اجرا کنید:
docker run -d -p 5000:5000 my-ml-model
این دستور مدل شما را بر روی پورت ۵۰۰۰ اجرا میکند و آماده سرویسدهی است.
۲. آمادهسازی و آموزش مدلهای یادگیری ماشین
مرحله ۱: آمادهسازی دادهها
ابتدا دادههای خود را برای آموزش مدل آماده کنید. برای این کار، از کتابخانههای مانند pandas
و numpy
برای پردازش دادهها استفاده کنید:
import pandas as pd
from sklearn.model_selection import train_test_split
data = pd.read_csv('data.csv')
X = data.drop('target', axis=1)
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
مرحله ۲: آموزش مدل
در این مرحله، مدل یادگیری ماشین خود را با استفاده از TensorFlow یا scikit-learn آموزش دهید. به عنوان مثال، یک مدل ساده شبکه عصبی با استفاده از TensorFlow:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu', input_shape=(X_train.shape[1],)),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2)
مرحله ۳: ذخیرهسازی مدل
پس از آموزش مدل، باید آن را برای استفاده در محیط تولید ذخیره کنید:
model.save('model.h5')
۳. استقرار مدلهای یادگیری ماشین
مرحله ۱: پیادهسازی API برای استقرار مدل
برای استقرار مدل در محیط تولید، میتوانید یک API ساده با استفاده از Flask یا FastAPI ایجاد کنید که درخواستهای کاربران را پردازش کند و پیشبینیهای مدل را ارائه دهد. به عنوان مثال، یک API ساده با Flask:
from flask import Flask, request, jsonify
import tensorflow as tf
app = Flask(__name__)
model = tf.keras.models.load_model('model.h5')
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
prediction = model.predict([data['input']])
return jsonify({'prediction': prediction.tolist()})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
مرحله ۲: اجرای API در کانتینر Docker
Dockerfile خود را بهروزرسانی کنید تا شامل اجرای API باشد:
FROM tensorflow/tensorflow:latest
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
سپس کانتینر را ساخته و اجرا کنید:
docker build -t my-ml-api .
docker run -d -p 5000:5000 my-ml-api
این دستور API شما را روی پورت ۵۰۰۰ اجرا میکند و مدل آماده پاسخگویی به درخواستها خواهد بود.
مرحله ۳: استفاده از Kubernetes برای مقیاسدهی
برای استقرار مدل در مقیاس بزرگتر و مدیریت خودکار کانتینرها، میتوانید از Kubernetes استفاده کنید. ابتدا باید یک فایل پیکربندی Kubernetes برای استقرار کانتینرها ایجاد کنید:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ml-model-deployment
spec:
replicas: 3
selector:
matchLabels:
app: ml-model
template:
metadata:
labels:
app: ml-model
spec:
containers:
- name: ml-model
image: my-ml-api
ports:
- containerPort: 5000
سپس این فایل را با استفاده از دستور kubectl
اجرا کنید:
kubectl apply -f ml-model-deployment.yaml
این دستور مدل شما را در چندین کانتینر اجرا میکند و مقیاسگذاری خودکار را فراهم میکند.
۴. نظارت بر عملکرد مدلها
برای نظارت بر عملکرد مدلها و منابع سیستم، میتوانید از ابزارهایی مانند Prometheus و Grafana استفاده کنید. با استفاده از این ابزارها میتوانید وضعیت مدلهای مستقر شده را مشاهده کرده و میزان استفاده از منابع را کنترل کنید.
مرحله ۱: نصب Prometheus
برای نصب Prometheus و مانیتورینگ منابع:
sudo apt-get install -y prometheus
sudo systemctl start prometheus
sudo systemctl enable prometheus
مرحله ۲: پیکربندی Grafana
Grafana را نصب کنید و به Prometheus متصل کنید تا داشبوردهای گرافیکی برای نظارت بر مدلها و منابع سیستم داشته باشید:
sudo apt-get install -y grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
نتیجهگیری
در این مستندات، به نحوه ادغام مدلهای یادگیری ماشین با سرورهای ابری پرداختیم. از طریق این راهنما، میتوانید مدلهای یادگیری ماشین خود را بهطور کارآمد در محیطهای ابری مستقر کرده و از مزایای مقیاسپذیری و مدیریت خودکار منابع استفاده کنید.