Modèles d'hébergement de modèles dans SageMaker : meilleures pratiques en matière de test et de mise à jour de modèles sur SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Modèles d'hébergement de modèles dans SageMaker : meilleures pratiques pour tester et mettre à jour des modèles sur SageMaker

Amazon Sage Maker est un service entièrement géré qui offre aux développeurs et aux spécialistes des données la possibilité de créer, former et déployer rapidement des modèles d'apprentissage automatique (ML). Avec SageMaker, vous pouvez déployer vos modèles ML sur des terminaux hébergés et obtenir des résultats d'inférence en temps réel. Vous pouvez facilement afficher les mesures de performances de vos points de terminaison dans Amazon Cloud Watch, dimensionner automatiquement les points de terminaison en fonction du trafic, et mettez à jour vos modèles en production sans perdre de disponibilité. SageMaker offre une grande variété d'options pour déployer des modèles ML pour l'inférence de l'une des manières suivantes, selon votre cas d'utilisation :

  • Pour les prédictions synchrones qui doivent être servies dans l'ordre des millisecondes, utilisez SageMaker inférence en temps réel
  • 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, utilisez Inférence sans serveur
  • Pour les demandes avec de grandes tailles de charge utile jusqu'à 1 Go, des temps de traitement longs (jusqu'à 15 minutes) et des exigences de latence en temps quasi réel (de quelques secondes à quelques minutes), utilisez SageMaker Inférence asynchrone
  • Pour obtenir des prédictions pour un ensemble de données entier, utilisez SageMaker transformation par lots

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 déployez votre modèle sur les services d'hébergement SageMaker et obtenez un point de terminaison qui peut être utilisé pour l'inférence. Ces terminaux sont soutenus par une infrastructure et un support entièrement gérés mise à l'échelle automatique. Vous pouvez améliorer l'efficacité et les coûts en combinant plusieurs modèles en un seul point de terminaison à l'aide de points de terminaison multimodèle or points de terminaison multi-conteneurs.

Dans certains cas d'utilisation, vous souhaitez déployer plusieurs variantes du même modèle en production pour évaluer leurs performances, mesurer les améliorations ou exécuter des tests A/B. Dans de tels cas, les points de terminaison à plusieurs variantes SageMaker sont utiles car ils vous permettent de déployer plusieurs variantes de production d'un modèle sur le même point de terminaison SageMaker.

Dans cet article, nous discutons des terminaux SageMaker à plusieurs variantes et des meilleures pratiques d'optimisation.

Comparaison des options d'inférence en temps réel de SageMaker

Le diagramme suivant donne un aperçu rapide des options d'inférence en temps réel avec SageMaker.

Un point de terminaison à modèle unique vous permet de déployer un modèle sur un conteneur hébergé sur des instances dédiées ou sans serveur pour une faible latence et un débit élevé. Vous pouvez créer un modèle et récupérer a Image prise en charge par SageMaker pour les frameworks populaires tels que TensorFlow, PyTorch, Scikit-learn, etc. Si vous travaillez avec un cadre personnalisé pour votre modèle, vous pouvez également apportez votre propre contenant qui installe vos dépendances.

SageMaker prend également en charge des options plus avancées telles que les points de terminaison multi-modèles (MME) et les points de terminaison multi-conteneurs (MCE). Les MME sont utiles lorsque vous traitez des centaines à des dizaines de milliers de modèles et que vous n'avez pas besoin de déployer chaque modèle en tant que point de terminaison individuel. Les MME vous permettent d'héberger plusieurs modèles de manière économique et évolutive au sein du même point de terminaison en utilisant un conteneur de service partagé hébergé sur une instance. L'infrastructure sous-jacente (conteneur et instance) reste la même, mais les modèles sont chargés et déchargés dynamiquement à partir d'un emplacement S3 commun, en fonction de l'utilisation et de la quantité de mémoire disponible sur le point de terminaison. Votre application doit simplement inclure un appel d'API avec le modèle cible vers ce point de terminaison pour obtenir une inférence à faible latence et à haut débit. Au lieu de payer pour un point de terminaison distinct pour chaque modèle, vous pouvez héberger plusieurs modèles pour le prix d'un seul point de terminaison.

