Dans les projets d'apprentissage automatique (ML), l'un des composants les plus critiques est la gestion des versions. Contrairement au développement logiciel traditionnel, la gestion d'un projet ML implique non seulement le code source mais également les données et les modèles qui évoluent au fil du temps. Cela nécessite un système robuste pour assurer la synchronisation et la traçabilité de tous ces composants afin de gérer les expériences, sélectionner les meilleurs modèles et éventuellement les déployer en production. Dans cet article de blog, nous explorerons les meilleures pratiques pour gérer efficacement les modèles et les expériences de ML.
Les trois piliers de la gestion des ressources ML
Lors de la création de modèles d'apprentissage automatique, vous devez gérer trois ressources principales :
Chacune de ces ressources est essentielle et évolue à des rythmes différents. Les données changent avec de nouveaux échantillons ou mises à jour, les paramètres du modèle sont affinés et le code sous-jacent peut être mis à jour avec de nouvelles techniques ou optimisations. La gestion conjointe de ces ressources de manière synchronisée est essentielle mais représente un défi. Par conséquent, vous devez enregistrer et suivre chaque expérience avec précision.
Pourquoi avez-vous besoin de la gestion des versions de modèles
La gestion des versions est cruciale dans l'apprentissage automatique, notamment en raison des facteurs suivants :
Modifications de données : vos données d'entraînement, vos données de test et vos données de validation peuvent changer ou être mises à jour.
Modifications des paramètres : les hyperparamètres du modèle sont modifiés pendant la formation pour améliorer les performances, et la relation entre ceux-ci et les performances du modèle doit être suivie.
Performances du modèle : les performances de chaque modèle doivent être évaluées de manière cohérente avec différents ensembles de données pour garantir que le meilleur modèle est sélectionné pour le déploiement.
Sans contrôle de version approprié, vous risquez de perdre la trace du modèle qui a le mieux fonctionné dans des conditions spécifiques, ce qui risquerait de prendre des décisions inefficaces ou, pire encore, de déployer un modèle sous-optimal.
Les étapes clés décrites pour gérer la gestion des versions et l'expérimentation des modèles dans les projets d'apprentissage automatique sont les suivantes :
Étape 1 : Établir les noms de projet et de version
Avant de vous lancer dans votre parcours ML, nommez votre projet de manière significative. Le nom du projet doit facilement refléter l’objectif du modèle et avoir un sens pour quiconque l’examinera plus tard. Par exemple:
Après avoir nommé votre projet, vous devez mettre en place un système de gestion des versions de modèle. Cela devrait suivre les éléments suivants :
Ces étapes vous permettent d'identifier rapidement les modèles les plus performants et les ensembles de données ou paramètres qui ont conduit au succès.
Étape 2 : Journalisation des expériences dans une base de données structurée
Pour gérer efficacement les expériences, vous devez utiliser un système de journalisation structuré. Un schéma de base de données peut aider à enregistrer plusieurs aspects de chaque itération de formation du modèle. Par exemple, vous pouvez créer une base de données de gestion de modèles avec des tables qui stockent :
Voici un exemple de schéma pour votre base de données de gestion de modèles :
----------- ----------- ------------ ------------ ------------ |Model Name | Exp ID | Parameters | Eval Score | Model Path | ----------- ----------- ------------ ------------ ------------ |translate_ | | | | ./model/ | |kr2en_v1 | 1 | lr:0.01 |Preci:0.78 | v1.pth | ----------- ----------- ------------ ------------ ------------
Chaque fois que vous entraînez un modèle, une entrée est ajoutée à ce tableau, vous permettant de suivre l'impact de différents paramètres ou ensembles de données sur les performances. Cette journalisation garantit que vous ne perdez jamais le contexte d'une expérience, ce qui est crucial pour la reproductibilité et la gestion des versions.
Étape 3 : Suivi des versions de modèles en production
Une fois votre modèle déployé, le suivi des versions ne s'arrête pas. Vous devez surveiller les performances du modèle dans des scénarios réels en reliant les résultats d'inférence à la version spécifique du modèle qui les a générés. Par exemple, lorsqu'un modèle effectue une prédiction, il doit enregistrer la version du modèle dans sa sortie afin que vous puissiez ultérieurement évaluer ses performances par rapport aux données réelles.
Cela vous permet de retracer le comportement du modèle jusqu'à :
Le maintien d'un système de dénomination de version cohérent permet une identification et un dépannage rapides lorsque des problèmes de performances surviennent.
Étape 4 : Création d'un service de gestion de modèles
Une façon de gérer la gestion des versions des modèles et des expériences dans plusieurs environnements consiste à créer un service de gestion de modèles. Ce service peut être construit à l'aide de technologies telles que FastAPI et PostgreSQL. Le service de gestion de modèles :
Cette architecture permet de gérer les versions de modèles de manière structurée et évolutive. En accédant au service via des appels API, les ingénieurs et les data scientists peuvent enregistrer et récupérer des données expérimentales, rendant le processus de gestion plus collaboratif et rationalisé.
Étape 5 : Apprentissage en pipeline ou apprentissage par lots
Au fur et à mesure que vous itérez sur la formation et l'amélioration des modèles, la gestion des modèles d'apprentissage devient essentielle. Il existe deux approches d'apprentissage courantes :
Modèle d'apprentissage du pipeline : Les modèles sont formés, validés et déployés dans le cadre d'un pipeline automatisé de bout en bout. Chaque étape est enregistrée et versionnée, garantissant transparence et reproductibilité.
Modèle d'apprentissage par lots : Les modèles sont entraînés périodiquement avec de nouveaux lots de données. Chaque lot doit être versionné et les modèles correspondants doivent être étiquetés avec à la fois la version du modèle et les identifiants du lot de données.
La gestion de ces modèles d'apprentissage permet de garantir que vous pouvez suivre l'impact des différents régimes de formation ou modifications des données sur les performances du modèle au fil du temps.
Conclusion
La gestion des versions de modèles est l'épine dorsale de tout projet d'apprentissage automatique réussi. En gérant efficacement les versions de vos données, programmes et modèles, vous pouvez garantir que les expériences sont reproductibles, que les résultats sont traçables et que les modèles de production sont faciles à maintenir. L'adoption de bases de données structurées, de services RESTful et d'une journalisation cohérente rendra vos flux de travail d'apprentissage automatique plus organisés et évolutifs.
Dans les prochains blogs, nous approfondirons la gestion des modèles d'apprentissage et comparerons les modèles pour des performances optimales dans les environnements de production. Restez à l'écoute!
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3