ابرآراز | ArazCloud

ادغام مدل‌های یادگیری ماشین با محیط سرورهای ابری

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

الزامات

  • دسترسی به سرورهای ابری با دسترسی ریشه (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

نتیجه‌گیری

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