Skip to content

Utiliser un Makefile pour MLOps

Introduction

Ce tutoriel explique comment utiliser un Makefile pour automatiser et standardiser les tâches MLOps dans votre projet de machine learning.

Qu’est-ce qu’un Makefile ?

Un Makefile est un fichier contenant un ensemble de directives utilisées par l’outil de build ‘make’ pour automatiser des tâches dans un projet. Dans le contexte MLOps, il peut être utilisé pour standardiser les commandes d’entraînement, de test et de déploiement de modèles.

Structure de base d’un Makefile pour MLOps

Voici une structure de base pour un Makefile MLOps :

.PHONY: all clean data prepare train evaluate deploy
all: prepare train evaluate deploy
clean:
rm -rf data/processed model.pkl
data:
python scripts/download_data.py
prepare: data
python scripts/prepare_data.py
train: prepare
python scripts/train_model.py
evaluate: train
python scripts/evaluate_model.py
deploy: evaluate
python scripts/deploy_model.py

Cette structure définit les principales étapes d’un workflow MLOps typique.

Tâches courantes en MLOps

Préparation des données

data:
python scripts/download_data.py
prepare: data
python scripts/prepare_data.py

Ces règles téléchargent et préparent les données pour l’entraînement.

Entraînement du modèle

train: prepare
python scripts/train_model.py

Cette règle lance l’entraînement du modèle après la préparation des données.

Évaluation du modèle

evaluate: train
python scripts/evaluate_model.py

Cette règle évalue les performances du modèle après l’entraînement.

Déploiement du modèle

deploy: evaluate
python scripts/deploy_model.py

Cette règle déploie le modèle si l’évaluation est satisfaisante.

Intégration avec d’autres outils

Vous pouvez intégrer d’autres outils MLOps dans votre Makefile :

lint:
pylint **/*.py
test:
pytest tests/
docker-build:
docker build -t my-ml-model .
mlflow-ui:
mlflow ui

Ces règles permettent d’exécuter des linters, des tests, de construire une image Docker et de lancer l’interface MLflow.

Bonnes pratiques

  1. Utilisez .PHONY pour les cibles qui ne produisent pas de fichier.
  2. Définissez des variables pour les chemins et les commandes fréquemment utilisés.
  3. Utilisez des conditions pour gérer différents environnements.
  4. Documentez chaque règle avec des commentaires.

Exemple complet

Voici un exemple plus complet de Makefile pour un projet MLOps :

.PHONY: all clean data prepare train evaluate deploy lint test docker-build mlflow-ui
# Variables
PYTHON := python3
PIP := $(PYTHON) -m pip
DATA_DIR := data
MODEL_FILE := model.pkl
# Commandes
all: prepare train evaluate deploy
clean:
rm -rf $(DATA_DIR)/processed $(MODEL_FILE)
data:
$(PYTHON) scripts/download_data.py
prepare: data
$(PYTHON) scripts/prepare_data.py
train: prepare
$(PYTHON) scripts/train_model.py
evaluate: train
$(PYTHON) scripts/evaluate_model.py
deploy: evaluate
$(PYTHON) scripts/deploy_model.py
lint:
pylint **/*.py
test:
pytest tests/
docker-build:
docker build -t my-ml-model .
mlflow-ui:
mlflow ui
# Installation des dépendances
install:
$(PIP) install -r requirements.txt
# Création d'un nouvel environnement virtuel
venv:
$(PYTHON) -m venv venv
@echo "Run 'source venv/bin/activate' to activate the virtual environment."

Ce Makefile offre une suite complète de commandes pour gérer un projet MLOps, de l’installation des dépendances au déploiement du modèle.

Conclusion

L’utilisation d’un Makefile dans un projet MLOps permet de standardiser et d’automatiser les tâches courantes, facilitant ainsi la reproductibilité et la maintenance du projet. En combinant Makefile avec d’autres outils comme Docker, MLflow ou des outils de CI/CD, vous pouvez créer un pipeline MLOps robuste et efficace.