Пакування моделей ML

Розроблення моделей машинного навчання для продакшну

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Чому пакування важливе

  • Оптимізація продуктивності
  • Сумісність
  • Легше розгортання моделей

Методи пакування

  • Серіалізація: просто, легковажно та незалежно від мови
  • Пакування середовища: фіксація всього програмного середовища
  • Контейнеризація: портативне, відтворюване та ізольоване середовище
Розроблення моделей машинного навчання для продакшну

Як пакувати моделі ML

  • Серіалізація — зберігання та відновлення моделі ML

  • Пакування середовища — узгоджуване й відтворюване середовище для моделі ML

  • Контейнеризація — пакування моделі, залежностей і середовища в один "container"

Розроблення моделей машинного навчання для продакшну

Серіалізація моделей scikit-learn

Серіалізація моделі sklearn за допомогою 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)

Серіалізація моделі sklearn у форматі 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'][:])
Розроблення моделей машинного навчання для продакшну

Серіалізація моделей PyTorch і Tensorflow

Серіалізація моделі 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))

Серіалізація моделі 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)
Розроблення моделей машинного навчання для продакшну

Пакування середовища ML з Docker

  • Забезпечте середовище, у якому модель може працювати
  • virtualenv тощо створюють узгоджувані й відтворювані середовища
  • Контейнери Docker — самодостатні та легко розгортаються

docker

Розроблення моделей машинного навчання для продакшну

Приклад 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


<---- Встановіть робочий каталог


<---- Скопіюйте файл requirmentes.txt


<---- Встановіть пакети-залежності моделі


<---- Скопіюйте модель у контейнер


<---- Вкажіть, як запускати контейнер
Розроблення моделей машинного навчання для продакшну

Експеримент → робочий процес Docker

  1. Серіалізуйте навчений ML-модель у форматі на кшталт pickle, HDF5 або PyTorch.

  2. Законтейнеризуйте серіалізовану модель ML, її залежності та середовище

  3. Розгорніть Docker-образ у цільовому середовищі, напр., у хмарі

  4. Запустіть Docker‑контейнер із розгорнутого образу та виконайте модель ML.

  5. Використовуйте модель у контейнері через API або іншу точку доступу.

Робочий процес Docker

Розроблення моделей машинного навчання для продакшну

Давайте потренуємось!

Розроблення моделей машинного навчання для продакшну

Preparing Video For Download...