Les MCE vous permettent d'exécuter jusqu'à 15 conteneurs ML différents sur un seul point de terminaison et de les appeler indépendamment. Vous pouvez créer ces conteneurs ML sur différentes piles de service (telles que le framework ML, le serveur de modèle et l'algorithme), à ​​exécuter sur le même point de terminaison pour des économies de coûts. Vous pouvez coudre les conteneurs ensemble dans un pipeline d'inférence série ou appeler le conteneur indépendamment. Cela peut être idéal lorsque vous avez plusieurs modèles ML différents qui ont des modèles de trafic différents et des besoins en ressources similaires. Voici des exemples d'utilisation des MCE, mais sans s'y limiter :

  • Modèles d'hébergement sur différents frameworks (tels que TensorFlow, PyTorch et Scikit-learn) qui n'ont pas suffisamment de trafic pour saturer la pleine capacité d'une instance
  • Hébergement de modèles à partir du même cadre avec différents algorithmes ML (tels que des recommandations, des prévisions ou une classification) et des fonctions de gestionnaire
  • Comparaisons d'architectures similaires exécutées sur différentes versions de framework (telles que TensorFlow 1.x et TensorFlow 2.x) pour des scénarios tels que les tests A/B

Les points de terminaison multivariants (MVE) SageMaker vous permettent de tester plusieurs modèles ou versions de modèle derrière le même point de terminaison à l'aide de variantes de production. Chaque variante de production identifie un modèle ML et les ressources déployées pour héberger le modèle, telles que le conteneur de service et l'instance.

Présentation des points de terminaison multivariants SageMaker

Dans les flux de travail ML de production, les scientifiques des données et les ingénieurs ML affinent les modèles grâce à diverses méthodes, telles que le recyclage basé sur la dérive des données/modèles/concepts, le réglage des hyperparamètres, la sélection des fonctionnalités, la sélection du cadre, etc. Effectuer des tests A/B entre un nouveau modèle et un ancien modèle avec un trafic de production peut être une étape finale efficace dans le processus de validation d'un nouveau modèle. Dans les tests A/B, vous testez différentes variantes de vos modèles et comparez les performances de chaque variante les unes par rapport aux autres. Vous choisissez ensuite le modèle le plus performant pour remplacer le modèle précédent par une nouvelle version offrant de meilleures performances que la version précédente. En utilisant des variantes de production, vous pouvez tester ces modèles ML et différentes versions de modèle derrière le même point de terminaison. Vous pouvez former ces modèles ML à l'aide de différents ensembles de données, différents algorithmes et cadres ML ; les déployer sur différents types d'instance ; ou toute combinaison de ces options. L'équilibreur de charge connecté au point de terminaison SageMaker offre la possibilité de répartir les demandes d'appel sur plusieurs variantes de production. Par exemple, vous pouvez répartir le trafic entre les variantes de production en spécifiant la répartition du trafic pour chaque variante, ou vous pouvez appeler une variante spécifique directement pour chaque demande.

Vous pouvez également configurer la politique de mise à l'échelle automatique pour augmenter ou réduire automatiquement vos variantes en fonction de métriques telles que les demandes par seconde.

Le schéma suivant illustre plus en détail le fonctionnement de MVE.

Point de terminaison multivariant SageMaker

Le déploiement d'un MVE est également très simple. Tout ce que vous avez à faire est de définir des objets de modèle avec les données d'image et de modèle à l'aide de la create_model construire à partir du SDK SageMaker Python et définir les configurations de point de terminaison à l'aide production_variant constructions pour créer des variantes de production, chacune avec son propre modèle et ses propres besoins en ressources (type et nombre d'instances). Cela vous permet également de tester des modèles sur différents types d'instances. Pour déployer, utilisez le endpoint_from_production_variant construire pour créer le point de terminaison.

Lors de la création du point de terminaison, SageMaker provisionne l'instance d'hébergement spécifiée dans les paramètres du point de terminaison et télécharge le modèle et le conteneur d'inférence spécifiés par la variante de production sur l'instance d'hébergement. Si une réponse réussie est renvoyée après le démarrage du conteneur et l'exécution d'une vérification de l'état avec un ping, un message indiquant que la création du point de terminaison est terminée est envoyé à l'utilisateur. Voir le code suivant :

sm_session.create_model(
	name=model_name,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url}
	)

sm_session.create_model(
	name=model_name2,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url2 }
	)

variant1 = production_variant(
	model_name=model_name,
	instance_type="ml.c5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant1",
	initial_weight=1
	)

variant2 = production_variant(
	model_name=model_name2,
	instance_type="ml.m5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant2",
	initial_weight=1
	)

