برنامه نویسی

مدل های ارکستر: یادگیری ماشین با آهنگسازی Docker

داکر آهنگسازی ابزاری قدرتمند برای تعریف و مدیریت برنامه های Docker Multi-Container به روشی ساده و کارآمد است. در این مقاله ، اصول اولیه آهنگسازی Docker را کشف خواهیم کرد و چگونه می توانید استفاده از آن را برای ارکستر برنامه های خود شروع کنید.

Docker آهنگسازی چیست؟

Docker Compose ابزاری است که به شما امکان می دهد برنامه های Docker Multi-Container را با استفاده از یک فایل YAML برای پیکربندی خدمات برنامه خود تعریف و اجرا کنید. سپس با یک دستور واحد می توانید تمام ظروف تعریف شده را ایجاد و اجرا کنید. این امر باعث می شود ایجاد و پیکربندی محیط های پیچیده توسعه و تولیدی که چندین سرویس برای تعامل با یکدیگر نیاز دارند ، آسانتر شود.

اختیاری
نصب آهنگسازی Docker

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

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

$ brew install docker-compose

اکنون نسخه نصب شده را بررسی کنید:
$ docker-compose --version

قبل از تست آهنگسازی با یک پروژه یادگیری ماشین ، بیایید تفاوت بین آهنگسازی Docker و Kubernetes را روشن کنیم.

Docker آهنگسازی:

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

چگونه کار می کند: شما از پرونده ای به نام استفاده می کنید docker-compose.yml برای تعریف از ظروف شما و نحوه اتصال آنها به یکدیگر. به عنوان مثال ، می توانید بگویید: “من می خواهم برنامه خود را راه اندازی کنم و آن را به یک پایگاه داده وصل کنم.” آهنگسازی با یک دستور واحد از آن مراقبت خواهد کرد.

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

Kubernetes:

چه کاری انجام می دهد: Kubernetes بسیار بزرگتر و قدرتمندتر از آهنگسازی Docker است. نه تنها به شما در راه اندازی ظروف کمک می کند ، بلکه به مدیریت برنامه های تولید ، روی سرورهای واقعی ، به طور کارآمد و در مقیاس نیز کمک می کند.

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

ایده آل برای: برنامه های تولید در مقیاس بزرگ که همیشه باید در دسترس باشند و ترافیک سنگین را کنترل کنند. شرکت های بزرگ یا پروژه هایی که انتظار رشد چشمگیر را دارند ، اغلب از Kubernetes استفاده می کنند.

به طور خلاصه:

Docker Compose برای راه اندازی و مدیریت چندین ظروف به سرعت در دستگاه محلی شما ، ایده آل برای توسعه یا آزمایش است.

Kubernetes برای مدیریت برنامه های در مقیاس بزرگ در تولید است ، جایی که شما به کنترل ، ثبات و مقیاس پذیری بیشتری نیاز دارید.

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

حال ، بیایید به معامله واقعی برسیم. 😎

من به شما نشان می دهم که چگونه می توانید آهنگسازی Docker را در یک پروژه ML اعمال کنید. ما یک برنامه ساده ایجاد خواهیم کرد که یک مدل یادگیری ماشین را آموزش می دهد و یک سرویس وب را برای پیش بینی ها در معرض نمایش قرار می دهد.

هدف پروژه

پروژه ما شامل دو سرویس خواهد بود:

خدمات ML: یک مدل یادگیری ماشین آموزش دیده با استفاده از بیزار که از طریق یک API Web Flask در معرض دید قرار می گیرد.

سرویس بانک اطلاعاتی: یک پایگاه داده PostgreSQL برای ذخیره نتایج پیش بینی.

ساختار پروژه

ساختار اصلی پرونده به شرح زیر خواهد بود:

ml_project/
│
├── docker-compose.yml
├── ml_service/
│   ├── Dockerfile
│   ├── app.py
│   ├── model.py
│   ├── requirements.txt
└── db/
    ├── init.sql
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

1. تعریف کنید docker-compose.yml

اولین قدم تعریف خدمات در یک است docker-compose.yml پرونده

version: '3'
services:
  ml_service:
    build: ./ml_service
    ports:
      - "5000:5000"
    depends_on:
      - db
  db:
    image: postgres
    environment:
      POSTGRES_DB: ml_results
      POSTGRES_USER: ml_user
      POSTGRES_PASSWORD: ml_password
    volumes:
      - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql
    ports:
      - "5432:5432"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. سرویس یادگیری ماشین را ایجاد کنید
