Définition
Le déploiement d’un modèle est l’étape du cycle de vie de l’apprentissage automatique au cours de laquelle un nouveau modèle passe dans un environnement de production et devient accessible aux utilisateurs finaux.
Aperçu
La conception, le développement et l’entraînement d’un modèle d’apprentissage automatique constituent une première étape importante, mais si vous souhaitez que des personnes utilisent votre modèle, vous devez le déployer. C’est là qu’intervient le déploiement du modèle. En tant que processus qui rend les modèles d’apprentissage automatique disponibles dans les environnements de production, le déploiement de modèles est une étape clé du cycle de vie de l’apprentissage automatique.
Poursuivez votre lecture pour en savoir plus sur le déploiement de modèles, notamment son fonctionnement, les défis qui peuvent se poser dans le contexte du déploiement de modèles d’apprentissage automatique et les meilleures pratiques en matière de déploiement de modèles, y compris dans le domaine de la sécurité.
Qu’est-ce que le déploiement de modèles ?
Le déploiement d’un modèle est le processus qui consiste à déplacer un modèle d’apprentissage automatique dans un environnement de production où les utilisateurs finaux peuvent interagir avec lui. Une fois déployé, un modèle effectue ce que l’on appelle de l’inférence, ce qui signifie qu’il fait des prédictions ou génère du contenu sur la base de nouvelles données.
Avant d’être déployés, les modèles sont soumis à d’autres processus qui ont lieu plus tôt dans le cycle de vie de l’apprentissage automatique. Il s’agit notamment de la conception du modèle (lorsque les développeurs et les data scientists déterminent comment un modèle doit fonctionner), du développement (le processus d’écriture du code qui alimente les algorithmes d’un modèle) et de l’entraînement (qui permet à un modèle de reconnaître des motifs pertinents en évaluant de grands volumes de données).
Le processus de déploiement du modèle s’apparente au déploiement d’une application dans le contexte du cycle de vie du développement logiciel (SDLC). Tout comme les développeurs de logiciels doivent transférer une nouvelle application écrite dans un environnement de production avant que les utilisateurs puissent y accéder, les développeurs en apprentissage automatique doivent déployer un modèle en production pour le rendre disponible pour une utilisation dans le monde réel.
Déploiement d’un modèle VS Mise à disposition d’un modèle
Le déploiement d’un modèle est similaire à la mise à disposition d’un modèle (en anglais, model serving), mais il s’agit de processus distincts.
Alors que le déploiement d’un modèle est le processus qui consiste à déplacer un modèle formé dans un environnement de production, la mise à disposition d’un modèle correspond à un processus permettant aux utilisateurs d’interagir avec le modèle, généralement à l’aide d’API ou d’un service Web.
Techniquement, vous pouvez déployer un modèle sans le mettre à disposition, ce qui signifie que vous avez déplacé le modèle dans un environnement de production, mais que vous n’avez pas donné aux utilisateurs finaux un moyen d’accéder à l’environnement ou au modèle. Mais si vous voulez que votre modèle soit utilisable, vous devez le mettre à disposition en plus de le déployer.
On pourrait dire que la mise à disposition de modèles est une étape dans le processus plus large de déploiement de modèles, mais même dans ce cas, il est important de ne pas confondre le déploiement et la mise à disposition, car les deux termes se réfèrent à des activités différentes.
Comment fonctionne le déploiement de modèles d’apprentissage automatique ?
Les étapes exactes du déploiement d’un modèle peuvent varier en fonction de facteurs tels que l’utilisation du modèle et le type d’environnement nécessaire pour l’héberger. En général, cependant, le processus de déploiement d’un modèle d’apprentissage automatique se résume aux activités clés suivantes :
- Choix d’un environnement de production : Les ingénieurs sélectionnent un environnement approprié pour héberger le modèle en production. Pour faire le bon choix, ils doivent prendre en compte des facteurs tels que la nécessité d’un matériel spécialisé pour le modèle, l’évolutivité nécessaire de l’infrastructure hôte pour faire face aux fluctuations de l’utilisation du modèle, et les niveaux de latence acceptables pour le modèle.
- Migration de la couche de données du modèle : Les modèles d’apprentissage automatique nécessitent généralement la présence de ressources de données dans les environnements de production pour permettre l’inférence. Si la couche de données est découplée du modèle lui-même, les données peuvent être déployées séparément du modèle.
- Déploiement du modèle : En plus de copier le modèle en production, l’équipe peut migrer le modèle lui-même.
- Mise à disposition du modèle : Comme indiqué ci-dessus, il est nécessaire de mettre à disposition le modèle en l’exposant par le biais d’une API ou d’un service Web afin que les utilisateurs puissent interagir avec lui.
Pour rationaliser le processus de migration et réduire le risque d’erreurs dues à des problèmes tels que des transferts de données incomplets, les équipes peuvent emballer les modèles à l’aide de technologies telles que les conteneurs. Les conteneurs sont utiles dans le contexte du déploiement de modèles (ainsi que dans celui du déploiement de logiciels en général), car ils fournissent un moyen cohérent de packager et d’exécuter un modèle.
Cela signifie que les différences entre l’environnement de formation et de test du modèle et l’environnement de production sont moins susceptibles de provoquer un comportement inattendu. Si le modèle a fonctionné comme un conteneur à la fois pendant les tests et en production, il devrait fonctionner de manière cohérente dans les deux types d’environnement.
Défis liés au déploiement de modèles d’apprentissage automatique
Divers facteurs peuvent compliquer la mise en œuvre réussie d’un modèle. Les défis les plus courants, ainsi que les solutions potentielles, sont les suivants :
- Coût de l’infrastructure : Les modèles peuvent consommer des ressources substantielles en termes de CPU et de mémoire, ce qui entraîne des coûts élevés après le déploiement. C’est pourquoi les équipes doivent veiller à choisir une infrastructure d’hébergement rentable.
- Environnements incohérents : Comme indiqué ci-dessus, les différences entre les environnements de test et de production peuvent entraîner un comportement inattendu du modèle après son déploiement. Le packaging des modèles de manière cohérente à l’aide de technologies telles que les conteneurs permet d’atténuer ce problème.
- Sécurité et conformité : Les modèles peuvent contenir des données sensibles, d’où l’importance de gérer les ressources de manière sécurisée lors du déploiement d’un modèle en production.
Risque d’utilisation abusive du modèle : Une fois déployés et mis à la disposition des utilisateurs finaux, les modèles pourraient être utilisés de manière abusive par le biais de techniques telles que l’injection d’invites. Par exemple, les API pourraient être conçues pour bloquer les utilisateurs qui soumettent un très grand nombre de requêtes dans un court laps de temps, étant donné que cette activité peut être un effort automatisé pour injecter des invites malveillantes et évaluer la façon dont le modèle répond.
Meilleures pratiques pour le déploiement de modèles
Pour rationaliser le déploiement de votre modèle et le préparer à la réussite de l’inférence, prenez en compte les meilleures pratiques suivantes.
Maintenir la cohérence des environnements
Une fois de plus, le maintien de la cohérence entre les environnements de test et de production est une étape clé pour éviter les opérations de modélisation inattendues.
Si l’environnement dans lequel l’inférence du modèle a lieu ne ressemble pas étroitement à l’environnement de test, il y a un risque que vos tests n’aient pas détecté les problèmes de performance ou de sécurité du modèle qui ne se produisent que dans des conditions spécifiques présentes dans la production, mais pas dans les tests.
Utiliser le contrôle de version
Pour faciliter la récupération des erreurs pendant ou après le déploiement, utilisez des outils de contrôle des versions. Outre la gestion du code dans le modèle lui-même, le contrôle de version peut également gérer le code de configuration qui régit le comportement du modèle.
Lorsque vous suivez automatiquement les modifications apportées aux versions au fil du temps, vous pouvez rapidement et facilement revenir à une version antérieure d’un modèle en cas de problème de performance ou de sécurité.
Gérer les risques de sécurité
Les risques de sécurité peuvent survenir à n’importe quel stade du cycle de vie de l’apprentissage automatique, et pas seulement au moment du déploiement. Cela dit, il est essentiel, lors du déploiement, de limiter les risques en matière de sécurité, tels que l’accès non autorisé aux modèles ou aux données associées pendant le processus de migration d’un modèle vers un environnement de production.
De même, les équipes doivent veiller à ce que toutes les couches de l’infrastructure hôte de l’environnement de production (serveurs physiques, machines virtuelles, systèmes d’exploitation, moteurs d’exécution de conteneurs, etc.) soient sécurisées et à jour, afin que les attaquants ne puissent pas les utiliser comme moyen de pénétrer dans l’environnement hôte du modèle.
Automatiser le déploiement des modèles
Les développeurs peuvent automatiser le déploiement des modèles en transférant automatiquement un modèle et sa couche de données en production une fois les tests terminés.
Le déploiement automatisé est bénéfique non seulement parce qu’il permet de gagner du temps, mais aussi parce qu’il réduit le risque de problèmes dus à l’erreur humaine. Il permet également un processus de déploiement cohérent et prévisible que vous pouvez facilement répéter chaque fois que vous devez déployer un nouveau modèle ou une mise à jour de modèle.
Choisir la bonne infrastructure
Dans la plupart des cas, l’inférence de modèles peut se faire en utilisant n’importe quel type d’infrastructure, qu’il s’agisse de serveurs physiques ou virtuels, ou d’un environnement sur site ou cloud. Cela dit, en fonction des cas d’utilisation du modèle et des objectifs de performance, un type d’infrastructure peut être meilleur qu’un autre.
Par exemple, si le nombre d’utilisateurs qui interagissent avec votre modèle est susceptible de fluctuer fréquemment, il peut être avantageux de déployer le modèle dans une infrastructure cloud, car vous pouvez rapidement faire évoluer l’infrastructure à la hausse ou à la baisse. De même, le déploiement de modèles à la périphérie du réseau plutôt que dans des centres de données centraux peut être utile dans les cas où une latence très faible est une priorité, car le déploiement de modèles à la périphérie minimise le temps nécessaire pour que les données circulent entre les utilisateurs et le modèle.
Rationaliser le déploiement des modèles avec JFrog
En rationalisant la gestion des modèles à tous les stades du cycle de vie de l’apprentissage automatique, JFrog facilite le passage des modèles du développement au test et au déploiement, tout en garantissant une intégration harmonieuse avec les frameworks ML les plus courants grâce aux API et SDK de JFrog. De plus, les capacités de sécurité de JFrog permettent de sécuriser le code et les artefacts ML à tous les stades du processus de développement.