À mesure que l’apprentissage automatique (ML) se généralise et est de plus en plus adopté, les applications d’inférence basées sur le ML deviennent de plus en plus courantes pour résoudre une série de problèmes commerciaux complexes. La solution à ces problèmes commerciaux complexes nécessite souvent l’utilisation de plusieurs modèles et étapes de ML. Cet article vous montre comment créer et héberger une application ML avec des conteneurs personnalisés sur Amazon Sage Maker.
Offres Amazon SageMaker algorithmes intégrés ainsi que le SageMaker pré-construit images Docker pour le déploiement du modèle. Mais si ceux-ci ne répondent pas à vos besoins, vous pouvez apporter vos propres conteneurs (BYOC) pour l'hébergement sur Amazon SageMaker.
Il existe plusieurs cas d'utilisation dans lesquels les utilisateurs peuvent avoir besoin de BYOC pour l'hébergement sur Amazon SageMaker.
- Frameworks ou bibliothèques de ML personnalisés : si vous envisagez d'utiliser un framework ou des bibliothèques de ML qui ne sont pas pris en charge par les algorithmes intégrés d'Amazon SageMaker ou les conteneurs prédéfinis, vous devrez créer un conteneur personnalisé.
- Modèles spécialisés : pour certains domaines ou secteurs, vous pouvez avoir besoin d'architectures de modèles spécifiques ou d'étapes de prétraitement personnalisées qui ne sont pas disponibles dans les offres Amazon SageMaker intégrées.
- Algorithmes propriétaires : si vous avez développé vos propres algorithmes propriétaires en interne, vous aurez besoin d'un conteneur personnalisé pour les déployer sur Amazon SageMaker.
- Pipelines d'inférence complexes : si votre flux de travail d'inférence ML implique une logique métier personnalisée (une série d'étapes complexes qui doivent être exécutées dans un ordre particulier), alors BYOC peut vous aider à gérer et orchestrer ces étapes plus efficacement.
Vue d'ensemble de la solution
Dans cette solution, nous montrons comment héberger une application d'inférence série ML sur Amazon SageMaker avec des points de terminaison en temps réel à l'aide de deux conteneurs d'inférence personnalisés avec la dernière scikit-learn
ainsi que le xgboost
packages.
Le premier conteneur utilise un scikit-learn
modèle pour transformer les données brutes en colonnes présentées. Ça s'applique Échelle standard pour les colonnes numériques et OneHotEncoder aux catégoriques.
Le deuxième conteneur héberge un pré-entraîné XGboost
modèle (c'est-à-dire, prédicteur). Le modèle prédictif accepte les prédictions d’entrée et de sortie présentées.
Enfin, nous déployons le featureuriseur ainsi que le prédicteur dans un pipeline d'inférence série vers un point de terminaison en temps réel Amazon SageMaker.
Voici quelques considérations différentes expliquant pourquoi vous souhaiterez peut-être avoir des conteneurs séparés dans votre application d'inférence.
- Découplage – Différentes étapes du pipeline ont un objectif clairement défini et doivent être exécutées sur des conteneurs séparés en raison des dépendances sous-jacentes impliquées. Cela permet également de garder le pipeline bien structuré.
- Cadres – Différentes étapes du pipeline utilisent des cadres spécifiques adaptés à l'objectif (tels que scikit ou Spark ML) et doivent donc être exécutés sur des conteneurs distincts.
- Isolement des ressources – Différentes étapes du pipeline ont des exigences de consommation de ressources variables et doivent donc être exécutées sur des conteneurs séparés pour plus de flexibilité et de contrôle.
- Entretien et mises à niveau – D'un point de vue opérationnel, cela favorise l'isolement fonctionnel et vous pouvez continuer à mettre à niveau ou modifier des étapes individuelles beaucoup plus facilement, sans affecter les autres modèles.
De plus, la construction locale des conteneurs individuels facilite le processus itératif de développement et de test avec les outils préférés et les environnements de développement intégrés (IDE). Une fois les conteneurs prêts, vous pouvez les déployer sur le cloud AWS pour inférence à l'aide des points de terminaison Amazon SageMaker.
L'implémentation complète, y compris les extraits de code, est disponible dans ce référentiel Github ici.
Pré-requis
Comme nous testons d’abord ces conteneurs personnalisés localement, nous aurons besoin du bureau Docker installé sur votre ordinateur local. Vous devez être familier avec la création de conteneurs Docker.
Vous aurez également besoin d'un compte AWS avec accès à Amazon SageMaker, Amazon ECR et Amazon S3 pour tester cette application de bout en bout.
Assurez-vous d'avoir la dernière version de Boto3
et les packages Amazon SageMaker Python installés :
Présentation de la solution
Créer un conteneur de fonctionnalités personnalisé
Pour construire le premier conteneur, le conteneur featureurizer, nous formons un scikit-learn
modèle pour traiter les caractéristiques brutes dans le ormeau base de données. Le script de prétraitement utilise SimpleImputeur pour gérer les valeurs manquantes, Échelle standard pour normaliser les colonnes numériques, et OneHotEncoder pour transformer les colonnes catégorielles. Après avoir installé le transformateur, nous sauvegardons le modèle dans joblib format. Nous compressons et téléchargeons ensuite cet artefact de modèle enregistré sur un Amazon Simple Storage Service (Amazon S3) seau.
Voici un exemple d'extrait de code qui illustre cela. Faire référence à featureurizer.ipynb pour une mise en œuvre complète :
Ensuite, pour créer un conteneur d'inférence personnalisé pour le modèle de featurizer, nous construisons une image Docker avec les packages nginx, gunicorn, flask, ainsi que d'autres dépendances requises pour le modèle de featurizer.
Nginx, gunicorn et l'application Flask serviront de pile de service modèle sur les points de terminaison en temps réel Amazon SageMaker.
Lorsque vous apportez des conteneurs personnalisés pour l'hébergement sur Amazon SageMaker, nous devons nous assurer que le script d'inférence effectue les tâches suivantes après avoir été lancé à l'intérieur du conteneur :
- Chargement du modèle : Script d'inférence (
preprocessing.py
) doit faire référence à/opt/ml/model
répertoire pour charger le modèle dans le conteneur. Les artefacts de modèle dans Amazon S3 seront téléchargés et montés sur le conteneur au niveau du chemin/opt/ml/model
. - Variables d'environnement: Pour transmettre des variables d'environnement personnalisées au conteneur, vous devez les spécifier lors de la Modèle étape de création ou pendant Endpoint création à partir d’un emploi de formation.
- Exigences API : Le script d'inférence doit implémenter à la fois
/ping
ainsi que le/invocations
itinéraires en tant qu’application Flask. Le/ping
L'API est utilisée pour les contrôles de santé, tandis que l'API/invocations
L'API gère les demandes d'inférence. - Enregistrement: Les journaux de sortie dans le script d'inférence doivent être écrits sur la sortie standard (Stdout) et l'erreur standard (stderr) ruisseaux. Ces journaux sont ensuite diffusés vers Amazon Cloud Watch par Amazon SageMaker.
Voici un extrait de preprocessing.py
qui montrent la mise en œuvre de /ping
ainsi que le /invocations
.
Reportez-vous à prétraitement.py sous le dossier featurizer pour une implémentation complète.
Créer une image Docker avec un fonctionnalité et une pile de diffusion de modèles
Créons maintenant un Dockerfile à l'aide d'une image de base personnalisée et installons les dépendances requises.
Pour cela, nous utilisons python:3.9-slim-buster
comme image de base. Vous pouvez modifier cette image avec toute autre image de base pertinente à votre cas d'utilisation.
Nous copions ensuite la configuration nginx, le fichier de passerelle du serveur Web de gunicorn et le script d'inférence dans le conteneur. Nous créons également un script python appelé serve qui lance les processus nginx et gunicorn en arrière-plan et définit le script d'inférence (c'est-à-dire l'application preprocessing.py Flask) comme point d'entrée du conteneur.
Voici un extrait du Dockerfile pour héberger le modèle featurizer. Pour une mise en œuvre complète, reportez-vous à Dockerfile sous featureuriseur dossier.
Testez l'image d'inférence personnalisée avec le featureurizer localement
Maintenant, créez et testez localement le conteneur d'inférence personnalisé avec le featurizer, à l'aide d'Amazon. Mode local SageMaker. Le mode local est parfait pour tester vos scripts de traitement, de formation et d'inférence sans lancer de tâches sur Amazon SageMaker. Après avoir confirmé les résultats de vos tests locaux, vous pouvez facilement adapter les scripts de formation et d'inférence pour le déploiement sur Amazon SageMaker avec des modifications minimes.
Pour tester l'image personnalisée du featurizer localement, créez d'abord l'image en utilisant le paramètre défini précédemment. Dockerfile. Ensuite, lancez un conteneur en montant le répertoire contenant le modèle de fonctionnalité (preprocess.joblib
) au /opt/ml/model
répertoire à l’intérieur du conteneur. De plus, mappez le port 8080 du conteneur vers l’hôte.
Une fois lancé, vous pouvez envoyer des requêtes d'inférence à http://localhost:8080/invocations.
Pour créer et lancer le conteneur, ouvrez un terminal et exécutez les commandes suivantes.
Notez que vous devez remplacer le <IMAGE_NAME>
, comme indiqué dans le code suivant, avec le nom de l'image de votre conteneur.
La commande suivante suppose également que la personne formée scikit-learn
modèle (preprocess.joblib
) est présent dans un répertoire appelé models
.
Une fois le conteneur opérationnel, nous pouvons tester à la fois le /ping ainsi que le /invocations itinéraires à l’aide des commandes curl.
Exécutez les commandes ci-dessous à partir d'un terminal
Lorsque des données brutes (non transformées) sont envoyées à http://localhost:8080/invocations, le point de terminaison répond avec des données transformées.
Vous devriez voir une réponse similaire à celle-ci :
Nous terminons maintenant le conteneur en cours d'exécution, puis marquons et transférons l'image personnalisée locale vers un registre Amazon Elastic Container Registry privé (ECR d'Amazon) référentiel.
Consultez les commandes suivantes pour vous connecter à Amazon ECR, qui balisent l'image locale avec le chemin complet de l'image Amazon ECR, puis transfèrent l'image vers Amazon ECR. Assurez-vous de remplacer region
ainsi que le account
variables adaptées à votre environnement.
Reportez-vous à créer un référentiel ainsi que le envoyer une image vers Amazon ECR Interface de ligne de commande AWS (CLI AWS) commandes pour plus d’informations.
Étape facultative
Vous pouvez éventuellement effectuer un test en direct en déployant le modèle de fonctionnalité sur un point de terminaison en temps réel avec l'image Docker personnalisée dans Amazon ECR. Faire référence à featureurizer.ipynb notebook pour la mise en œuvre complète de la création, des tests et du transfert de l'image personnalisée vers Amazon ECR.
Amazon SageMaker initialise le point de terminaison d'inférence et copie les artefacts du modèle dans le /opt/ml/model
répertoire à l’intérieur du conteneur. Voir Comment SageMaker charge vos artefacts de modèle.
Créer un conteneur de prédicteurs XGBoost personnalisé
Pour créer le conteneur d'inférence XGBoost, nous suivons des étapes similaires à celles utilisées lors de la création de l'image pour le conteneur featurizer :
- Télécharger pré-entraîné
XGBoost
modèle d'Amazon S3. - Créez la
inference.py
script qui charge le pré-entraînéXGBoost
modèle, convertit les données d'entrée transformées reçues du featurerizer et les convertit enXGBoost.DMatrix
formater, s'exécutepredict
sur le booster, et renvoie les prédictions au format json. - Scripts et fichiers de configuration qui forment la pile de diffusion de modèles (c'est-à-dire
nginx.conf
,wsgi.py
et uneserve
restent les mêmes et ne nécessitent aucune modification. - Nous utilisons
Ubuntu:18.04
comme image de base pour le Dockerfile. Ce n'est pas une condition préalable. Nous utilisons l'image de base Ubuntu pour démontrer que les conteneurs peuvent être construits avec n'importe quelle image de base. - Les étapes de création de l'image Docker client, de test de l'image localement et de transmission de l'image testée vers Amazon ECR restent les mêmes qu'auparavant.
Par souci de concision, car les étapes sont similaires à celles indiquées précédemment ; cependant, nous montrons uniquement le codage modifié dans ce qui suit.
La première, la inference.py
scénario. Voici un extrait qui montre la mise en œuvre de /ping
ainsi que le /invocations
. Faire référence à inférence.py sous le prédicteur dossier pour une implémentation complète de ce fichier.
Voici un extrait du Dockerfile pour héberger le modèle prédicteur. Pour une mise en œuvre complète, reportez-vous à Dockerfile sous le dossier prédicteur.
Nous continuons ensuite à créer, tester et transférer cette image de prédicteur personnalisée vers un référentiel privé dans Amazon ECR. Faire référence à prédicteur.ipynb notebook pour la mise en œuvre complète de la création, des tests et de la transmission de l'image personnalisée vers Amazon ECR.
Déployer un pipeline d'inférence série
Après avoir testé les images du featurizer et du prédicteur et les avoir transférées vers Amazon ECR, nous téléchargeons maintenant nos artefacts de modèle dans un compartiment Amazon S3.
Ensuite, nous créons deux objets modèles : un pour le featurizer
(c'est à dire, preprocess.joblib
) et d'autres pour le predictor
(c'est à dire, xgboost-model
) en spécifiant l'URI de l'image personnalisée que nous avons créée précédemment.
Voici un extrait qui le montre. Faire référence à pipeline-d'inférence-série.ipynb pour une mise en œuvre complète.
Maintenant, pour déployer ces conteneurs de manière série, nous créons d'abord un Modèle de pipeline objet et passer le featurizer
modèle et predictor
modèle en un objet de liste python dans le même ordre.
Ensuite, nous appelons le .deploy()
méthode sur le Modèle de pipeline en spécifiant le type d'instance et le nombre d'instances.
À ce stade, Amazon SageMaker déploie le pipeline d'inférence série sur un point de terminaison en temps réel. Nous attendons que le point final soit InService
.
Nous pouvons maintenant tester le point de terminaison en envoyant des requêtes d'inférence à ce point de terminaison en direct.
Reportez-vous à pipeline-d'inférence-série.ipynb pour une mise en œuvre complète.
Nettoyer
Une fois les tests terminés, veuillez suivre les instructions de la section de nettoyage du bloc-notes pour supprimer les ressources fournies dans cet article afin d'éviter des frais inutiles. Faire référence à Tarification d'Amazon SageMaker pour plus de détails sur le coût des instances d’inférence.
Conclusion
Dans cet article, j'ai montré comment nous pouvons créer et déployer une application d'inférence ML en série à l'aide de conteneurs d'inférence personnalisés sur des points de terminaison en temps réel sur Amazon SageMaker.
Cette solution montre comment les clients peuvent apporter leurs propres conteneurs personnalisés pour l'hébergement sur Amazon SageMaker de manière rentable. Avec l'option BYOC, les clients peuvent rapidement créer et adapter leurs applications ML à déployer sur Amazon SageMaker.
Nous vous encourageons à essayer cette solution avec un ensemble de données pertinent pour les indicateurs clés de performance (KPI) de votre entreprise. Vous pouvez vous référer à l'intégralité de la solution dans ce GitHub référentiel.
Bibliographie
À propos de l’auteur
Praveen Chamarthi est un spécialiste principal de l'IA/ML chez Amazon Web Services. Il est passionné par l'IA/ML et tout ce qui concerne AWS. Il aide les clients à travers les Amériques à faire évoluer, innover et exploiter efficacement les charges de travail ML sur AWS. Pendant son temps libre, Praveen aime lire et aime les films de science-fiction.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoData.Network Ai générative verticale. Autonomisez-vous. Accéder ici.
- PlatoAiStream. Intelligence Web3. Connaissance Amplifiée. Accéder ici.
- PlatonESG. Carbone, Technologie propre, Énergie, Environnement, Solaire, La gestion des déchets. Accéder ici.
- PlatoHealth. Veille biotechnologique et essais cliniques. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/build-and-deploy-ml-inference-applications-from-scratch-using-amazon-sagemaker/
- :possède
- :est
- :ne pas
- :où
- $UP
- 08
- 09
- 1
- 10
- 100
- 11
- 13
- 14
- 150
- 16
- 17
- 20
- 200
- 2023
- 25
- 28
- 30
- 500
- 7
- 8
- 87
- 9
- a
- A Propos
- Accepter
- Accepte
- accès
- en conséquence
- Compte
- à travers
- adapter
- En outre
- Adoption
- affectant
- Après
- AI / ML
- algorithmes
- Tous
- le long de
- aussi
- Amazon
- Amazon Sage Maker
- Amazon Web Services
- Amériques
- an
- ainsi que le
- tous
- api
- appli
- Application
- applications
- s'applique
- avr
- SONT
- tableau
- AS
- suppose
- At
- disponibles
- éviter
- AWS
- fond
- base
- basé
- BE
- devenir
- before
- va
- ci-dessous
- corps
- booster
- tous les deux
- apporter
- Apporter
- construire
- Développement
- construit
- intégré
- Pack de blanchiment
- la performance des entreprises
- mais
- by
- Appelez-nous
- appelé
- CAN
- maisons
- cas
- CHAT
- certaines
- Change
- modifié
- Modifications
- des charges
- vérifier
- Contrôles
- clairement
- le cloud
- code
- Codage
- Colonne
- Colonnes
- COM
- Commun
- complexe
- ordinateur
- configuration
- connecté
- connexion
- considérations
- constant
- construire
- consommation
- Contenant
- Conteneurs
- contenu
- contenu
- continuer
- des bactéries
- convertir
- Prix
- pourriez
- engendrent
- La création
- création
- Lettres de créance
- Customiser
- des clients
- Clients
- données
- Date
- Vous permet de définir
- défini
- démontrer
- démontre
- dépendances
- déployer
- déployé
- déployer
- déploiement
- déploie
- à poser
- détails
- déterminé
- développé
- Développement
- DICT
- DID
- différent
- Docker
- domaines
- fait
- Ne pas
- deux
- pendant
- e
- Plus tôt
- même
- efficacement
- d'autre
- encourager
- end-to-end
- Endpoint
- assurer
- Tout
- entrée
- Environment
- environnements
- erreur
- etc
- exemple
- Sauf
- exception
- réalisé
- familier
- Mode
- Favori
- Fonctionnalités:
- few
- Déposez votre dernière attestation
- Fichiers
- Prénom
- s'adapter
- raccord
- Flexibilité
- suivre
- Abonnement
- Pour
- formulaire
- le format
- trouvé
- Framework
- cadres
- De
- plein
- fonction
- fonctionnel
- Gains
- porte
- obtenez
- GitHub
- GMT
- Goes
- manipuler
- Poignées
- Maniabilité
- Vous avez
- he
- Santé
- la taille
- vous aider
- aide
- sa
- hôte
- hébergement
- hôtes
- Comment
- How To
- Cependant
- HTML
- http
- HTTPS
- i
- if
- image
- satellite
- Mettre en oeuvre
- la mise en oeuvre
- importer
- in
- inclut
- Y compris
- de plus en plus
- Indicateurs
- individuel
- secteurs
- d'information
- équipement d'interieur
- innovons
- contribution
- à l'intérieur
- installer
- Installé
- instance
- Des instructions
- des services
- Interfaces
- développement
- impliqué
- seul
- IT
- Emploi
- Emplois
- jpg
- json
- XNUMX éléments à
- ACTIVITES
- Libellé
- Nouveautés
- lancer
- lancé
- lance
- lancement
- apprentissage
- à gauche
- Longueur
- bibliothèques
- Gamme
- Liste
- Listé
- le travail
- charge
- chargement
- charges
- locales
- localement
- logique
- vous connecter
- aime
- click
- machine learning
- Courant dominant
- FAIT DU
- Fabrication
- gérer
- manière
- Localisation
- marque
- Match
- Mai..
- méthode
- pourrait
- minimal
- manquant
- ML
- Mode
- modèle
- numériques jumeaux (digital twin models)
- modifier
- PLUS
- Films
- beaucoup
- plusieurs
- must
- prénom
- noms
- Besoin
- Besoins
- aucune
- Aucun
- cahier
- maintenant
- nombre
- numpy
- objet
- objets
- of
- Offrandes
- Offres Speciales
- souvent
- on
- une fois
- ONE
- et, finalement,
- uniquement
- sur
- ouvert
- fonctionner
- opérationnel
- Option
- or
- de commander
- OS
- Autre
- nos
- sortie
- propre
- Forfaits
- pandas
- paramètres
- particulier
- pass
- passionné
- chemin
- parfaite
- Effectuer
- performant
- effectue
- pipeline
- plan
- Platon
- Intelligence des données Platon
- PlatonDonnées
- veuillez cliquer
- Point
- Post
- prédiction
- Prédictions
- Predictor
- représentent
- précédemment
- Privé
- d'ouvrabilité
- processus
- les process
- traitement
- Processeur
- favorise
- propriétaire
- but
- Push
- Poussé
- Poussant
- Python
- vite.
- augmenter
- gamme
- raw
- Lire
- solutions
- en temps réel
- reçu
- reportez-vous
- enregistrement
- pertinent
- rester
- remplacer
- dépôt
- nécessaire
- demandes
- exigent
- conditions
- Exigences
- a besoin
- ressource
- Resources
- réponse
- résultat
- Résultats
- retourner
- retour
- Retours
- Bagues
- Itinéraire
- routes
- RANGÉE
- Courir
- pour le running
- fonctionne
- sagemaker
- même
- Épargnez
- sauvé
- Escaliers intérieurs
- science-fiction
- gratter
- scénario
- scripts
- Deuxièmement
- Section
- sur le lien
- envoyer
- envoi
- supérieur
- envoyé
- séparé
- en série
- Série
- besoin
- serveur
- service
- Services
- service
- Session
- set
- Sets
- plusieurs
- Relations sexuelles
- devrait
- montrer
- montré
- montré
- Spectacles
- similaires
- étapes
- Fragment
- So
- sur mesure
- RÉSOUDRE
- quelques
- quelque chose
- Spark
- spécialiste
- groupe de neurones
- empiler
- Étape
- Standard
- point de vue
- Statut
- étapes
- Étapes
- storage
- streaming
- flux
- Chaîne
- structuré
- Avec succès
- tel
- Dimanche
- Appareils
- Appuyer
- Les soutiens
- TAG
- prend
- tâches
- terminal
- tester
- examiné
- Essais
- tests
- qui
- La
- leur
- Les
- puis
- Là.
- donc
- Ces
- des choses
- this
- fiable
- à
- les outils
- Train
- qualifié
- Formation
- Transformer
- transformé
- transformateur
- transformateurs
- transformer
- Essai
- essayer
- deux
- type
- Ubuntu
- sous
- sous-jacent
- inutile
- améliorer
- utilisable
- utilisé
- cas d'utilisation
- d'utiliser
- utilisateurs
- Usages
- en utilisant
- Valeurs
- divers
- variant
- vérifier
- version
- attendez
- souhaitez
- était
- we
- web
- le serveur web
- services Web
- WELL
- qui
- tout en
- why
- plus large
- sera
- comprenant
- dans les
- sans
- workflow
- de travail
- code écrit
- X
- XGBoost
- Vous n'avez
- Votre
- zéphyrnet