Intelligence artificielle

Déployer, surveiller et faire évoluer des modèles d'apprentissage automatique sur AWS

Déployer, surveiller et faire évoluer des modèles d'apprentissage automatique sur AWS


Le déploiement de solutions d'apprentissage automatique robustes et évolutives reste un processus assez artisanal et compliqué, nécessitant beaucoup d'implication et d'efforts humains. En conséquence, les nouveaux produits et services mettent longtemps sur le marché ou sont abandonnés dans un état prototype, ce qui réduit l'intérêt au sein de l'industrie. Alors, comment pouvons-nous faciliter le processus de mise en production d'un modèle d'apprentissage automatique?

Cortex est une plate-forme open source pour le déploiement de modèles d'apprentissage automatique en tant que services Web de production. Il tire parti du puissant écosystème AWS pour déployer, surveiller et faire évoluer les modèles agnostiques au cadre selon les besoins. Ses principales caractéristiques peuvent être résumées comme suit:

  • Indépendant du cadre: Cortex prend en charge n'importe quel morceau de code python; TensorFlow, PyTorch, scikit-learn, XGBoost, sont tous soutenus par la bibliothèque, comme tout autre script python.
  • Mise à l'échelle automatique: Cortex évolue automatiquement dans et hors de vos API pour gérer les charges de travail de production.
  • Prise en charge CPU / GPU: Cortex peut s'exécuter sur un environnement CPU ou GPU en utilisant AWS IaaS comme infrastructure de substrat.
  • Instances ponctuelles: Cortex prend en charge les instances ponctuelles EC2 pour réduire les coûts.
  • Mises à jour continues: Cortex applique toutes les mises à jour au modèle sans aucun temps d'arrêt.
  • Streaming des journaux: Cortex conserve les journaux des modèles déployés et les diffuse vers votre CLI, en utilisant une syntaxe de type docker familière.
  • Surveillance des prévisions: Cortex surveille les mesures du réseau et suit les prévisions.
  • Configuration minimale: Les configurations de déploiement de Cortex sont définies comme un simple fichier YAML.

Dans cette histoire, nous utilisons Cortex pour déployer un modèle de classification d'images en tant que service Web sur AWS. Alors, sans plus tarder, introduisons Cortex.

Pour cet exemple, nous utilisons la bibliothèque fast.ai et empruntons le modèle de classification des animaux de compagnie du premier cours du MOOC associé. Les sections suivantes couvrent l'installation de Cortex et le déploiement du modèle de classification des animaux de compagnie en tant que service Web.

Installation

La première chose à faire, si vous ne l'avez pas déjà fait, est de créer un nouveau compte utilisateur sur AWS avec un accès programmatique. Pour cela, sélectionnez le JE SUIS service, puis choisissez Utilisateurs à partir du panneau de droite et enfin, appuyez sur la Ajouter un utilisateur bouton. Donnez un nom à votre utilisateur et sélectionnez Accès programmatique.

Ensuite, dans le Autorisations écran sélectionnez le Attachez directement les politiques existantes onglet et choisissez Accès administrateur.

Vous pouvez laisser la page des balises vide, réviser et créer votre utilisateur. À la fin, prenez note du ID de clé d'accès et clé d'accès secrète.

Comme vous êtes sur la console AWS, vous pouvez également créer un S3 pour stocker le modèle formé et tout autre artefact que votre code peut produire. Vous pouvez nommer le seau comme vous le souhaitez, tant qu'il s'agit d'un nom unique. Pour cette histoire, nous créons un seau nommé cortex-pets-model.

À l'étape suivante, nous devons installer Cortex CLI sur notre système et lancer un cluster Kubernetes. Pour installer la Cortex CLI, exécutez la commande ci-dessous:

bash -c "$ (curl -sS https://raw.githubusercontent.com/cortexlabs/cortex/0.14/get-cli.sh)"

Vérifiez que vous installez la dernière version de Cortex CLI en visitant la section de documentation correspondante

Nous sommes maintenant prêts à mettre en place notre cluster. La création d'un cluster Kubernetes à l'aide de Cortex est triviale. Exécutez simplement la commande ci-dessous:

amas de cortex vers le haut

Cortex vous demandera de fournir certaines informations, telles que vos clés AWS, la région que vous souhaitez utiliser, les instances de calcul que vous souhaitez lancer et combien d'entre elles. Cortex vous indiquera également combien vous paierez en utilisant les services que vous avez choisis. L'ensemble du processus peut prendre jusqu'à 20 minutes.

Former votre modèle

Cortex ne se soucie pas de la façon dont vous créez ou entraînez votre modèle. Pour cet exemple, nous utilisons la bibliothèque fast.ai et le jeu de données Oxford-IIIT Pet. Cet ensemble de données contient 37 races différentes de chiens et de chats. Ainsi, notre modèle devrait classer chaque image dans ces 37 catégories.

Créer un trainer.py fichier comme celui ci-dessous.