sm_session.endpoint_from_production_variants(
	name=endpoint_name,
	production_variants=[variant1,  variant2]
	)

Dans l'exemple précédent, nous avons créé deux variantes, chacune avec son propre modèle différent (elles peuvent également avoir des types et des nombres d'instances différents). Nous fixons un initial_weight de 1 pour les deux variantes : cela signifie que 50 % de nos demandes vont à Variant1, et les 50 % restants à Variant2. La somme des pondérations des deux variantes est de 2 et chaque variante a une pondération de 1. Cela implique que chaque variante reçoit 50 % du trafic total.

L'appel du point de terminaison est similaire à la construction SageMaker commune invoke_endpoint; vous pouvez appeler le point de terminaison directement avec les données comme charge utile :

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload
	)

SageMaker émet des métriques telles que Latency ainsi que le Invocations pour chaque variante dans CloudWatch. Pour une liste complète des métriques émises par SageMaker, voir Surveillez Amazon SageMaker avec Amazon CloudWatch. Vous pouvez interroger CloudWatch pour obtenir le nombre d'appels par variante, pour voir comment les appels sont répartis entre les variantes par défaut.

Pour appeler une version spécifique du modèle, spécifiez une variante comme TargetVariant dans l'appel à invoke_endpoint:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload,
	TargetVariant="Variant1"
	)

Vous pouvez évaluer les performances de chaque variante de production en examinant des mesures telles que l'exactitude, la précision, le rappel, le score F1 et la caractéristique de fonctionnement du récepteur/zone sous la courbe pour chaque variante à l'aide Moniteur de modèle Amazon SageMaker. Vous pouvez ensuite décider d'augmenter le trafic vers le meilleur modèle en mettant à jour les pondérations attribuées à chaque variante en appelant UpdateEndpointWeightsAndCapacities. Cela modifie la distribution du trafic vers vos variantes de production sans nécessiter de mises à jour de votre point de terminaison. Ainsi, au lieu de 50 % du trafic de la configuration initiale, nous transférons 75 % du trafic vers Variant2 en attribuant de nouveaux poids à chaque variante à l'aide UpdateEndpointWeightsAndCapacities. Voir le code suivant:

sm.update_endpoint_weights_and_capacities(
	EndpointName=endpoint_name,
	DesiredWeightsAndCapacities=[
	{
		"DesiredWeight": 25,
		"VariantName": variant1["VariantName"]
	},
	{
		"DesiredWeight": 75,
		"VariantName": variant2["VariantName"]
	}
] )

Lorsque vous êtes satisfait des performances d'une variante, vous pouvez acheminer 100 % du trafic vers cette variante. Par exemple, vous pouvez définir le poids pour Variant1 à 0 et le poids pour Variant2 à 1. SageMaker envoie alors 100 % de toutes les demandes d'inférence à Variant2. Vous pouvez ensuite mettre à jour votre point de terminaison en toute sécurité et supprimer Variant1 depuis votre point de terminaison. Vous pouvez également continuer à tester de nouveaux modèles en production en ajoutant de nouvelles variantes à votre point de terminaison. Vous pouvez également configurer ces points de terminaison pour qu'ils évoluent automatiquement en fonction du trafic reçu par les points de terminaison.

Avantages des terminaux à plusieurs variantes

Les MVE SageMaker vous permettent d'effectuer les opérations suivantes :

  • Déployez et testez plusieurs variantes d'un modèle à l'aide du même point de terminaison SageMaker. Ceci est utile pour tester les variations d'un modèle en production. Par exemple, supposons que vous ayez déployé un modèle en production. Vous pouvez tester une variante du modèle en dirigeant une petite quantité de trafic, disons 5 %, vers le nouveau modèle.
  • Évaluez les performances du modèle en production sans interrompre le trafic en surveillant les métriques opérationnelles pour chaque variante dans CloudWatch.
  • Mettez à jour les modèles en production sans perdre de disponibilité. Vous pouvez modifier un point de terminaison sans mettre hors service des modèles déjà déployés en production. Par exemple, vous pouvez ajouter de nouvelles variantes de modèle, mettre à jour les configurations d'instance de calcul ML des variantes de modèle existantes ou modifier la répartition du trafic entre les variantes de modèle. Pour plus d'informations, voir Mettre à jour le point de terminaison ainsi que le UpdateEndpointWeightsAndCapacities.

Défis lors de l'utilisation de points de terminaison à plusieurs variantes

