Intelligence artificielle et Machine Learning: algorithmes et applications

Auteur: Mohamed CHINY Durée necessaire pour le cours de Intelligence artificielle et Machine Learning: algorithmes et applications Niveau recommandé pour le cours de Intelligence artificielle et Machine Learning: algorithmes et applications Supports vidéo non disponibles pour ce cours Exercices de renforcement non disponibles pour ce cours Quiz disponible pour ce cours

Leçon 30: Sauvegarder et recharger un modèle de Machine Learning avec Joblib

Toutes les leçons

Intelligence artificielle et Machine Learning: algorithmes et applications

Leçon 1
Intelligence artificielle: Définition, histoire et évolution
Leçon 2
Types d'apprentissage: supervisé, non supervisé et par renforcement
Leçon 3
Qu'est-ce qu'un dataset? Tout commence par les données
Leçon 4
Analyse exploratoire des données (EDA)
Leçon 5
Apprentissage supervisé - La régression
Leçon 6
Apprentissage supervisé - La classification
Leçon 7
Comment un modèle de Machine Learning apprend-il?
Leçon 8
Régression linéaire simple avec NumPy, scikit-learn et Matplotlib
Leçon 9
Régression linéaire multiple avec les DataFrames de Pandas
Leçon 10
Séparation du jeu de données en ensembles d'entraînement et de test
Leçon 11
Régression linéaire multiple avec découpage des données en train set et test set
Leçon 12
Classification supervisée avec la régression logistique
Leçon 13
Naive Bayes pour la classification: un modèle probabiliste génératif
Leçon 14
k-Nearest Neighbors (k-NN): Algorithme de classification non paramétrique basé sur les distances
Leçon 15
L'arbre de décision (decision tree): un outil puissant de classification
Leçon 16
Classification avec les Support Vector Machines (SVM)
Leçon 17
L'ensemble learning - Combiner plusieurs modèles pour une performance accrue
Leçon 18
Le Boosting: principe et mise en pratique avec XGBoost
Leçon 19
Random Forest, une application du Bagging en Ensemble Learning
Leçon 20
Le stacking: unir des modèles différents pour plus de performance
Leçon 21
La validation croisée: découper les données pour un meilleur apprentissage du modèle
Leçon 22
Recherche par grille avec validation croisée (GridSearchCV)
Leçon 23
Apprentissage non supervisé: Explorer et regrouper les données sans supervision
Leçon 24
Clustering avec k-means - Un pilier de l'apprentissage non supervisé
Leçon 25
Le clustering par densité avec l'algorithme DBSCAN
Leçon 26
Isolation Forest: identification des anomalies en apprentissage non supervisé
Leçon 27
Analyse en Composantes Principales PCA: Réduction de dimension non supervisée
Leçon 28
Linear Discriminant Analysis LDA: Réduction de dimension supervisée
Leçon 29
Pipeline en machine learning: automatiser les étapes pour faciliter le travail du data scientist
Leçon 30
Sauvegarder et recharger un modèle de Machine Learning avec Joblib

Joblib: Optimiser les workflows de Machine Learning grâce à la persistance des modèles

Pourquoi sauvegarder un modèle: partage, déploiement et reproductibilité

Sauvegarder un modèle est une étape essentielle dans tout projet de machine learning, car elle permet de capitaliser sur le travail déjà accompli. En effet, l’entraînement d’un modèle peut être coûteux en temps et en ressources (CPU, GPU, mémoire). Une fois qu’un modèle est entraîné et validé, il est inutile de recommencer ce processus à chaque utilisation. La sauvegarde permet de figer l’état du modèle (ses paramètres et ses poids) et de le réutiliser directement pour faire des prédictions.

De plus, la sauvegarde facilite le partage et le déploiement. Un modèle peut être transféré vers une autre machine, intégré dans une API, ou utilisé dans une application sans avoir besoin de réentraîner. Cela garantit aussi la reproductibilité car les résultats obtenus restent identiques, même si l’environnement ou les données évoluent. En résumé, sauvegarder un modèle, c’est assurer sa pérennité, sa portabilité et sa mise en production dans des conditions fiables.

Joblib: l’outil de référence pour scikit‑learn

