En ML de production, l'objectif n'est pas de créer un modèle et de le déployer. L'objectif est de créer des pipelines automatisés pour développer, tester et déployer des modèles au fil du temps. Pourquoi ? À mesure que le monde change, les tendances des données changent, ce qui rend les modèles en production obsolètes. Les modèles ont généralement besoin d'un réentraînement avec des données à jour pour continuer à diffuser des prédictions de haute qualité sur le long terme. En d'autres termes, vous devez trouver un moyen de remplacer les modèles obsolètes par de nouveaux.
Sans pipeline, le remplacement d'un modèle obsolète est un processus source d'erreurs. Par exemple, lorsqu'un modèle commence à diffuser des prédictions incorrectes, quelqu'un doit collecter et traiter manuellement les nouvelles données, entraîner un nouveau modèle, valider sa qualité, puis le déployer. Les pipelines de ML automatisent un grand nombre de ces processus répétitifs, ce qui rend la gestion et la maintenance des modèles plus efficaces et plus fiables.
Créer des pipelines
Les pipelines de ML organisent les étapes de création et de déploiement de modèles en tâches bien définies. Les pipelines ont l'une des deux fonctions suivantes: fournir des prédictions ou mettre à jour le modèle.
Fournir des prédictions
Le pipeline d'inférence fournit des prédictions. Il expose votre modèle au monde réel et le rend accessible aux utilisateurs. Par exemple, lorsqu'un utilisateur souhaite obtenir une prédiction (quel temps fera-t-il demain, combien de minutes il lui faudra pour se rendre à l'aéroport, ou une liste de vidéos recommandées), le pipeline de diffusion reçoit et traite les données de l'utilisateur, réalise une prédiction, puis la transmet à l'utilisateur.
Mettre à jour le modèle
Les modèles ont tendance à devenir obsolètes presque immédiatement après leur mise en production. En substance, ils effectuent des prédictions à l'aide d'anciennes informations. Ses ensembles de données d'entraînement ont capturé l'état du monde il y a un jour ou, dans certains cas, une heure. Le monde a inévitablement changé: un utilisateur a regardé plus de vidéos et a besoin d'une nouvelle liste de recommandations ; la pluie a ralenti le trafic et les utilisateurs ont besoin de nouvelles estimations pour leurs heures d'arrivée ; une tendance populaire oblige les marchands à demander des prévisions d'inventaire actualisées pour certains articles.
En règle générale, les équipes entraînent de nouveaux modèles bien avant que le modèle de production ne devienne obsolète. Dans certains cas, les équipes entraînent et déploient de nouveaux modèles quotidiennement dans un cycle d'entraînement et de déploiement continu. Dans l'idéal, l'entraînement d'un nouveau modèle doit être effectué bien avant que le modèle de production ne devienne obsolète.
Les pipelines suivants fonctionnent ensemble pour entraîner un nouveau modèle:
- Pipeline de données. Le pipeline traite les données utilisateur pour créer des ensembles de données d'entraînement et de test.
- Pipeline d'entraînement. Le pipeline d'entraînement entraîne des modèles à l'aide des nouveaux ensembles de données d'entraînement du pipeline de données.
- Pipeline de validation. Le pipeline de validation valide le modèle entraîné en le comparant au modèle de production à l'aide d'ensembles de données de test générés par le pipeline de données.
La figure 4 illustre les entrées et les sorties de chaque pipeline de ML.
Pipelines de ML
Figure 4. Les pipelines de ML automatisent de nombreux processus de développement et de maintenance de modèles. Chaque pipeline affiche ses entrées et ses sorties.
De manière très générale, voici comment les pipelines maintiennent un modèle à jour en production:
Tout d'abord, un modèle passe en production, et le pipeline d'inférence commence à fournir des prédictions.
Le pipeline de données commence immédiatement à collecter des données pour générer de nouveaux ensembles de données d'entraînement et de test.
En fonction d'une programmation ou d'un déclencheur, les pipelines d'entraînement et de validation entraînent et valident un nouveau modèle à l'aide des ensembles de données générés par le pipeline de données.
Lorsque le pipeline de validation confirme que le nouveau modèle n'est pas moins bon que le modèle de production, le nouveau modèle est déployé.
Ce processus se répète en continu.
Obsolescence du modèle et fréquence d'entraînement
Presque tous les modèles deviennent obsolètes. Certains modèles deviennent obsolètes plus rapidement que d'autres. Par exemple, les modèles qui recommandent des vêtements deviennent généralement obsolètes, car les préférences des consommateurs changent fréquemment. En revanche, les modèles qui identifient les fleurs ne seront peut-être jamais obsolètes. Les caractéristiques d'identification d'une fleur restent stables.
La plupart des modèles deviennent obsolètes dès leur mise en production. Vous devez définir une fréquence d'entraînement adaptée à la nature de vos données. Si les données sont dynamiques, effectuez un entraînement régulier. S'il est moins dynamique, vous n'aurez peut-être pas besoin de l'entraîner aussi souvent.
Entraînez des modèles avant qu'ils ne deviennent obsolètes. L'entraînement précoce fournit un tampon permettant de résoudre les problèmes potentiels, par exemple en cas d'échec du pipeline de données ou d'entraînement, ou de mauvaise qualité du modèle.
Il est recommandé d'entraîner et de déployer de nouveaux modèles quotidiennement. Tout comme les projets logiciels standards qui ont un processus de compilation et de publication quotidien, les pipelines de ML pour l'entraînement et la validation offrent souvent de meilleurs résultats lorsqu'ils sont exécutés quotidiennement.
Pipeline d'inférence
Le pipeline de diffusion génère et fournit des prédictions de l'une des deux manières suivantes : en ligne ou hors connexion.
Prédictions en ligne. Les prédictions en ligne se produisent en temps réel, généralement en envoyant une requête à un serveur en ligne et en renvoyant une prédiction. Par exemple, lorsqu'un utilisateur souhaite obtenir une prédiction, ses données sont envoyées au modèle, qui renvoie la prédiction. Par exemple, Gmail classe les messages entrants en temps réel à l'aide de prédictions en ligne.
Prédictions hors connexion. Les prédictions hors connexion sont précalculées et mises en cache. Pour diffuser une prédiction, l'application trouve la prédiction mise en cache dans la base de données et la renvoie. Par exemple, un service basé sur un abonnement peut prédire le taux de perte d'abonnés. Le modèle prédit la probabilité de perte d'utilisateurs pour chaque abonné et le met en cache. Lorsque l'application a besoin de la prédiction, par exemple pour inciter les utilisateurs sur le point d'abandonner l'application, elle se contente de rechercher la prédiction précalculée.
La figure 5 montre comment les prédictions en ligne et hors connexion sont générées et diffusées.
Prédictions en ligne et hors connexion
Figure 5. Les prédictions en ligne fournissent des prédictions en temps réel. Les prédictions hors connexion sont mises en cache et examinées au moment de l'inférence.
Post-traitement de la prédiction
En règle générale, les prédictions sont post-traitées avant d'être diffusées. Par exemple, les prédictions peuvent être post-traitées afin d'éliminer les contenus toxiques ou biaisés. Les résultats de la classification peuvent utiliser un twipage pour réorganiser les résultats au lieu d'afficher la sortie brute du modèle. Par exemple, pour mettre en avant un contenu faisant autorité, présenter une diversité de résultats, rétrograder des résultats particuliers (comme un piège à clics) ou supprimer des résultats pour des raisons juridiques.
La figure 6 présente un pipeline de diffusion et les tâches types liées à la livraison des prédictions.
Post-traitement des prédictions
Figure 6. Pipeline de diffusion illustrant les tâches types requises pour fournir des prédictions.
Notez que l'étape d'extraction de caractéristiques est généralement intégrée au modèle, et non un processus distinct et autonome. Le code de traitement des données du pipeline de diffusion est souvent presque identique à celui utilisé par le pipeline de données pour créer des ensembles de données d'entraînement et de test.
Stockage d'éléments et de métadonnées
Le pipeline de diffusion doit intégrer un dépôt pour consigner les prédictions du modèle et, si possible, la vérité terrain.
La journalisation des prédictions du modèle vous permet de surveiller la qualité de votre modèle. En agrégeant les prédictions, vous pouvez surveiller la qualité générale de votre modèle et déterminer s'il commence à perdre en qualité. En règle générale, les prédictions du modèle de production doivent avoir la même moyenne que les étiquettes de l'ensemble de données d'entraînement. Pour en savoir plus, consultez la section Biais de prédiction.
Capturer la vérité terrain
Dans certains cas, la vérité terrain n'est disponible que beaucoup plus tard. Par exemple, si une application météo prédit le temps qu'il fera six semaines à l'avenir, la vérité terrain (quel temps fait réellement) ne sera pas disponible pendant six semaines.
Dans la mesure du possible, demandez aux utilisateurs de faire part de la vérité terrain en ajoutant des mécanismes de commentaires à l'application. Gmail collecte implicitement les commentaires des utilisateurs lorsqu'ils déplacent des e-mails de leur boîte de réception vers leur dossier de spam. Toutefois, cela ne fonctionne que lorsque l'utilisateur a correctement catégorisé ses e-mails. Lorsque les utilisateurs laissent un spam dans leur boîte de réception (parce qu'ils savent qu'il s'agit de spam et ne l'ouvrent jamais), les données d'entraînement deviennent imprécises. Ce message sera marqué comme « non-spam » alors qu'il devrait être « spam ». En d'autres termes, essayez toujours de trouver des moyens de capturer et d'enregistrer la vérité terrain, mais tenez compte des lacunes qui peuvent exister dans les mécanismes de rétroaction.
La figure 7 illustre les prédictions transmises à un utilisateur et consignées dans un dépôt.
Journalisation des prédictions
Figure 7 : Consignez les prédictions pour surveiller la qualité du modèle.
Pipelines de données
Les pipelines de données génèrent des ensembles de données d'entraînement et de test à partir de données d'application. Les pipelines d'entraînement et de validation utilisent ensuite les ensembles de données pour entraîner et valider de nouveaux modèles.
Le pipeline de données crée des ensembles de données d'entraînement et de test avec les mêmes caractéristiques et l'étiquette que ceux utilisés à l'origine pour entraîner le modèle, mais avec des informations plus récentes. Par exemple, une application Maps peut générer des ensembles de données d'entraînement et de test à partir des temps de trajet récents entre des points pour des millions d'utilisateurs, ainsi que d'autres données pertinentes, comme la météo.
Une application de recommandation de vidéos génère des ensembles de données d'entraînement et de test qui incluent les vidéos sur lesquelles un utilisateur a cliqué dans la liste recommandée (ainsi que celles sur lesquelles il n'a pas cliqué), ainsi que d'autres données pertinentes, comme l'historique des vidéos regardées.
La figure 8 illustre le pipeline de données qui génère des ensembles de données d'entraînement et de test à l'aide des données d'application.
Pipeline de données
Figure 8 : Le pipeline de données traite les données d'application pour créer des ensembles de données pour les pipelines d'entraînement et de validation.
Collecte et traitement des données
Les tâches de collecte et de traitement des données dans les pipelines de données seront probablement différentes de la phase de tests (au cours de laquelle vous avez déterminé que votre solution était réalisable):
Collecte des données. Pendant l'expérimentation, la collecte de données nécessite généralement d'accéder aux données enregistrées. Pour les pipelines de données, la collecte de données peut nécessiter de découvrir et d'obtenir une approbation pour accéder aux flux de données des journaux.
Si vous avez besoin de données étiquetées manuellement (telles que des images médicales), vous aurez également besoin d'un processus de collecte et de mise à jour. Si vous avez besoin de données étiquetées manuellement, consultez la page CrowdCompute.
Traitement des données : Les bonnes caractéristiques ont été déterminées par le scraping, la jointure et l'échantillonnage des ensembles de données expérimentaux. Pour les pipelines de données, la génération de ces mêmes caractéristiques peut nécessiter des processus complètement différents. Cependant, veillez à dupliquer les transformations de données obtenues lors de la phase de test en appliquant les mêmes opérations mathématiques aux caractéristiques et aux étiquettes.
Stockage d'éléments et de métadonnées
Vous aurez besoin d'un processus pour stocker et gérer vos ensembles de données d'entraînement et de test, et gérer les versions associées. Les dépôts contrôlés par version offrent les avantages suivants:
Reproductibilité. Recréez et standardisez les environnements d'entraînement de modèles, et comparez la qualité des prédictions
Conformité. Respectez les exigences de conformité réglementaire en matière d'auditabilité et de transparence.
Conservation. Définissez des valeurs de conservation des données pour la durée de stockage des données.
Gestion des accès. Gérez qui peut accéder à vos données grâce à des autorisations précises.
Intégrité des données : Suivez et comprenez les modifications apportées aux ensembles de données au fil du temps, ce qui facilite le diagnostic des problèmes liés à vos données ou à votre modèle.
Visibilité. Aidez les autres utilisateurs à trouver facilement vos ensembles de données et vos caractéristiques. D'autres équipes peuvent ensuite déterminer si elles peuvent être utiles à leurs fins.
Documenter vos données
Une bonne documentation aide les autres à comprendre les informations clés de vos données, telles que leur type, leur source, leur taille et d'autres métadonnées essentielles. Dans la plupart des cas, documenter vos données dans un document de conception ou g3doc est suffisant. Si vous prévoyez de partager ou de publier vos données, structurez les informations à l'aide de fiches de données. Les fiches de données permettent aux autres utilisateurs de découvrir et de comprendre vos ensembles de données.
Pipelines d'entraînement et de validation
Les pipelines d'entraînement et de validation produisent de nouveaux modèles pour remplacer les modèles de production avant qu'ils ne deviennent obsolètes. L'entraînement et la validation continus de nouveaux modèles permettent de garantir que le meilleur modèle est toujours en production.
Le pipeline d'entraînement génère un nouveau modèle à partir des ensembles de données d'entraînement, et le pipeline de validation compare la qualité du nouveau modèle à celle du modèle en production, à l'aide des ensembles de données de test.
La Figure 9 illustre le pipeline d'entraînement qui utilise un ensemble de données d'entraînement pour entraîner un nouveau modèle.
Pipeline d'entraînement
Figure 9. Le pipeline d'entraînement entraîne les nouveaux modèles à l'aide de l'ensemble de données d'entraînement le plus récent.
Une fois le modèle entraîné, le pipeline de validation utilise des ensembles de données de test pour comparer la qualité du modèle de production à celle du modèle entraîné.
En général, si le modèle entraîné n'est pas nettement moins performant que le modèle de production, il passe en production. Si le modèle entraîné est moins bien, l'infrastructure de surveillance doit créer une alerte. Des modèles entraînés avec une prédiction de moins bonne qualité peuvent indiquer des problèmes potentiels avec les pipelines de données ou de validation. Cette approche permet de garantir que le meilleur modèle, entraîné avec les données les plus récentes, est toujours en production.
Stockage d'éléments et de métadonnées
Les modèles et leurs métadonnées doivent être stockés dans des dépôts avec gestion des versions pour organiser et suivre les déploiements de modèles. Les dépôts de modèles offrent les avantages suivants:
Suivi et évaluation. suivre les modèles en production, et comprendre leurs métriques de qualité d'évaluation et de prédiction ;
Processus de lancement d'un modèle. Passez facilement en revue, approuvez, publiez ou effectuez un rollback des modèles.
Reproductibilité et débogage. Reproduisez les résultats du modèle et déboguez plus efficacement les problèmes en traçant les ensembles de données et les dépendances d'un modèle entre les différents déploiements.
Visibilité. Permettez aux autres utilisateurs de trouver facilement votre modèle. D'autres équipes peuvent ensuite déterminer si votre modèle (ou des parties de celui-ci) peuvent être utilisés à leurs fins.
La figure 10 illustre un modèle validé stocké dans un dépôt de modèles.
Stockage de modèles
Figure 10 : Les modèles validés sont stockés dans un dépôt de modèles à des fins de suivi et de visibilité.
Utilisez des fiches modèles pour documenter et partager des informations clés sur votre modèle, telles que son objectif, son architecture, sa configuration matérielle, ses métriques d'évaluation, etc.
Défis liés à la création de pipelines
Lorsque vous créez des pipelines, vous pouvez rencontrer les problèmes suivants:
Accéder aux données dont vous avez besoin L'accès aux données peut nécessiter de justifier pourquoi vous en avez besoin. Par exemple, vous devrez peut-être expliquer comment les données seront utilisées et comment les problèmes liés aux informations permettant d'identifier personnellement l'utilisateur seront résolus. Préparez-vous à montrer une démonstration de faisabilité démontrant comment votre modèle effectue de meilleures prédictions en ayant accès à certains types de données.
Obtenir les fonctionnalités appropriées. Dans certains cas, les fonctionnalités utilisées lors de la phase de test ne sont pas disponibles dans les données en temps réel. Par conséquent, lorsque vous effectuez des tests, essayez de vérifier que vous pourrez obtenir les mêmes fonctionnalités en production.
Comprendre comment les données sont collectées et représentées Savoir comment les données ont été collectées, qui les a recueillies et comment elles ont été collectées (ainsi que d'autres problèmes) peut prendre du temps et des efforts. Il est important de comprendre les données en détail. N'utilisez pas des données en lesquelles vous avez des doutes pour entraîner un modèle susceptible d'être mis en production.
Comprendre les compromis entre effort, coût et qualité du modèle. L'intégration d'une nouvelle caractéristique dans un pipeline de données peut demander beaucoup d'efforts. Toutefois, il est possible que cette caractéristique supplémentaire n'améliore que légèrement la qualité du modèle. Dans d'autres cas, l'ajout d'une nouvelle fonctionnalité peut s'avérer facile. Toutefois, les ressources nécessaires à l'obtention et au stockage de la fonctionnalité peuvent s'avérer excessivement coûteuses.
Obtenir des ressources de calcul. Si vous avez besoin de TPU pour le réentraînement, il peut être difficile d'obtenir le quota requis. De plus, la gestion des TPU est compliquée. Par exemple, certaines parties de votre modèle ou de vos données peuvent avoir besoin d'être spécialement conçues pour les TPU, en répartissant certaines parties entre elles sur plusieurs puces TPU.
Trouver le bon ensemble de données de référence. Si les données changent fréquemment, il peut être difficile d'obtenir des ensembles de données clés avec des étiquettes cohérentes et précises.
La détection de ces types de problèmes pendant l'expérimentation permet de gagner du temps. Par exemple, vous ne souhaitez pas développer les meilleures caractéristiques et le meilleur modèle pour simplement apprendre qu'elles ne sont pas viables en production. Par conséquent, essayez de vérifier le plus tôt possible que votre solution fonctionnera dans les limites d'un environnement de production. Il est préférable de passer du temps à vérifier le bon fonctionnement d'une solution plutôt que de devoir revenir à la phase de tests, car la phase du pipeline a révélé des problèmes insurmontables.