Emballer des modèles de Machine Learning

Déployer des modèles de Machine Learning en production

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Pourquoi l'emballage est important

  • Optimiser la performance
  • Assurer la compatibilité
  • Faciliter le déploiement des modèles

Méthodes d'emballage

  • Sérialisation : simple, légère et indépendante du langage
  • Emballage d'environnement : capter tout l'environnement logiciel
  • Conteneurisation : environnement portable, reproductible et isolé
Déployer des modèles de Machine Learning en production

Comment emballer des modèles de Machine Learning

  • Sérialisation – stocker et récupérer un modèle de Machine Learning

  • Emballage d'environnement – environnement uniforme et reproductible pour le modèle de Machine Learning

  • Conteneurisation – emballer le modèle, ses dépendances et l'environnement dans un « conteneur »

Déployer des modèles de Machine Learning en production

Sérialiser des modèles scikit-learn

Sérialiser un modèle sklearn avec 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)

Sérialiser un modèle sklearn au 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'][:])
Déployer des modèles de Machine Learning en production

Sérialiser des modèles PyTorch et Tensorflow

Sérialiser un modèle 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))

Sérialiser un modèle 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)
Déployer des modèles de Machine Learning en production

Emballer l'environnement ML avec Docker

  • Veiller à ce que l'environnement du modèle lui permette de s'exécuter
  • virtualenv, etc. : créer des environnements uniformes et reproductibles
  • Les conteneurs Docker sont autonomes et faciles à déployer

docker

Déployer des modèles de Machine Learning en production

Exemple 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"]

<---- Utiliser l'image de base Python 3.8


<---- Définir le répertoire de travail


<---- Copier le fichier requirements.txt


<---- Installer les dépendances du modèle


<---- Copier le modèle dans le conteneur


<---- Indiquer comment démarrer le conteneur
Déployer des modèles de Machine Learning en production

Expérimentation -> flux de travail Docker

  1. Sérialiser le modèle de Machine Learning entraîné au moyen d'un format comme pickle, HDF5 ou PyTorch.

  2. Conteneuriser le modèle sérialisé, ses dépendances et l'environnement

  3. Déployer l'image Docker dans un environnement cible, p. ex. une plateforme infonuagique

  4. Exécuter le conteneur Docker à partir de l'image déployée et exécuter le modèle de Machine Learning.

  5. Utiliser le modèle dans le conteneur via une API ou un autre point d'accès.

Flux de travail Docker

Déployer des modèles de Machine Learning en production

Passons à la pratique !

Déployer des modèles de Machine Learning en production

Preparing Video For Download...