در داخل ml_service/ پوشه ، ما ایجاد می کنیم Dockerfile این امر وابستگی های لازم پایتون را نصب می کند ، یک مدل را آموزش می دهد و سرویس را در معرض نمایش می گذارد.

داک (برای سرویس ML)

FROM python:3.8

WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

CMD ["python", "app.py"]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

requirements.txt
در اینجا ما وابستگی هایی را که از آنها استفاده خواهیم کرد تعریف می کنیم ، مانند Flask برای سرور وب و Scikit-Learn برای مدل ML.

Flask==2.1.0
scikit-learn==1.0.2
psycopg2-binary==2.9.3  # Para conectar con PostgreSQL
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

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

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
import pickle

def train_model():
    # Load sample dataset
    iris = load_iris()
    X, y = iris.data, iris.target

    # Train model
    model = LogisticRegression()
    model.fit(X, y)

    # Save model to file
    with open('model.pkl', 'wb') as f:
        pickle.dump(model, f)

if __name__ == "__main__":
    train_model()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این کد یک مدل طبقه بندی ساده را آموزش می دهد و آن را به عنوان یک ذخیره می کند model.pkl پرونده

app.py
این پرونده فلاسک است که API را برای پیش بینی با استفاده از مدل آموزش دیده ایجاد می کند. علاوه بر این ، پیش بینی ها را در پایگاه داده ذخیره می کند.

from flask import Flask, request, jsonify
import pickle
import psycopg2

app = Flask(__name__)

# Load trained ML model
with open('model.pkl', 'rb') as f:
    model = pickle.load(f)

# Connect to PostgreSQL database
conn = psycopg2.connect(
    dbname="ml_results", user="ml_user", password="ml_password", host="db"
)
cur = conn.cursor()

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json
    X_new = [data['features']]

    # Make prediction
    prediction = model.predict(X_new)[0]

    # Save prediction to database
    cur.execute("INSERT INTO predictions (input, result) VALUES (%s, %s)", (str(X_new), int(prediction)))
    conn.commit()

    return jsonify({"prediction": int(prediction)})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این سرویس Flask در بندر 5000 گوش می دهد و پس از دریافت درخواست پست با ویژگی های ورودی ، پیش بینی را برمی گرداند و نتیجه را در PostgreSQL ذخیره می کند.

3. پایگاه داده را پیکربندی کنید
در db/ دایرکتوری ، ما ایجاد می کنیم init.sql پرونده برای اولیه سازی پایگاه داده با یک جدول برای ذخیره پیش بینی ها.

init.sql

CREATE TABLE predictions (
    id SERIAL PRIMARY KEY,
    input TEXT,
    result INTEGER
);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این اسکریپت با شروع کانتینر postgresql به طور خودکار اجرا می شود و یک جدول به نام ایجاد می کند predictionsبشر

4. پروژه را اجرا کنید
اکنون که همه چیز تنظیم شده است ، می توانید کل پروژه را با آهنگسازی Docker اجرا کنید. از دایرکتوری پروژه root ، اجرا کنید:

$ docker-compose up

این باعث می شود Docker آهنگسازی شود:

  • تصویر سرویس یادگیری ماشین را بسازید.
  • ظروف ML و پایگاه داده را شروع کنید.
  • مدل Flask و سرور وب را در پورت 5000 اجرا کنید.

5. API را آزمایش کنید
برای پیش بینی ، درخواست پست را به http://localhost:5000/predict با بدنه JSON حاوی ویژگی های مجموعه داده.

نمونه فرمان curl:
$ curl -X POST http://localhost:5000/predict -H "Content-Type: application/json" -d '{"features": [5.1, 3.5, 1.4, 0.2]}'

اگر همه چیز به درستی پیکربندی شود ، پاسخی مانند:

{
“پیش بینی”: 0
}

پایان
با آهنگسازی Docker ، ما یک پروژه یادگیری ماشین ایجاد کرده ایم که شامل یک سرویس وب برای پیش بینی با یک مدل ML و همچنین یک پایگاه داده PostgreSQL برای ذخیره نتایج است. Docker آهنگسازی مدیریت این خدمات را در محیط های توسعه و تولید ساده می کند و به شما امکان می دهد با چندین ظروف به صورت هماهنگ کار کنید.

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

اکنون شما آماده استفاده از آهنگسازی Docker در پروژه های پیچیده تر یادگیری ماشین هستید!

نویسنده: یهاری آریاس.
github: yharyarias
LinkedIn: yharyarias
اینستاگرام: @ia.fania

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا