Balení ML modelů

Developing Machine Learning Models for Production

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Proč je balení důležité

  • Optimalizace výkonu
  • Zajištění kompatibility
  • Usnadnění nasazení modelů

Metody balení

  • Serializace: jednoduchá, nenáročná a jazykově nezávislá
  • Balení prostředí: zachycení celého softwarového prostředí
  • Kontejnerizace: přenosné, reprodukovatelné a izolované prostředí
Developing Machine Learning Models for Production

Jak balit ML modely

  • Serializace – ukládání a načítání ML modelu

  • Balení prostředí – konzistentní a reprodukovatelné prostředí pro ML model

  • Kontejnerizace – zabalení modelu, závislostí a prostředí do jednoho „kontejneru"

Developing Machine Learning Models for Production

Serializace modelů scikit-learn

Serializace modelu sklearn pomocí pickle:

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)

Serializace modelu sklearn ve formátu HDF5:

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'][:])
Developing Machine Learning Models for Production

Serializace modelů PyTorch a Tensorflow

Serializace modelu PyTorch:

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))

Serializace modelu Tensorflow:

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)
Developing Machine Learning Models for Production

Balení ML prostředí pomocí Dockeru

  • Zajistěte, aby prostředí umožňovalo spuštění modelu
  • virtualenv atd. vytváří konzistentní a reprodukovatelná prostředí
  • Docker kontejnery jsou samostatné jednotky snadno nasaditelné

docker

Developing Machine Learning Models for Production

Příklad 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"]

<---- Použití základního obrazu Python 3.8


<---- Nastavení pracovního adresáře


<---- Zkopírování souboru requirements.txt


<---- Instalace závislých balíčků modelu


<---- Zkopírování modelu do kontejneru


<---- Instrukce pro spuštění kontejneru
Developing Machine Learning Models for Production

Experiment -> pracovní postup Docker

  1. Serializujte natrénovaný ML model ve formátu pickle, HDF5 nebo PyTorch.

  2. Kontejnerizujte serializovaný ML model, jeho závislosti a prostředí

  3. Nasaďte Docker image do cílového prostředí, např. cloudové platformy

  4. Spusťte Docker kontejner z nasazeného image a spusťte ML model.

  5. Používejte model v kontejneru přes API nebo jiný přístupový bod.

Pracovní postup Docker

Developing Machine Learning Models for Production

Pojďme si procvičit!

Developing Machine Learning Models for Production

Preparing Video For Download...