Les MVE SageMaker présentent les défis suivants :

  • Effort de test de charge – Vous devez consacrer beaucoup d'efforts et de ressources aux tests et aux comparaisons de matrices de modèles pour chaque variante. Pour qu'un test A/B soit considéré comme réussi, vous devez effectuer une analyse statistique des mesures recueillies à partir du test afin de déterminer s'il existe un résultat statistiquement significatif. Il pourrait devenir difficile de minimiser l'exploration de variantes peu performantes. Vous pourriez éventuellement utiliser le bandit multi-armé technique d'optimisation pour éviter d'envoyer du trafic vers des expériences qui ne fonctionnent pas et optimiser les performances pendant que vous testez. Pour les tests de charge, vous pouvez également explorer Outil de recommandation d'inférence Amazon SageMaker pour effectuer des analyses comparatives approfondies basées sur les exigences de production en termes de latence et de débit, de modèles de trafic personnalisés et d'instances (jusqu'à 10) que vous sélectionnez.
  • Couplage étroit entre la variante de modèle et le point final – Cela peut devenir délicat en fonction de la fréquence de déploiement du modèle, car le terminal peut se retrouver dans updating le statut de chaque variante de production mise à jour. SageMaker prend également en charge garde-corps de déploiement, que vous pouvez utiliser pour passer facilement du modèle actuel en production à un nouveau de manière contrôlée. Cette option introduit canari ainsi que le linéaire modes de déplacement du trafic afin que vous puissiez avoir un contrôle granulaire sur le déplacement du trafic de votre modèle actuel vers le nouveau au cours de la mise à jour. Grâce aux protections intégrées telles que les retours en arrière automatiques, vous pouvez détecter les problèmes plus tôt et prendre automatiquement des mesures correctives avant qu'ils n'aient un impact significatif sur la production.

Meilleures pratiques pour les terminaux à plusieurs variantes

Lorsque vous hébergez des modèles à l'aide de MVE SageMaker, tenez compte des points suivants :

  • SageMaker est idéal pour tester de nouveaux modèles car vous pouvez facilement les déployer dans un environnement de test A/B et vous ne payez que ce que vous utilisez. Vous êtes facturé par heure d'instance consommée pour chaque instance pendant que le point de terminaison est en cours d'exécution. Lorsque vous avez terminé vos tests et que vous n'utilisez plus le point de terminaison ou les variantes de manière intensive, vous devez le supprimer pour réduire les coûts. Vous pouvez toujours le recréer lorsque vous en avez à nouveau besoin car le modèle est stocké dans Service de stockage simple Amazon (Amazon S3).
  • Vous devez utiliser le type et la taille d'instance les plus optimaux pour déployer des modèles. SageMaker propose actuellement Instances de calcul ML sur différentes familles d'instances. Une instance de point de terminaison s'exécute en permanence (lorsque l'instance est en service). Par conséquent, la sélection du bon type d'instance peut avoir un impact significatif sur le coût total et les performances des modèles ML. Test de charge est la meilleure pratique pour déterminer le type d'instance et la taille de flotte appropriés, avec ou sans mise à l'échelle automatique pour votre point de terminaison en direct afin d'éviter le sur-provisionnement et de payer un supplément pour une capacité dont vous n'avez pas besoin.
  • Vous pouvez surveiller les performances du modèle et l'utilisation des ressources dans CloudWatch. Vous pouvez configurer un ProductionVariant à utiliser Mise à l'échelle automatique des applications. Pour spécifier les métriques et les valeurs cibles d'une stratégie de mise à l'échelle, vous configurez une stratégie de mise à l'échelle de suivi de la cible. Vous pouvez utiliser une métrique prédéfinie ou une métrique personnalisée. Pour plus d'informations sur la syntaxe de configuration des stratégies, consultez TargetTrackingScalingPolicyConfiguration. Pour plus d'informations sur la configuration de la mise à l'échelle automatique, consultez Mise à l'échelle automatique des modèles Amazon SageMaker. Pour définir rapidement une stratégie de mise à l'échelle de suivi des cibles pour une variante, vous pouvez choisir une métrique CloudWatch spécifique et définir des valeurs de seuil. Par exemple, utilisez la métrique SageMakerVariantInvocationsPerInstance pour surveiller le nombre moyen de fois par minute que chaque instance d'une variante est invoquée, ou utiliser la métrique CPUUtilization pour surveiller la somme de travail gérée par un processeur. L'exemple suivant utilise le SageMakerVariantInvocationsPerInstance métrique prédéfinie pour ajuster le nombre d'instances de variantes afin que chaque instance ait une InvocationsPerInstance métrique de 70 :
{
	"TargetValue": 70.0,
	"PredefinedMetricSpecification":
	{
		"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
	}
}

  • La modification ou la suppression d'artefacts de modèle ou la modification du code d'inférence après le déploiement d'un modèle produit des résultats imprévisibles. Avant de déployer des modèles en production, il est recommandé de vérifier si l'hébergement du modèle en mode local réussit après avoir suffisamment débogué les extraits de code d'inférence (comme model_fn, input_fn, predict_fnainsi que output_fn) dans l'environnement de développement local comme une instance de bloc-notes SageMaker ou un serveur local. Si vous devez modifier ou supprimer des artefacts de modèle ou modifier le code d'inférence, modifiez le point de terminaison en fournissant une nouvelle configuration de point de terminaison. Après avoir fourni la nouvelle configuration de point de terminaison, vous pouvez modifier ou supprimer les artefacts de modèle correspondant à l'ancienne configuration de point de terminaison.
  • Vous pouvez utiliser SageMaker transformation par lots pour tester des variantes de production. La transformation par lots est idéale pour obtenir des inférences à partir de grands ensembles de données. Vous pouvez créer une tâche de transformation distincte pour chaque nouvelle variante de modèle et utiliser un ensemble de données de validation pour tester. Pour chaque tâche de transformation, spécifiez un nom de modèle unique et un emplacement dans Amazon S3 pour le fichier de sortie. Pour analyser les résultats, utilisez journaux et métriques du pipeline d'inférence.

