Les scientifiques des données forment souvent leurs modèles localement et recherchent un service d'hébergement approprié pour déployer leurs modèles. Malheureusement, il n'existe pas de mécanisme ou de guide unique pour déployer des modèles pré-formés dans le cloud. Dans cet article, nous examinons le déploiement de modèles entraînés pour Amazon Sage Maker hébergement pour réduire votre temps de déploiement.
SageMaker est un service d'apprentissage automatique (ML) entièrement géré. Avec SageMaker, vous pouvez rapidement créer et former des modèles ML et les déployer directement dans un environnement hébergé prêt pour la production. De plus, vous n'avez pas besoin de gérer les serveurs. Vous obtenez un environnement de bloc-notes Jupyter intégré avec un accès facile à vos sources de données. Vous pouvez effectuer une analyse des données, former vos modèles et les tester à l'aide de vos propres algorithmes ou utiliser les algorithmes ML fournis par SageMaker qui sont optimisés pour s'exécuter efficacement sur de grands ensembles de données répartis sur plusieurs machines. La formation et l'hébergement sont facturés à la minute d'utilisation, sans frais minimum et sans engagement initial.
Vue d'ensemble de la solution
Les scientifiques des données forment parfois des modèles localement à l'aide de leur IDE et expédient ces modèles à l'équipe d'ingénierie ML pour déploiement ou exécutent simplement des prédictions localement sur des machines puissantes. Dans cet article, nous présentons une bibliothèque Python qui simplifie le processus de déploiement de modèles sur SageMaker pour hébergement sur des points de terminaison en temps réel ou sans serveur.
Cette bibliothèque Python offre aux scientifiques des données une interface simple pour démarrer rapidement sur SageMaker sans avoir besoin de connaître les fonctionnalités de bas niveau de SageMaker.
Si vous avez des modèles formés localement à l'aide de votre IDE préféré et que vous souhaitez bénéficier de l'échelle du cloud, vous pouvez utiliser cette bibliothèque pour déployer votre modèle sur SageMaker. Avec SageMaker, en plus de tous les avantages de mise à l'échelle d'une plate-forme ML basée sur le cloud, vous avez accès à des outils de formation spécialement conçus (formation distribuée, réglage d'hyperparamètres), à la gestion des expériences, à la gestion des modèles, à la détection des biais, à l'explicabilité des modèles et bien d'autres. des fonctionnalités qui peuvent vous aider dans tous les aspects du cycle de vie ML. Vous pouvez choisir parmi les trois frameworks les plus populaires pour le ML : Scikit-learn, PyTorch et TensorFlow, et choisir le type de calcul que vous souhaitez. Des valeurs par défaut sont fournies en cours de route afin que les utilisateurs de cette bibliothèque puissent déployer leurs modèles sans avoir à prendre de décisions complexes ou à apprendre de nouveaux concepts. Dans cet article, nous vous montrons comment démarrer avec cette bibliothèque et optimiser le déploiement de vos modèles ML sur l'hébergement SageMaker.
La bibliothèque se trouve dans le GitHub référentiel.
La boîte à outils de migration SageMaker
La SageMakerMigration
La classe est disponible via une bibliothèque Python publiée sur GitHub. Les instructions d'installation de cette bibliothèque sont fournies dans le référentiel ; assurez-vous de suivre le README pour configurer correctement votre environnement. Après avoir installé cette bibliothèque, le reste de cet article explique comment vous pouvez l'utiliser.
La SageMakerMigration
La classe se compose d'abstractions de haut niveau sur les API SageMaker qui réduisent considérablement les étapes nécessaires pour déployer votre modèle sur SageMaker, comme illustré dans la figure suivante. Ceci est destiné à l'expérimentation afin que les développeurs puissent rapidement démarrer et tester SageMaker. Il n'est pas destiné aux migrations de production.
Pour les modèles Scikit-learn, PyTorch et TensorFlow, cette bibliothèque prend en charge le déploiement de modèles formés sur un point de terminaison en temps réel SageMaker ou un point de terminaison sans serveur. Pour en savoir plus sur les options d'inférence dans SageMaker, reportez-vous à Déployer des modèles pour l'inférence.
Points de terminaison en temps réel ou sans serveur
L'inférence en temps réel est idéale pour les charges de travail d'inférence où vous avez des exigences en temps réel, interactives et à faible latence. Vous pouvez déployer votre modèle sur les services d'hébergement SageMaker et obtenir un point de terminaison pouvant être utilisé pour l'inférence. Ces points de terminaison sont entièrement gérés et prennent en charge la mise à l'échelle automatique.
SageMaker Serverless Inference est une option d'inférence spécialement conçue qui vous permet de déployer et de mettre à l'échelle facilement des modèles ML. L'inférence sans serveur est idéale pour les charges de travail qui ont des périodes d'inactivité entre les pics de trafic et qui peuvent tolérer les démarrages à froid. Les points de terminaison sans serveur lancent automatiquement les ressources de calcul et les augmentent et diminuent en fonction du trafic, éliminant ainsi le besoin de choisir des types d'instance ou de gérer des politiques de mise à l'échelle. Cela enlève le poids indifférencié de la sélection et de la gestion des serveurs.
Selon votre cas d'utilisation, vous souhaiterez peut-être héberger rapidement votre modèle sur SageMaker sans avoir une instance toujours active et sans encourir de coûts, auquel cas un point de terminaison sans serveur est une excellente solution.
Préparez votre modèle entraîné et votre script d'inférence
Après avoir identifié le modèle que vous souhaitez déployer sur SageMaker, vous devez vous assurer que le modèle est présenté à SageMaker dans le bon format. Les points de terminaison SageMaker se composent généralement de deux composants : l'artefact de modèle formé (.pth, .pkl, etc.) et un script d'inférence. Le script d'inférence n'est pas toujours obligatoire, mais s'il n'est pas fourni, les gestionnaires par défaut du conteneur de service que vous utilisez sont appliqués. Il est essentiel de fournir ce script si vous avez besoin de personnaliser votre fonctionnalité d'entrée/sortie pour l'inférence.
L'artefact de modèle formé est simplement un modèle Scikit-learn, PyTorch ou TensorFlow enregistré. Pour Scikit-learn, il s'agit généralement d'un fichier pickle, pour PyTorch, il s'agit d'un fichier .pt ou .pth, et pour TensorFlow, il s'agit d'un dossier contenant des actifs, des fichiers .pb et d'autres variables.
En règle générale, vous devez pouvoir contrôler la façon dont votre modèle traite les entrées et effectue l'inférence, et contrôler le format de sortie de votre réponse. Avec SageMaker, vous pouvez fournir un script d'inférence pour ajouter cette personnalisation. Tout script d'inférence utilisé par SageMaker doit avoir une ou plusieurs des quatre fonctions de gestionnaire suivantes : model_fn
, input_fn
, predict_fn
et une output_fn
.
Notez que ces quatre fonctions s'appliquent à PyTorch ainsi que Scikit-apprendre conteneurs spécifiquement. TensorFlow a des gestionnaires légèrement différents car il est intégré à Servir TensorFlow. Pour un script d'inférence avec TensorFlow, vous disposez de deux gestionnaires de modèles: input_handler et output_handler. Encore une fois, ceux-ci ont le même objectif de prétraitement et de post-traitement avec lequel vous pouvez travailler, mais ils sont configurés légèrement différemment pour s'intégrer à Servir TensorFlow. Pour les modèles PyTorch, model_fn est une fonction obligatoire à avoir dans le script d'inférence.
modèle_fn
Il s'agit de la fonction qui est appelée en premier lorsque vous appelez votre point de terminaison SageMaker. C'est ici que vous écrivez votre code pour charger le modèle. Par exemple:
Selon le framework et le type de modèle, ce code peut changer, mais la fonction doit renvoyer un modèle initialisé.
entrée_fn
Il s'agit de la deuxième fonction qui est appelée lorsque votre point de terminaison est appelé. Cette fonction prend les données envoyées au point de terminaison pour inférence et les analyse dans le format requis pour que le modèle génère une prédiction. Par exemple:
La request_body
contient les données à utiliser pour générer l'inférence à partir du modèle et est analysée dans cette fonction afin qu'elle soit au format requis.
prédire_fn
Il s'agit de la troisième fonction qui est appelée lorsque votre modèle est appelé. Cette fonction prend les données d'entrée prétraitées renvoyées par input_fn
et utilise le modèle renvoyé par model_fn
pour faire la prédiction. Par exemple:
Vous pouvez éventuellement ajouter output_fn
pour analyser la sortie de predict_fn
avant de le retourner au client. La signature de la fonction est def output_fn(prediction, content_type)
.
Déplacez votre modèle pré-formé vers SageMaker
Une fois que vous disposez de votre fichier de modèle entraîné et de votre script d'inférence, vous devez placer ces fichiers dans un dossier comme suit :
Une fois votre modèle et votre script d'inférence préparés et enregistrés dans cette structure de dossiers, votre modèle est prêt à être déployé sur SageMaker. Voir le code suivant :
Après le déploiement de votre point de terminaison, assurez-vous de nettoyer toutes les ressources que vous n'utiliserez pas via la console SageMaker ou via le delete_endpoint Appel de l'API Boto3.
Conclusion
L'objectif du projet SageMaker Migration Toolkit est de permettre aux scientifiques des données d'intégrer facilement leurs modèles dans SageMaker afin de tirer parti de l'inférence basée sur le cloud. Le référentiel continuera d'évoluer et prendra en charge davantage d'options pour la migration des charges de travail vers SageMaker. Le code est open source et nous accueillons les contributions de la communauté par le biais de demandes d'extraction et de problèmes.
Jetez un coup d'œil au GitHub référentiel pour en savoir plus sur l'utilisation de la boîte à outils de migration SageMaker, et n'hésitez pas à contribuer également des exemples ou des demandes de fonctionnalités à ajouter au projet !
À propos des auteurs
Kirit Thadaka est un architecte de solutions ML travaillant dans l'équipe Amazon SageMaker Service SA. Avant de rejoindre AWS, Kirit a passé du temps à travailler dans des startups d'IA en phase de démarrage, suivies d'un certain temps dans le conseil dans divers rôles dans la recherche sur l'IA, les MLOps et la direction technique.
Ram Végiraju est un architecte ML au sein de l'équipe SageMaker Service. Il se concentre sur l'aide aux clients pour créer et optimiser leurs solutions d'IA/ML sur Amazon SageMaker. Dans ses temps libres, il aime voyager et écrire.
- AI
- art de l'IA
- générateur d'art ai
- robot IA
- Amazon Sage Maker
- intelligence artificielle
- certification en intelligence artificielle
- intelligence artificielle en banque
- robot d'intelligence artificielle
- robots d'intelligence artificielle
- logiciel d'intelligence artificielle
- Apprentissage automatique AWS
- blockchain
- conférence blockchain ai
- cognitif
- intelligence artificielle conversationnelle
- crypto conférence ai
- de dall
- l'apprentissage en profondeur
- google ai
- Intermédiaire (200)
- machine learning
- Platon
- platon ai
- Intelligence des données Platon
- Jeu de Platon
- PlatonDonnées
- jeu de platogamie
- échelle ai
- syntaxe
- zéphyrnet