AWS Conseils prescriptifs - Création de pipelines ML prêts pour la production sur AWS
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Création de pipelines ML prêts pour la production sur AWS AWS Conseils prescriptifs Copyright © 2024 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS AWS Conseils prescriptifs: Création de pipelines ML prêts pour la production sur AWS Copyright © 2024 Amazon Web Services, Inc. and/or its affiliates. All rights reserved. Les marques et la présentation commerciale d’Amazon ne peuvent être utilisées en relation avec un produit ou un service qui n’est pas d’Amazon, d’une manière susceptible de créer une confusion parmi les clients, ou d’une manière qui dénigre ou discrédite Amazon. Toutes les autres marques commerciales qui ne sont pas la propriété d’Amazon appartiennent à leurs propriétaires respectifs, qui peuvent ou non être affiliés ou connectés à Amazon, ou sponsorisés par Amazon.
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Table of Contents Introduction ........................................................................................................................................... 1 ......................................................................................................................................................... 1 .............................................................................................................................................................. 4 .............................................................................................................................................................. 5 Utilisation des tâches de traitement ................................................................................................ 5 Utilisation de la clause de garde principale .................................................................................... 7 Tests d'unité ..................................................................................................................................... 7 .............................................................................................................................................................. 9 Utilisation du kit SDK Step Functions ............................................................................................. 9 Extension du SDK Step Functions ................................................................................................ 10 ............................................................................................................................................................ 12 Implémentation avecAWS CloudFormation ................................................................................... 12 Modification de la sortie du SDK Step Functions ......................................................................... 13 ............................................................................................................................................................ 14 ............................................................................................................................................................ 16 Différents niveaux d'automatisation ............................................................................................... 16 Différentes plateformes pour charges de travail ML ..................................................................... 17 Différents moteurs pour l'orchestration de pipelines ..................................................................... 18 ............................................................................................................................................................ 19 Ressources supplémentaires ............................................................................................................. 20 Historique du document ..................................................................................................................... 21 Glossaire ............................................................................................................................................. 22 # ..................................................................................................................................................... 22 A ..................................................................................................................................................... 23 B ..................................................................................................................................................... 26 C ..................................................................................................................................................... 28 D ..................................................................................................................................................... 31 E ..................................................................................................................................................... 36 F ..................................................................................................................................................... 38 G ..................................................................................................................................................... 39 H ..................................................................................................................................................... 40 I ...................................................................................................................................................... 41 L .................................................................................................................................................... 44 M .................................................................................................................................................... 45 iii
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS O ..................................................................................................................................................... 49 P ..................................................................................................................................................... 52 Q ................................................................................................................................................... 55 R ..................................................................................................................................................... 55 S ................................................................................................................................................... 58 T ..................................................................................................................................................... 62 U ..................................................................................................................................................... 63 V ..................................................................................................................................................... 64 W .................................................................................................................................................... 64 Z ..................................................................................................................................................... 66 .......................................................................................................................................................... lxvii iv
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Création de pipelines ML prêts pour la production surAWS Josiah Davis, Verdi March, Yin Song, Baichuan Sun, Chen Wu et Wei Yih Yap, Amazon Web Services (AWS) Janvier 2021(historique du document) Les projets d'apprentissage automatique (ML) nécessitent un effort important en plusieurs étapes qui inclut la modélisation, la mise en œuvre et la production afin de générer de la valeur commerciale et de résoudre des problèmes du monde réel. De nombreuses alternatives et options de personnalisation sont disponibles à chaque étape, ce qui rend de plus en plus difficile la préparation d'un modèle de machine learning pour la production dans les limites de vos ressources et de votre budget. Ces dernières années chez Amazon Web Services (AWS), notre équipe de science des données a travaillé avec différents secteurs industriels sur des initiatives de ML. Nous avons identifié des points faibles communs à de nombreuses personnesAWSclients, qui proviennent à la fois de problèmes organisationnels et de défis techniques, et nous avons développé une approche optimale pour fournir des solutions de ML prêtes à la production. Ce guide est destiné aux data scientists et aux ingénieurs ML impliqués dans la mise en œuvre de pipelines de ML. Il décrit notre approche pour fournir des pipelines de ML prêts pour la production. Le guide explique comment passer de l'exécution interactive de modèles ML (pendant le développement) à leur déploiement dans le cadre d'un pipeline (pendant la production) pour votre cas d'utilisation du ML. À cette fin, nous avons également développé une série d'exemples de modèles (voir leProjet ML Max), afin d'accélérer la mise à disposition de solutions de machine learning personnalisées en production, afin que vous puissiez démarrer rapidement sans avoir à faire trop de choix de conception. Présentation Le processus de création d'un pipeline de machine virtuelle prêt pour la production comprend les étapes suivantes : • Étape 1. Réaliser un EDA et développer le modèle initial— Les data scientists mettent des données brutes à disposition dans Amazon Simple Storage Service (Amazon S3), effectuent une analyse exploratoire des données (EDA), développent le modèle ML initial et évaluent ses performances d'inférence. Vous pouvez effectuer ces activités de manière interactive via les blocs-notes Jupyter. • Étape 2. Création des scripts d'exécution— Vous intégrez le modèle à des scripts Python d'exécution afin qu'il puisse être géré et approvisionné par un framework ML (dans notre cas, 1
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Amazon SageMaker). Il s'agit de la première étape pour passer du développement interactif d'un modèle autonome à la production. Plus précisément, vous définissez séparément la logique du prétraitement, de l'évaluation, de la formation et de l'inférence. • Étape 3. Définition du pipeline— Vous définissez les espaces réservés d'entrée et de sortie pour chaque étape du pipeline. Des valeurs concrètes pour celles-ci seront fournies ultérieurement, au cours de l'exécution (étape 5). Vous vous concentrez sur les pipelines de formation, d'inférence, de validation croisée et de backtesting. • Étape 4. Créez le pipeline— Vous créez l'infrastructure sous-jacente, y compris leAWS Step Functionsstate machine de manière automatisée (presque en un clic), en utilisantAWS CloudFormation. • Étape 5. Exécuter le pipeline— Vous exécutez le pipeline défini à l'étape 4. Vous préparez également des métadonnées et des données ou des emplacements de données pour renseigner des valeurs concrètes pour les espaces réservés d'entrée/sortie que vous avez définis à l'étape 3. Cela inclut les scripts d'exécution définis à l'étape 2 ainsi que les hyperparamètres du modèle. • Étape 6. Développez le pipeline— Vous implémentez des processus d'intégration et de déploiement continus (CI/CD), un recyclage automatique, une inférence planifiée et des extensions similaires du pipeline. Le diagramme suivant illustre les principales étapes de ce processus. 2
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS 3
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Étape 1. Effectuez l'EDA et développez le modèle initial Au cours de cette étape, les scientifiques des données effectuent une analyse exploratoire des données (EDA) afin de comprendre le cas d'utilisation et les données de ML. Ils développent ensuite les modèles ML (par exemple, les modèles de classification et de régression) pour résoudre le problème dans un cas d'utilisation donné. Lors du développement de modèles, le spécialiste des données émet souvent des hypothèses sur les entrées et les sorties, telles que les formats de données, le cycle de vie des données et les emplacements des sorties intermédiaires. Ces hypothèses doivent être documentées afin qu'elles puissent être utilisées à des fins de vérification lors des tests unitaires de l'étape 2. Bien que cette étape se concentre sur le développement de modèles, les scientifiques des données doivent souvent écrire un minimum de code d'assistance pour le prétraitement, la formation, l'évaluation et l'inférence. Le spécialiste des données devrait pouvoir exécuter ce code dans l'environnement de développement. Nous recommandons également de fournir des arguments d'exécution facultatifs afin que ce code d'assistance puisse être configuré dynamiquement pour être exécuté dans d'autres environnements sans modifications manuelles importantes. Cela accélérera l'intégration entre le modèle et le pipeline aux étapes 2 et 3. Par exemple, le code de lecture des données brutes doit être encapsulé dans des fonctions afin que les données puissent être prétraitées de manière cohérente. Nous vous recommandons de commencer par utiliser un cadre tel quescikit- learn,XGBoost,PyTorch,Keras, ouTensorFlowpour développer le modèle ML et son code d'assistance. Par exemple, scikit-learn est une bibliothèque ML gratuite écrite en Python. Il fournit une convention API uniforme pour les objets et comprend quatre objets principaux :estimateur,prédicteur,transformateur, etmodèle: qui couvrent les transformations de données légères, prennent en charge l'ingénierie des étiquettes et des fonctionnalités, et encapsulent les étapes de prétraitement et de modélisation. Ces objets permettent d'éviter la prolifération du code de la plaque de chaudière et d'empêcher la fuite de données de validation et de test dans le jeu de données d'entraînement. De même, chaque infrastructure ML a sa propre implémentation d'artefacts ML clés, et nous vous recommandons de respecter les conventions API de votre framework sélectionné lorsque vous développez des modèles ML. 4
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Étape 2. Création des scripts d'exécution Au cours de cette étape, vous intégrez le modèle que vous avez développé à l'étape 1 et le code d'assistance associé à une plateforme ML pour une formation et une inférence prêtes à la production. Cela implique notamment le développement de scripts d'exécution afin que le modèle puisse être intégré à SageMaker. Ces scripts Python autonomes incluent des fonctions de rappel SageMaker prédéfinies et des variables d'environnement. Ils sont exécutés dans un conteneur SageMaker hébergé sur une instance Amazon Elastic Compute Cloud (Amazon EC2). LeDocumentation du kit SDK Amazon SageMaker Pythonfournit des informations détaillées sur la façon dont ces rappels et la configuration auxiliaire fonctionnent ensemble pour la formation et l'inférence. (Pour obtenir des exemples, consultezPréparer un script d'entraînement Scikit-LearnetDéployer un modèle scikit- learndans la documentation SageMaker.) Les sections suivantes fournissent des recommandations supplémentaires pour le développement de scripts d'exécution ML, en fonction de notre expérience de travail avecAWSclients. Utilisation des tâches de traitement SageMaker propose deux options pour effectuer une inférence de modèle en mode lot. Vous pouvez utiliser un SageMakertravail de traitementou untâche de transformation pas lots. Chaque option a ses avantages et ses inconvénients. Utilisation des tâches de traitement 5
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Une tâche de traitement consiste en un fichier Python exécuté dans un conteneur SageMaker. Le travail de traitement consiste en la logique que vous avez placée dans votre fichier Python. Il dispose des avantages suivants : • Lorsque vous comprenez la logique de base d'une tâche de formation, les tâches de traitement sont simples à configurer et faciles à comprendre. Ils partagent les mêmes abstractions que les tâches de formation (par exemple, réglage du nombre d'instances et de la distribution des données). • Les scientifiques des données et les ingénieurs ML ont un contrôle total sur les options de manipulation des données. • Le data scientist n'a pas à gérer la logique des composants d'E/S, sauf pour les fonctionnalités de lecture/écriture familières. • Il est un peu plus facile d'exécuter les fichiers dans des environnements autres que SageMaker, ce qui facilite le développement rapide et les tests locaux. • En cas d'erreur, une tâche de traitement échoue dès que le script échoue, et il n'y a pas d'attente inattendue de nouvelle tentative. D'autre part, les tâches de transformation par lots sont une extension du concept de point de terminaison SageMaker. Au moment de l'exécution, ces tâches importent des fonctions de rappel, qui gèrent ensuite les E/S pour lire les données, charger le modèle et effectuer les prévisions. Les tâches de transformation Batch présentent les avantages suivants : • Ils utilisent une abstraction de distribution de données qui diffère de l'abstraction utilisée par les tâches de formation. • Ils utilisent le même fichier principal et la même structure de fonction pour l'inférence par lots et l'inférence en temps réel, ce qui est pratique. • Ils disposent d'un mécanisme intégré de tolérance aux pannes basé sur les essais. Par exemple, si une erreur se produit sur un lot d'enregistrements, elle retentera plusieurs fois avant la fin de la tâche en raison d'un échec. En raison de sa transparence, de sa facilité d'utilisation dans de nombreux environnements et de son abstraction partagée avec les tâches de formation, nous avons décidé d'utiliser le travail de traitement au lieu du travail de transformation par lots dans l'architecture de référence présentée dans ce guide. Utilisation des tâches de traitement 6
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Vous devez exécuter des scripts d'exécution Python localement avant de les déployer dans le cloud. Plus précisément, nous vous recommandons d'utiliser la clause principale guard lorsque vous structurez vos scripts Python et que vous effectuez des tests unitaires. Utilisation de la clause de garde principale Utilisez une clause de garde principale pour prendre en charge l'importation de modules et exécuter votre script Python. L'exécution de scripts Python individuellement est bénéfique pour déboguer et isoler les problèmes dans le pipeline ML. Nous vous recommandons la procédure suivante : • Utilisez un analyseur d'arguments dans les fichiers de traitement Python pour spécifier les fichiers d'entrée/sortie et leurs emplacements. • Fournissez un guide principal et des fonctions de test pour chaque fichier Python. • Après avoir testé un fichier Python, intégrez-le aux différentes étapes du pipeline ML, que vous utilisiez un fichierAWS Step Functionsou une tâche de traitement SageMaker. • UtiliserAssertionsdans les sections critiques du script pour faciliter les tests et le débogage. Par exemple, vous pouvez utiliser unAssertionspour s'assurer que le nombre d'entités du jeu de données est cohérent après le chargement. Tests d'unité Le test unitaire des scripts d'exécution écrits pour le pipeline est une tâche importante fréquemment ignorée dans le développement du pipeline ML. En effet, l'apprentissage automatique et la science des données sont des domaines relativement nouveaux et ont tardé à adopter des pratiques d'ingénierie logicielle bien établies telles que les tests unitaires. Étant donné que le pipeline ML sera utilisé dans l'environnement de production, il est essentiel de tester le code du pipeline avant d'appliquer le modèle ML à des applications réelles. Le test unitaire du script d'exécution offre également les avantages uniques suivants pour les modèles ML : • Il empêche les transformations inattendues de données. La plupart des pipelines ML impliquent de nombreuses transformations de données, il est donc essentiel que ces transformations fonctionnent comme prévu. • Il valide la reproductibilité du code. Tout caractère aléatoire dans le code peut être détecté par des tests unitaires avec différents cas d'utilisation. Utilisation de la clause de garde principale 7
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS • Il applique la modularité du code. Les tests unitaires sont généralement associés à la mesure de couverture des tests, qui correspond au degré auquel une suite de tests particulière (un ensemble de cas de test) exécute le code source d'un programme. Pour obtenir une couverture de test élevée, les développeurs modularisent le code, car il est difficile d'écrire des tests unitaires pour une grande quantité de code sans le décomposer en fonctions ou classes. • Il empêche l'introduction de code ou d'erreurs de mauvaise qualité dans la production. Nous vous recommandons d'utiliser une structure de test unitaire mature, telle quepytestpour écrire les cas de tests unitaires, car il est plus facile de gérer des tests unitaires étendus dans un cadre. Important Les tests unitaires ne peuvent pas garantir que tous les cas d'angle sont testés, mais ils peuvent vous aider à éviter les erreurs de manière proactive avant de déployer le modèle. Nous vous recommandons également de surveiller le modèle après le déploiement, afin de garantir l'excellence opérationnelle. Tests d'unité 8
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Étape 3. Définir le pipeline Dans cette étape, la séquence et la logique des actions que le pipeline exécutera sont définies. Cela inclut les étapes discrètes ainsi que leurs entrées et sorties logiques. Par exemple, quel est l'état des données au début du pipeline ? Provient-il de plusieurs fichiers à différents niveaux de granularité ou d'un seul fichier plat ? Si les données proviennent de plusieurs fichiers, avez-vous besoin d'une seule étape pour tous les fichiers ou d'étapes distinctes pour chaque fichier afin de définir la logique de prétraitement ? La décision dépend de la complexité des sources de données et de la mesure dans laquelle elles sont prétraitées. Dans notre implémentation de référence, nous utilisonsAWS Step Functions, qui est un orchestrateur de fonctions sans serveur, pour définir les étapes du flux de travail. Cependant, leCadre ML Maxprend également en charge d'autres systèmes de machines de pipeline ou d'état tels que Apache AirFlow (voir leDifférents moteurs pour l'orchestration de pipelines) pour piloter le développement et le déploiement de pipelines ML. Utilisation du kit SDK Step Functions Pour définir le pipeline ML, nous utilisons d'abord l'API Python de haut niveau fournie par leAWS Step FunctionsKit SDK Data Science(le SDK Step Functions) pour définir deux composants clés du pipeline :pasetdonnées. Si vous considérez un pipeline comme un graphe acyclique dirigé (DAG), les étapes représentent les nœuds du graphique et les données sont affichées sous la forme d'arêtes Utilisation du kit SDK Step Functions 9
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS dirigées qui connectent un nœud (étape) à l'autre. Parmi les exemples typiques d'étapes ML, citons le prétraitement, la formation et l'évaluation. Le SDK Step Functions fournit un certain nombre d'étapes intégrées (telles que leÉtape de formation) que vous pouvez utiliser. Parmi les exemples de données, citons l'entrée, la sortie et de nombreux jeux de données intermédiaires produits par certaines étapes du pipeline. Lorsque vous concevez un pipeline ML, vous ne connaissez pas les valeurs concrètes des éléments de données. Vous pouvez définirespaces réservés de donnéesqui servent de modèle (similaire aux paramètres de fonction) et ne contiennent que le nom de l'élément de données et des types de données primitifs. De cette façon, vous pouvez concevoir un plan de pipeline complet sans connaître à l'avance les valeurs concrètes des données voyageant sur le graphique. À cette fin, vous pouvez utiliser les classes d'espace réservé dans le kit SDK Step Functions pour modéliser explicitement ces modèles de données. Les pipelines ML nécessitent également des paramètres de configuration pour effectuer un contrôle précis du comportement de chaque étape ML. Ces espaces réservés de données spéciaux sont appelésespaces réservés de paramètres. La plupart de leurs valeurs sont inconnues lorsque vous définissez le pipeline. Des exemples d'espaces réservés aux paramètres incluent les paramètres liés à l'infrastructure que vous définissez lors de la conception du pipeline (par exemple, l'URL de l'image de la région AWS ou du conteneur) et les paramètres liés à la modélisation ML (tels que des hyperparamètres) que vous définissez lorsque vous exécutez le pipeline. Extension du SDK Step Functions Dans notre implémentation de référence, l'une des exigences consistait à séparer les définitions de pipeline ML de la création et du déploiement concrets de pipeline ML en utilisant des paramètres spécifiques. Cependant, certaines des étapes intégrées du SDK Step Functions ne nous ont pas permis de transmettre tous ces paramètres d'espace réservé. Au lieu de cela, les valeurs des paramètres devaient être directement obtenues pendant la conception du pipeline via les appels d'API de configuration SageMaker. Cela fonctionne correctement si l'environnement de conception SageMaker est identique à l'environnement d'exécution SageMaker, mais c'est rarement le cas dans les paramètres réels. Un couplage aussi étroit entre le temps de conception du pipeline et l'exécution, et l'hypothèse que l'infrastructure de la plate-forme ML restera constante, entrave considérablement l'applicabilité du pipeline conçu. En fait, le pipeline ML se brise immédiatement lorsque la plate-forme de déploiement sous-jacente subit le moindre changement. Pour surmonter ce défi et produire un pipeline ML robuste (que nous voulions concevoir une seule fois et exécuter n'importe où), nous avons implémenté nos propres étapes personnalisées en étendant certaines étapes intégrées, notamment :Étape de formation,Modèle Step, etÉtape du Extension du SDK Step Functions 10
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS transformateur. Ces extensions sont fournies dans leProjet ML Max. Les interfaces de ces étapes personnalisées prennent en charge beaucoup plus d'espaces réservés de paramètres pouvant être remplis de valeurs concrètes lors de la création du pipeline ou lorsque le pipeline est en cours d'exécution. Extension du SDK Step Functions 11
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Étape 4. Crée le pipeline Une fois que vous avez défini le pipeline de manière logique, il est temps de créer l'infrastructure pour prendre en charge le pipeline. Cette étape nécessite au minimum les fonctionnalités suivantes : • Stockage, pour héberger et gérer les entrées et sorties de pipeline, y compris le code, les artefacts de modèle et les données utilisées dans les exécutions d'entraînement et d'inférence. • Calcul (GPU ou CPU), pour la modélisation et l'inférence ainsi que pour le prétraitement et le post- traitement des données. • Orchestration, pour gérer les ressources utilisées et pour planifier les exécutions régulières. Par exemple, le modèle peut être recyclé périodiquement à mesure que de nouvelles données deviennent disponibles. • Enregistrement et alerte, pour surveiller la précision du modèle de pipeline, l'utilisation des ressources et le dépannage. Implémentation avecAWS CloudFormation Pour créer le pipeline que nous avons utiliséAWS CloudFormation, qui est uneAWSservice de déploiement et de gestion de l'infrastructure sous forme de code. LeAWS CloudFormationincluent la définition Step Functions créée à l'étape précédente avec le kit SDK Step Functions. Cette étape inclut la création de l'instance Step Functions gérées par AWS, appelée laMachine d'état Step Implémentation avecAWS CloudFormation 12
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Functions. Aucune ressource pour la formation et l'inférence n'est créée à ce stade, car les tâches de formation et d'inférence sont exécutées à la demande, uniquement lorsqu'elles sont nécessaires, en tant que tâches SageMaker. Cette étape inclut également la créationAWS Identity and Access Management(IAM) pour exécuter les Step Functions, exécuter SageMaker et lire et écrire à partir d'Amazon S3. Modification de la sortie du SDK Step Functions Nous avons dû apporter quelques modifications mineures auAWS CloudFormationsortie de la section précédente. Nous avons utilisé une correspondance de chaînes Python simple pour effectuer les opérations suivantes : • Nous avons ajouté une logique pour créer leParametersSection duAWS CloudFormationmodèle. En effet, nous voulons créer deux rôles et définir le nom du pipeline en tant que paramètre avec l'environnement de déploiement. Cette étape couvre également toutes les ressources et rôles supplémentaires que vous pourriez vouloir créer, comme indiqué à l'étape 6. • Nous avons reformaté trois champs pour avoir les éléments requis!Subpréfixe et guillemets afin qu'ils puissent être mis à jour dynamiquement dans le cadre du processus de déploiement : • LeStateMachineName, qui nomme la machine d'état. • LeDefinitionString, qui définit la machine d'état. • LeRoleArn, qui est renvoyée par la machine d'état. Modification de la sortie du SDK Step Functions 13
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Étape 5. Exécutez le pipeline Cette étape exécute le pipeline de formation ou d'inférence créé dans leAWS CloudFormationempilez à l'étape 4. Le pipeline ne peut pas être exécuté tant que ses paramètres d'espace réservé internes n'ont pas été remplis de valeurs concrètes. Cette action consistait à attribuer des valeurs à des paramètres d'espace réservé est l'activité principale de l'étape 5. Voici des exemples de paramètres d'espace réservé : • Emplacement des jeux de données en entrée, en sortie et intermédiaires • Emplacement Amazon S3 des scripts d'exécution et d'autres codes de prétraitement ou d'évaluation développés à l'étape 2 (par exemple,sm_submit_urlpour le pipeline de formation) • Nom de laAWSRegion (Région) Vous devez vous assurer que ces valeurs de chemin pointent vers des données ou du code valides avant d'exécuter le pipeline. Par exemple, si vous renseignez le paramètre réservé qui représente l'URL Amazon S3 des scripts d'exécution Python, vous devez charger ces scripts vers cette URL. La personne qui gère le pipeline est responsable de la vérification de la cohérence et du chargement des données. Les personnes qui définissent ou créent le pipeline n'ont pas à s'inquiéter de tout cela. Selon la maturité du pipeline, cette étape peut être automatisée pour être exécutée sur une base régulière (hebdomadaire ou mensuelle). L'automatisation nécessite également une surveillance robuste, qui est un domaine important mais ne fait pas partie de ce guide. Pour l'exécution du 14
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS pipeline de formation, il serait approprié de surveiller les mesures d'évaluation. Pour le pipeline d'inférence, il serait approprié de surveiller la dérive de la distribution des données en entrée et, si possible, de collecter périodiquement les étiquettes et de mesurer la dérive dans la précision de la prédiction. Ces enregistrements issus des essais d'entraînement et d'inférence doivent être enregistrés dans une base de données pour analyse ultérieurement. 15
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Étape 6. Développez le pipeline Ce guide explique comment commencer à créer des pipelines ML surAWSrapidement, avec une architecture concrète. Il existe d'autres considérations pour la maturation du pipeline, telles que la gestion des métadonnées, le suivi des expériences et la surveillance. Ce sont des sujets importants qui ne sont pas pris en compte dans le cadre de ce guide. Les sections suivantes traitent d'un autre aspect de la gestion des pipelines, à savoir l'automatisation des pipelines. Différents niveaux d'automatisation Bien que vous puissiez configurer un pipeline de formation manuellement dans la console SageMaker, dans la pratique, nous recommandons de minimiser les points de contact manuels dans le déploiement des pipelines de formation ML pour garantir que les modèles ML sont déployés de manière cohérente et répétée. En fonction de vos besoins et des problèmes commerciaux auxquels vous êtes confronté, vous pouvez déterminer et mettre en œuvre une stratégie de déploiement sur trois niveaux : semi-automatisé, entièrement automatisé et entièrement géré. • Semi-automatisé : par défaut, les étapes décrites dans la section précédente suivent une approche semi-automatisée, car elles déploient le pipeline de formation et d'inférence en utilisantAWS CloudFormationmodèles. Cela permet d'assurer la reproductibilité du pipeline et vous aide à le modifier et à le mettre à jour facilement. • Entièrement automatisé — Une option plus avancée consiste à utiliser l'intégration et le déploiement continus (CI/CD) dans les environnements de développement, de préparation et de production. L'intégration des pratiques CI/CD au déploiement du pipeline de formation peut garantir que l'automatisation inclut la traçabilité ainsi que des portes de qualité. • Entièrement géré : en fin de compte, vous pouvez développer un système entièrement géré de sorte que vous puissiez déployer un pipeline de formation ML avec un ensemble de manifestes simples, et le système peut auto-configurer et coordonner les besoinsAWSServices . Dans ce guide, nous avons choisi de présenter une architecture concrète. Cependant, vous pouvez envisager d'autres technologies. Les deux sections suivantes discutent d'autres choix pour la plateforme et le moteur d'orchestration. Différents niveaux d'automatisation 16
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Différentes plateformes pour charges de travail ML Amazon SageMakerest leAWSservice géré pour la formation et le service des modèles ML. De nombreux utilisateurs apprécient sa vaste gamme de fonctionnalités intégrées et les nombreuses options qu'il offre pour exécuter des charges de travail ML. SageMaker est particulièrement utile si vous commencez tout juste à implémenter ML dans le cloud. Les principales fonctionnalités de SageMaker sont les suivantes : • Traçabilité intégrée (y compris l'étiquetage, la formation, le suivi des modèles, l'optimisation et l'inférence). • Options intégrées en un clic pour l'entraînement et l'inférence avec une expérience Python et ML minimale. • Réglage avancé des hyperparamètres. • Support de tous les principaux frameworks d'intelligence artificielle et d'apprentissage automatique (ML/AI) et des conteneurs Docker personnalisés. • Capacités de surveillance intégrées. • Suivi intégré des historiques, y compris les tâches de formation, les tâches de traitement, les tâches de transformation par lots, les modèles, les points de terminaison et la capacité de recherche. Certains historiques, tels que la formation, le traitement et la transformation par lots, sont immuables et ajoutés uniquement. L'une des alternatives à l'utilisation de SageMaker estAWS Batch.AWS Batchoffre un niveau de contrôle inférieur sur le calcul et l'orchestration de votre environnement, mais il n'est pas conçu sur mesure pour l'apprentissage automatique. Voici quelques-unes de ses principales caractéristiques : • Mise à l'échelle automatique prête à l'emploi des ressources de calcul en fonction de la charge de travail. • Prise en charge prête à l'emploi pour la priorité des tâches, les nouvelles tentatives et les dépendances des tâches. • Approche basée sur la file d'attente qui prend en charge la création de tâches récurrentes et à la demande. • Support des charges de travail CPU et GPU. La capacité d'utiliser le GPU pour créer des modèles ML est essentielle, car le GPU peut accélérer considérablement le processus de formation, en particulier pour les modèles de Deep Learning. Différentes plateformes pour charges de travail ML 17
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS • Possibilité de définir une personnalisationAmazon Machine Image(AMI) pour l'environnement de calcul. Différents moteurs pour l'orchestration de pipelines Le deuxième composant principal est la couche d'orchestration du pipeline.AWSfournitStep Functionspour une expérience d'orchestration entièrement gérée. Une alternative populaire aux fonctions Step Functions est Apache Airflow. Lors de la prise de décision entre les deux, prenez en considération les éléments suivants : • Infrastructure requise —AWS Step Functionsest un service entièrement géré et sans serveur, alors qu'Airflow nécessite la gestion de votre propre infrastructure et repose sur des logiciels open source. Par conséquent, Step Functions offre une haute disponibilité prête à l'emploi, tandis que l'administration d'Apache Airflow nécessite des étapes supplémentaires. • Capacités de planification — Les fonctions Step Functions et Airflow offrent des fonctionnalités comparables. • Capacités de visualisation et interface utilisateur : les Step Functions et Airflow offrent des fonctionnalités comparables. • Transmission de variables dans le graphique de calcul — Step Functions offre des fonctionnalités limitées pour l'utilisationAWS Lambda, tandis que Airflow fournit des interfaces XCom. • Utilisation — Step Functions est très populaire parmiAWSclients, et Airflow a été largement adopté par la communauté de l'ingénierie des données. Différents moteurs pour l'orchestration de pipelines 18
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Conclusion Alors que l'apprentissage automatique passe d'une discipline de recherche à un domaine appliqué, nous avons enregistré une croissance annuelle de 25 % du développement, du déploiement et de l'exploitation de pipelines ML dans divers secteurs. La valeur commerciale de ML est réalisée par le biais d'opérations et de pipelines de ML quotidiens, qui, à leur tour, stimulent la recherche et le développement de modèles et d'algorithmes ML. Néanmoins, le déploiement de ML en production présente de nombreux défis, car il entremêle des activités et des artefacts significativement différents, tels que la gestion des données, le traitement, l'analyse, la modélisation, la vérification et la sécurité. Grâce à de nombreux engagements AI/ML avecAWSclients, notre équipe Data Science a constaté que l'un des principaux défis est l'absence d'un flux de travail de bout en bout qui fournirait un ensemble de modèles permettant de fusion ou de séparation optimale des différentes activités et artefacts ML DevOps. Dans ce guide, nous avons présenté leflux de travail ML Maxpour résoudre ce problème pressant. ML Max fournit des directives étape par étape et un ensemble de modèles de programmation. L'objectif est de permettre une transition rapide et rentable d'une phase de développement de modèles interactifs à une configuration complète et évolutive de pipeline ML prête pour la production. 19
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Ressources supplémentaires Guides et modèles associés • Quantifier l'incertitude dans les systèmes de Deep Learning • Migrez les charges de travail de génération, de formation et de déploiement ML vers Amazon SageMaker à l'aide deAWSOutils pour développeurs • AWSSite Web de Conseils concernant les prescriptifs AWSservices • AWS Batch • AWS CloudFormation • GIA • Amazon SageMaker • AWS Step Functions AWSRessources générales • Documentation AWS • AWSRéférence générale • AWSglossaire 20
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS Historique du document Le tableau suivant décrit les modifications importantes apportées à ce guide. Si vous souhaitez être alerté des mises à jour à future, abonnez-vous àFlux RSS. Modification Description Date Première version — 29 janvier 2021 21
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS AWS Glossaire des directives prescriptives Les termes suivants sont couramment utilisés dans les stratégies, les guides et les modèles fournis par les directives AWS prescriptives. Pour suggérer des entrées, veuillez utiliser le lien Faire un commentaire à la fin du glossaire. Nombres 7R Sept politiques de migration courantes pour transférer des applications vers le cloud. Ces politiques s'appuient sur les 5 R identifiés par Gartner en 2011 et sont les suivantes : • Refactorisation/réarchitecture : transférez une application et modifiez son architecture en tirant pleinement parti des fonctionnalités natives cloud pour améliorer l'agilité, les performances et la capacité de mise à l'échelle. Cela implique généralement le transfert du système d'exploitation et de la base de données. Exemple : migrez votre base de données Oracle sur site vers Amazon Aurora Édition compatible avec PostgreSQL. • Replateformer (déplacer et remodeler) : transférez une application vers le cloud et introduisez un certain niveau d'optimisation pour tirer parti des fonctionnalités du cloud. Exemple : migrez votre base de données Oracle sur site vers Amazon Relational Database Service (Amazon RDS) pour Oracle in the Cloud. AWS • Racheter (rachat) : optez pour un autre produit, généralement en passant d'une licence traditionnelle à un modèle SaaS. Exemple : migrez votre système de gestion de la relation client (CRM) vers Salesforce.com. • Réhéberger (lift and shift) : transférez une application vers le cloud sans apporter de modifications pour tirer parti des fonctionnalités du cloud. Exemple : migrez votre base de données Oracle sur site vers Oracle sur une instance EC2 dans le AWS cloud. • Relocaliser (lift and shift au niveau de l'hyperviseur) : transférez l'infrastructure vers le cloud sans acheter de nouveau matériel, réécrire des applications ou modifier vos opérations existantes. Ce scénario de migration est spécifique à VMware Cloud on AWS, qui prend en charge la compatibilité des machines virtuelles (VM) et la portabilité de la charge de travail entre votre environnement sur site et AWS. Vous pouvez utiliser les technologies VMware Cloud Foundation à partir de vos centres de données sur site lorsque vous migrez votre infrastructure vers VMware Cloud on AWS. Exemple : déplacez l'hyperviseur hébergeant votre base de données Oracle vers VMware Cloud on. AWS # 22
AWS Conseils prescriptifs Création de pipelines ML prêts pour la production sur AWS • Retenir : conservez les applications dans votre environnement source. Il peut s'agir d'applications nécessitant une refactorisation majeure, que vous souhaitez retarder, et d'applications existantes que vous souhaitez retenir, car rien ne justifie leur migration sur le plan commercial. • Retirer : mettez hors service ou supprimez les applications dont vous n'avez plus besoin dans votre environnement source. A ABAC Voir contrôle d'accès basé sur les attributs. services abstraits Consultez la section Services gérés. ACIDE Voir atomicité, consistance, isolation, durabilité. migration active-active Méthode de migration de base de données dans laquelle la synchronisation des bases de données source et cible est maintenue (à l'aide d'un outil de réplication bidirectionnelle ou d'opérations d'écriture double), tandis que les deux bases de données gèrent les transactions provenant de la connexion d'applications pendant la migration. Cette méthode prend en charge la migration par petits lots contrôlés au lieu d'exiger un basculement ponctuel. Elle est plus flexible mais demande plus de travail qu'une migration active-passive. migration active-passive Méthode de migration de base de données dans laquelle la synchronisation des bases de données source et cible est maintenue, mais seule la base de données source gère les transactions provenant de la connexion d'applications pendant que les données sont répliquées vers la base de données cible. La base de données cible n'accepte aucune transaction pendant la migration. fonction d'agrégation Fonction SQL qui agit sur un groupe de lignes et calcule une valeur de retour unique pour le groupe. Des exemples de fonctions d'agrégation incluent SUM etMAX. A 23
Vous pouvez aussi lire