Joblib est une bibliothèque Python conçue pour sérialiser efficacement les objets volumineux, en particulier ceux utilisés en machine learning classique (comme les modèles scikit‑learn ou les pipelines contenant des matrices numpy). Elle permet de sauvegarder un modèle entraîné dans un fichier .joblib et de le recharger plus tard sans avoir à refaire l’entraînement.

L'avantage principal de joblib est la rapidité et la compression optimisée pour les données numériques, ce qui en fait l’outil recommandé pour persister des modèles scikit‑learn.

Pickle, CSV et JSON: autres options de sauvegarde

Il existe toutefois d’autres techniques de sauvegarde en machine learning (hors deep learning). La plus courante est pickle, qui peut sérialiser n’importe quel objet Python, mais qui est moins performant pour les gros tableaux.

Certains formats standards comme CSV ou JSON peuvent aussi être utilisés pour sauvegarder uniquement les paramètres ou les coefficients d’un modèle, mais ils ne permettent pas de restaurer directement l’objet complet.

En pratique, pour les workflows scikit‑learn, joblib est la solution privilégiée, tandis que pickle reste une alternative plus générique.

Exemple sauvegarde d'un modèle de Machine Learning avec joblib

Voici un exemple simple de sauvegarde d'un modèle entrainé sur le dataset Iris en utilisant la bibliothèque joblib:
import joblib
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier

X, y = load_iris(return_X_y=True)

# Entrainement du modèle
model = RandomForestClassifier()
model.fit(X,y)

# Sauvegarder le modèle dans un fichier .joblib
joblib.dump(model,"iris_model.joblib")
print("Modèle sauvegardé dans iris_model.joblib")
Expliquons rapidement les points-clé de ce cet exemple:

Pour utiliser joblib, il suffit d’importer la bibliothèque en une ligne:
import joblib
La commande la plus importante dans notre exemple consiste à sauvegarder un modèle entraîné:
joblib.dump(model,"iris_model.joblib")
Ici, model est l’objet scikit‑learn que l'on veut conserver et "iris_model.joblib" est le nom du fichier qui contiendra le modèle (avec l'extension .joblib).

Exemple chargement du modèle entrainé avec joblib

Je propose ce code:
import joblib

# Charger le modèle sauvegardé
loaded_model = joblib.load("iris_model.joblib")

# Faire une prédiction
sample = [[5.1, 3.5, 1.4, 0.2]]
prediction = loaded_model.predict(sample)
print("Prédiction:", prediction)
Vous avez peut être remarqué que nous avons appelé loaded_model.predict() (qui recharge le modèle sauvegardé) sans refaire d’importation explicite du modèle utilisé (RandomForestClassifier).

En réalité, lorsque l'on recharges le modèle avec joblib.load("iris_model.joblib"), on n’a pas besoin de ré‑importer explicitement la classe RandomForestClassifier depuis sklearn.ensemble. En effet, le fichier .joblib contient déjà l’objet complet du modèle entraîné avec sa structure interne, ses paramètres et ses méthodes (fit, predict...).

En d’autres termes, joblib ne sauvegarde pas seulement les poids ou les coefficients, mais l’instance entière du modèle. Quand on le recharge, Python retrouve directement l’objet tel qu’il était, prêt à être utilisé.
Il est également possible de sauvegarder et recharger un pipeline scikit‑learn avec joblib. La syntaxe reste identique à celle utilisée pour un modèle classique: il suffit simplement de remplacer l’instance du modèle par l’instance du pipeline. Ainsi, on peut conserver non seulement l’algorithme d’apprentissage, mais aussi toutes les étapes de prétraitement (transformations, normalisations, encodages) et les réutiliser directement pour des prédictions.

En résumé, les avantages de Joblib sont multiples: en plus de permettre la sauvegarde et la réutilisation d’un modèle sans réentraînement, il offre la possibilité de déployer facilement ce modèle dans une API ou une application. Cela signifie que le travail effectué lors de l’entraînement peut être directement exploité en production, sans perte de temps ni de ressources. Joblib garantit aussi la portabilité du modèle (on peut le partager entre différentes machines ou environnements) et la reproductibilité des résultats, ce qui est essentiel pour assurer la fiabilité d’un projet de machine learning.          
Leçon 30
Sauvegarder et recharger un modèle de Machine Learning avec Joblib