Împachetarea modelelor ML

Dezvoltarea modelelor de Machine Learning pentru producție

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

De ce contează împachetarea

  • Optimizați performanța
  • Asigurați compatibilitatea
  • Facilitează implementarea modelelor

Metode de împachetare

  • Serializare: simplă, ușoară și independentă de limbaj
  • Împachetarea mediului: captează întreg mediul software
  • Containerizare: mediu portabil, reproductibil și izolat
Dezvoltarea modelelor de Machine Learning pentru producție

Cum se împachetează modelele ML

  • Serializare - stocarea și recuperarea unui model ML

  • Împachetarea mediului - mediu consistent și reproductibil pentru modelul ML

  • Containerizare - împachetarea modelului, dependențelor și mediului într-un singur "container"

Dezvoltarea modelelor de Machine Learning pentru producție

Serializarea modelelor scikit-learn

Serializarea unui model sklearn cu 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)

Serializarea unui model sklearn în format 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'][:])
Dezvoltarea modelelor de Machine Learning pentru producție

Serializarea modelelor PyTorch și TensorFlow

Serializarea unui model 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))

Serializarea unui model 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)
Dezvoltarea modelelor de Machine Learning pentru producție

Împachetarea mediului ML cu Docker

  • Asigurați mediul de execuție al modelului
  • virtualenv etc. creează medii consistente și reproductibile
  • Containerele Docker sunt unități autonome, ușor de implementat

docker

Dezvoltarea modelelor de Machine Learning pentru producție

Exemplu de 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"]

<---- Utilizează imaginea de bază Python 3.8


<---- Setează directorul de lucru


<---- Copiază fișierul requirements.txt


<---- Instalează pachetele dependente ale modelului


<---- Copiază modelul în container


<---- Indică containerului cum să pornească
Dezvoltarea modelelor de Machine Learning pentru producție

Experiment -> flux de lucru Docker

  1. Serializați modelul ML antrenat folosind un format precum pickle, HDF5 sau PyTorch.

  2. Containerizați modelul ML serializat, dependențele și mediul

  3. Implementați imaginea Docker într-un mediu țintă, de ex. o platformă cloud

  4. Rulați containerul Docker din imaginea implementată și executați modelul ML.

  5. Utilizați modelul din container printr-un API sau alt punct de acces.

Flux de lucru Docker

Dezvoltarea modelelor de Machine Learning pentru producție

Să exersăm!

Dezvoltarea modelelor de Machine Learning pentru producție

Preparing Video For Download...