Exécutez le script localement, comme n'importe quel autre script python: python trainer.py. Cependant, assurez-vous de fournir vos informations d'identification AWS et S3 nom du compartiment. Ce script récupère les données, les traite, s'adapte à un modèle ResNet pré-formé et les télécharge sur S3. Vous pouvez, bien sûr, étendre ce script pour rendre le modèle plus précis en utilisant plusieurs techniques - une architecture plus complexe, des taux d'apprentissage discriminants, un entraînement pour plus d'époques - mais cela n'est pas lié à notre objectif ici. Si vous souhaitez approfondir l'architecture ResNet, consultez l'article suivant.

Déployer votre modèle

Maintenant que notre modèle est formé et stocké sur S3, l'étape suivante consiste à le déployer en production en tant que service Web. À cette fin, nous créons un script python, appelé Predictor.py, comme ci-dessous:

Ce fichier définit une classe de prédicteurs. Lorsqu'il est instancié, il récupère le modèle de S3, le charge en mémoire et définit quelques transformations et paramètres nécessaires. Au cours de l'inférence, il lit une image à partir d'une donnée URL et renvoie le nom de la classe prédite. L'interface du prédicteur est exactement cela. Un __init__ méthode d'initialisation et prédire , qui reçoit la charge utile et renvoie un résultat.

Le script de prédiction a deux fichiers d'accompagnement. UNE requirements.txt fichier qui enregistre les dépendances de la bibliothèque (par exemple pytorch, fastai, boto3 etc.) et un fichier de configuration YAML. Une configuration minimale est donnée ci-dessous:

Dans ce fichier YAML, nous définissons le script à exécuter pour l'inférence, sur quel périphérique (par exemple CPU) et où trouver le modèle formé. Plus d'options sont disponibles dans la documentation.

Enfin, la structure du projet doit suivre la hiérarchie ci-dessous. Notez qu'il s'agit d'un strict minimum, bien que vous puissiez valider trainer.py si vous avez un modèle prêt à être déployé.

- Nom du projet
| ---- trainer.py
| ---- predor.py
| ---- requirements.txt
| ---- cortex.yaml

Ayant tout cela en place, vous pouvez simplement exécuter déploiement du cortex et en quelques secondes, votre nouveau noeud final est prêt à accepter les demandes. Exécuter corted get pets-classifier pour surveiller le point de terminaison et afficher des détails supplémentaires.

état à jour demandé dernière mise à jour demande moyenne 2XX   
en direct 1 1 13m - -
point de terminaison: http://a984d095c6d3a11ea83cc0acfc96419b-1937254434.us-west-2.elb.amazonaws.com/pets-classifier
curl: curl http://a984d095c6d3a11ea83cc0acfc96419b-1937254434.us-west-2.elb.amazonaws.com/pets-classifier?debug=true -X POST -H "Content-Type: application / json" -d @échantillon.json
configuration
nom: animaux-classificateur
endpoint: / pets-classifier
prédicteur:
type: python
chemin: predictor.py
config:
seau: cortex-pets-model
périphérique: cpu
key: model.pkl
calculer:
unité centrale de traitement: 200m
mise à l'échelle automatique:
min_replicas: 1
max_replicas: 100
init_replicas: 1
workers_per_replica: 1
threads_per_worker: 1
target_replica_concurrency: 1.0
max_replica_concurrency: 1024
fenêtre: 1m0s
downscale_stabilization_period: 5m0s
upscale_stabilization_period: 0s
max_downscale_factor: 0,5
max_upscale_factor: 10.0
downscale_tolerance: 0,1
upscale_tolerance: 0,1
update_strategy:
max_surge: 25%
max_indisponible: 25%

Ce qui reste est de le tester en utilisant boucle et l'image d'un poméranien:

curl http://a984d095c6d3a11ea83cc0acfc96419b-1937254434.us-west-2.elb.amazonaws.com/pets-classifier -X POST -H "Content-Type: application / json" -d '{"url": "https: / /i.imgur.com/HPRQ28l.jpeg "} '

Nettoyer

Lorsque nous avons terminé avec le service et notre cluster, nous devons libérer les ressources pour éviter les coûts supplémentaires. Cortex rend cela facile:

cortex supprimer les animaux de compagnie-classificateur
amas de cortex vers le bas

Dans cette histoire, nous avons vu comment utiliser Cortex, une plateforme open source pour déployer des modèles d'apprentissage automatique en tant que services Web de production. Nous avons formé un classificateur d'images, le déployons sur AWS, surveillons ses performances et le testons.

Pour des concepts plus avancés, tels que la surveillance des prévisions, les mises à jour continues, la configuration du cluster, la mise à l'échelle automatique et bien plus, visitez le site de documentation officiel et la page GitHub du projet.

Je m'appelle Dimitris Poulopoulos et je suis chercheur en apprentissage automatique à BigDataStack et PhD (c) à l'Université du Pirée, Grèce. J'ai travaillé sur la conception et la mise en œuvre de solutions IA et logicielles pour des clients majeurs tels que la Commission européenne, Eurostat, le FMI, la Banque centrale européenne, l'OCDE et IKEA. Si vous êtes intéressé à lire plus d'articles sur l'apprentissage automatique, l'apprentissage profond et la science des données, suivez-moi sur Moyen, LinkedIn ou @ james2pl sur Twitter.

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Fermer