ML मॉडल पैकेजिंग

प्रोडक्शन के लिए मशीन लर्निंग मॉडल विकसित करना

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

पैकेजिंग क्यों ज़रूरी है

  • परफॉर्मेंस ऑप्टिमाइज़ करें
  • कम्पैटिबिलिटी सुनिश्चित करें
  • मॉडल्स को डिप्लॉय करना आसान बनता है

पैकेजिंग मेथड्स

  • Serialization: सरल, हल्का, और भाषा-एग्नॉस्टिक
  • Environment packaging: पूरा सॉफ्टवेयर एनवायरनमेंट कैप्चर करें
  • Containerization: पोर्टेबल, रिप्रोड्यूसिबल, और आइसोलेटेड एनवायरनमेंट
प्रोडक्शन के लिए मशीन लर्निंग मॉडल विकसित करना

ML मॉडल कैसे पैकेज करें

  • Serialization - एक ML मॉडल को स्टोर और रिट्रीव करना

  • Environment packaging - ML मॉडल के लिए कंसिस्टेंट और रिप्रोड्यूसिबल एनवायरनमेंट

  • Containerization - मॉडल, डिपेंडेंसीज़, और एनवायरनमेंट को एक ही "container" में पैक करना

प्रोडक्शन के लिए मशीन लर्निंग मॉडल विकसित करना

scikit-learn मॉडल्स को serialize करना

scikit-learn मॉडल को pickle से serialize करना:

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)

scikit-learn मॉडल को HDF5 फॉर्मेट में serialize करना:

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 मॉडल्स को serialize करना

PyTorch मॉडल को serialize करना:

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 मॉडल को serialize करना:

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)
प्रोडक्शन के लिए मशीन लर्निंग मॉडल विकसित करना

Docker के साथ ML एनवायरनमेंट पैकेजिंग

  • सुनिश्चित करें कि मॉडल का एनवायरनमेंट उसे चला सके
  • 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 बेस इमेज इस्तेमाल करें


<---- वर्किंग डायरेक्टरी सेट करें


<---- requirements.txt फ़ाइल कॉपी करें


<---- मॉडल की डिपेंडेंसीज़ इंस्टॉल करें


<---- मॉडल को कंटेनर में कॉपी करें


<---- कंटेनर को स्टार्ट करने का तरीका बताएं
प्रोडक्शन के लिए मशीन लर्निंग मॉडल विकसित करना

Experiment -> Docker वर्कफ़्लो

  1. Serialize किए हुए ML मॉडल को pickle, HDF5, या PyTorch जैसे फॉर्मेट में सेव करें.

  2. Containerize करें: serialized मॉडल, डिपेंडेंसीज़, और एनवायरनमेंट

  3. Deploy करें: Docker इमेज को किसी टारगेट एनवायरनमेंट, जैसे क्लाउड प्लेटफ़ॉर्म, पर

  4. Run करें: डिप्लॉय की गई इमेज से Docker कंटेनर चलाएँ और ML मॉडल चलाएँ।

  5. Use करें: कंटेनर के भीतर मॉडल को किसी API या अन्य एक्सेस पॉइंट से।

Docker Workflow

प्रोडक्शन के लिए मशीन लर्निंग मॉडल विकसित करना

अभ्यास करते हैं!

प्रोडक्शन के लिए मशीन लर्निंग मॉडल विकसित करना

Preparing Video For Download...