ML modellerini paketleme

Üretim İçin Machine Learning Modelleri Geliştirme

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Paketleme neden önemli

  • Performansı optimize et
  • Uyumluluğu sağla
  • Modellerin dağıtımını kolaylaştır

Paketleme Yöntemleri

  • Serileştirme: basit, hafif ve dilden bağımsız
  • Ortam paketleme: tüm yazılım ortamını yakalar
  • Konteynerleştirme: taşınabilir, tekrarlanabilir ve yalıtılmış ortam
Üretim İçin Machine Learning Modelleri Geliştirme

ML modelleri nasıl paketlenir

  • Serileştirme - bir ML modelini saklama ve geri yükleme

  • Ortam paketleme - ML model için tutarlı ve tekrarlanabilir bir ortam

  • Konteynerleştirme - modeli, bağımlılıkları ve ortamı tek bir "konteyner" içinde paketleme

Üretim İçin Machine Learning Modelleri Geliştirme

scikit-learn modellerini serileştirme

Bir sklearn modelini pickle ile serileştirme:

import pickle

model = ...  # Train the scikit-learn model

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

# Load the serialized model from the file
with open('model.pkl', 'rb') as f:
    model = pickle.load(f)

Bir sklearn modelini HDF5 formatında serileştirme:

import h5py
import numpy as np
from sklearn.externals import joblib

model = ...  # Train the scikit-learn model

# Serialize the model to an HDF5 file
with h5py.File('model.h5', 'w') as f:
    f.create_dataset('model_weights',
    data=joblib.dump(model))

# Load the serialized model from the HDF5 file
with h5py.File('model.h5', 'r') as f:
    model = joblib.load(f['model_weights'][:])
Üretim İçin Machine Learning Modelleri Geliştirme

PyTorch ve Tensorflow modellerini serileştirme

Bir PyTorch modelini serileştirme:

import torch

# Train a PyTorch model and store it in a variable
trained_model = ...

# Serialize the trained model to a file
serialized_model_path = 'model.pt'
torch.save(trained_model.state_dict(), serialized_model_path)

# Load the serialized model from a file
loaded_model = ... # Initialize the model
loaded_model.load_state_dict(
    torch.load(serialized_model_path))

Bir Tensorflow modelini serileştirme:

import tensorflow as tf

# Train a Tensorflow model
trained_model = ...

# Save the trained model to a directory 
saved_model_directory = 'model/'
tf.saved_model.save
    (trained_model, saved_model_directory)

# Load the saved model from the directory 
loaded_model = tf.saved_model.load(
    saved_model_directory)
Üretim İçin Machine Learning Modelleri Geliştirme

Docker ile ML ortam paketleme

  • Modelin ortamı çalışmasına izin vermeli
  • virtualenv vb. tutarlı ve tekrarlanabilir ortamlar oluşturur
  • Docker konteynerleri kolay dağıtılabilen, bağımsız birimlerdir

docker

Üretim İçin Machine Learning Modelleri Geliştirme

Örnek Dockerfile

# Use an existing image as the base image
FROM python:3.8-slim

# Set the working directory
WORKDIR /app

# Copy the requirements file to the image
COPY requirements.txt .

# Install the required dependencies
RUN pip install -r requirements.txt

# Copy the ML model and its dependencies to the image
COPY model/ .

# Set the entrypoint to run the model
ENTRYPOINT ["python", "run_model.py"]

<---- Python 3.8 taban imajını kullan


<---- Çalışma dizinini ayarla


<---- requirements.txt dosyasını kopyala


<---- Modelin bağımlı paketlerini kur


<---- Modeli konteynere kopyala


<---- Konteynerin nasıl başlayacağını belirt
Üretim İçin Machine Learning Modelleri Geliştirme

Deney -> Docker iş akışı

  1. Eğitilmiş ML modelini pickle, HDF5 veya PyTorch gibi bir formatla serileştir.

  2. Serileştirilmiş ML modelini, bağımlılıklarını ve ortamı konteynerleştir

  3. Docker imajını bulut platformu gibi bir hedef ortama dağıt

  4. Dağıtılan Docker imajından konteyneri çalıştır ve ML modelini çalıştır.

  5. Konteyner içindeki modeli bir API veya başka bir erişim noktasıyla kullan.

Docker İş Akışı

Üretim İçin Machine Learning Modelleri Geliştirme

Hadi pratik yapalım!

Üretim İçin Machine Learning Modelleri Geliştirme

Preparing Video For Download...