Conclusion

SageMaker vous permet de tester facilement les modèles ML de test A/B en production en exécutant plusieurs variantes de production sur un terminal. Vous pouvez utiliser les capacités de SageMaker pour tester des modèles qui ont été formés à l'aide de différents ensembles de données de formation, hyperparamètres, algorithmes ou cadres ML ; comment ils fonctionnent sur différents types d'instance ; ou une combinaison de tout ce qui précède. Vous pouvez fournir la distribution du trafic entre les variantes sur un point de terminaison, et SageMaker répartit le trafic d'inférence entre les variantes en fonction de la distribution spécifiée. Alternativement, si vous souhaitez tester des modèles pour des segments de clientèle spécifiques, vous pouvez spécifier la variante qui doit traiter une demande d'inférence en fournissant le TargetVariant header, et SageMaker acheminera la demande vers la variante que vous avez spécifiée. Pour plus d'informations sur les tests A/B, consultez Mettre à jour en toute sécurité les modèles en production.

Bibliographie


À propos des auteurs

Modèles d'hébergement de modèles dans SageMaker : meilleures pratiques en matière de test et de mise à jour de modèles sur SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Deepali Rajale est responsable de compte technique spécialiste AI/ML chez Amazon Web Services. Elle travaille avec des entreprises clientes en fournissant des conseils techniques sur la mise en œuvre de solutions d'apprentissage automatique avec les meilleures pratiques. Dans ses temps libres, elle aime faire de la randonnée, aller au cinéma et sortir avec sa famille et ses amis.

Modèles d'hébergement de modèles dans SageMaker : meilleures pratiques en matière de test et de mise à jour de modèles sur SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Dhawal Patel est architecte principal en apprentissage machine chez AWS. Il a travaillé avec des organisations allant des grandes entreprises aux startups de taille moyenne sur des problèmes liés à l'informatique distribuée et à l'intelligence artificielle. Il se concentre sur l'apprentissage en profondeur, y compris les domaines de la PNL et de la vision par ordinateur. Il aide les clients à obtenir une inférence de modèle haute performance sur SageMaker.

Modèles d'hébergement de modèles dans SageMaker : meilleures pratiques en matière de test et de mise à jour de modèles sur SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï. Saurabh Trikandé est chef de produit senior pour Amazon SageMaker Inference. Il est passionné par le travail avec les clients et est motivé par l'objectif de démocratiser l'apprentissage automatique. Il se concentre sur les principaux défis liés au déploiement d'applications ML complexes, de modèles ML multi-locataires, d'optimisations de coûts et de rendre le déploiement de modèles d'apprentissage en profondeur plus accessible. Dans ses temps libres, Saurabh aime faire de la randonnée, découvrir des technologies innovantes, suivre TechCrunch et passer du temps avec sa famille.

Horodatage:

Plus de Apprentissage automatique AWS