Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Présentation de la boîte à outils d'analyse comparative des inférences sans serveur Amazon SageMaker

Inférence sans serveur Amazon SageMaker est une option d'inférence spécialement conçue qui vous facilite le déploiement et la mise à l'échelle de modèles d'apprentissage automatique (ML). Il fournit un modèle de paiement à l'utilisation, idéal pour les services où les appels de point de terminaison sont peu fréquents et imprévisibles. Contrairement à un point de terminaison d'hébergement en temps réel, qui s'appuie sur une instance de longue durée, les ressources de calcul des points de terminaison sans serveur sont provisionnées à la demande, éliminant ainsi le besoin de choisir des types d'instance ou de gérer des politiques de mise à l'échelle.

L'architecture de haut niveau suivante illustre le fonctionnement d'un point de terminaison sans serveur. Un client appelle un point de terminaison soutenu par l'infrastructure gérée par AWS.

Cependant, les points de terminaison sans serveur sont sujets à des démarrages à froid de l'ordre de quelques secondes et sont donc plus adaptés aux charges de travail intermittentes ou imprévisibles.

Pour vous aider à déterminer si un point de terminaison sans serveur constitue la bonne option de déploiement du point de vue des coûts et des performances, nous avons développé le Kit d'outils d'analyse comparative d'inférence sans serveur SageMaker, qui teste différentes configurations de points de terminaison et compare la plus optimale à une instance d'hébergement en temps réel comparable.

Dans cet article, nous présentons la boîte à outils et fournissons un aperçu de sa configuration et de ses sorties.

Vue d'ensemble de la solution

Vous pouvez télécharger la boîte à outils et l'installer à partir du GitHub repo. La mise en route est simple : installez simplement la bibliothèque, créez un Modèle SageMaker, et fournissez le nom de votre modèle ainsi qu'un fichier au format de lignes JSON contenant un exemple d'ensemble de paramètres d'appel, y compris le corps de la charge utile et le type de contenu. Une fonction pratique est fournie pour convertir une liste d'exemples d'arguments d'invocation en un fichier de lignes JSON ou un fichier pickle pour les charges utiles binaires telles que des images, de la vidéo ou de l'audio.

Installer la boîte à outils

Installez d'abord la bibliothèque d'analyse comparative dans votre environnement Python à l'aide de pip :

pip install sm-serverless-benchmarking

Vous pouvez exécuter le code suivant à partir d'un Amazon SageMakerStudio exemple, Instance de notebook SageMaker, ou toute instance avec accès programmatique à AWS et le approprié Gestion des identités et des accès AWS (IAM). Les autorisations IAM requises sont documentées dans le GitHub repo. Pour obtenir des conseils supplémentaires et des exemples de politiques pour IAM, reportez-vous à Fonctionnement d'Amazon SageMaker avec IAM. Ce code exécute un benchmark avec un ensemble de paramètres par défaut sur un modèle qui attend une entrée CSV avec deux exemples d'enregistrements. C'est une bonne pratique de fournir un ensemble représentatif d'exemples pour analyser les performances du point de terminaison avec différentes charges utiles d'entrée.

from sm_serverless_benchmarking import benchmark
from sm_serverless_benchmarking.utils import convert_invoke_args_to_jsonl
model_name = ""
example_invoke_args = [
        {'Body': '1,2,3,4,5', "ContentType": "text/csv"},
        {'Body': '6,7,8,9,10', "ContentType": "text/csv"}
        ]
example_args_file = convert_invoke_args_to_jsonl(example_invoke_args,
output_path=".")
r = benchmark.run_serverless_benchmarks(model_name, example_args_file)

De plus, vous pouvez exécuter le test en tant que tâche de traitement SageMaker, ce qui peut constituer une option plus fiable pour les tests de performance à plus long terme avec un grand nombre d'appels. Voir le code suivant :

from sm_serverless_benchmarking.sagemaker_runner import run_as_sagemaker_job
run_as_sagemaker_job(
                    role="",
                    model_name="",
                    invoke_args_examples_file="",
                    )

Notez que cela entraînera des coûts supplémentaires liés à l’exécution d’une instance ml.m5.large SageMaker Processing pendant la durée du test.

Les deux méthodes acceptent un certain nombre de paramètres à configurer, tels qu'une liste de configurations de mémoire à évaluer et le nombre de fois où chaque configuration sera invoquée. Dans la plupart des cas, les options par défaut devraient suffire comme point de départ, mais reportez-vous au GitHub repo pour une liste complète et des descriptions de chaque paramètre.

Configuration d'analyse comparative

Avant d'examiner ce que fait le benchmark et les résultats qu'il produit, il est important de comprendre quelques concepts clés lorsqu'il s'agit de configurer des points de terminaison sans serveur.

Il y a deux options de configuration clés: MemorySizeInMB ainsi que MaxConcurrency. MemorySizeInMB configure la quantité de mémoire allouée à l'instance et peut être de 1024 2048 Mo, 3072 4096 Mo, 5120 6144 Mo, XNUMX XNUMX Mo, XNUMX XNUMX Mo ou XNUMX XNUMX Mo. Le nombre de processeurs virtuels évolue également proportionnellement à la quantité de mémoire allouée. Le MaxConcurrency Le paramètre ajuste le nombre de requêtes simultanées qu’un point de terminaison est capable de traiter. Avec un MaxConcurrency de 1, un point de terminaison sans serveur ne peut traiter qu'une seule requête à la fois.

Pour résumer, le MemorySizeInMB Le paramètre fournit un mécanisme d'évolutivité verticale, vous permettant d'ajuster les ressources de mémoire et de calcul pour servir des modèles plus grands, tandis que MaxConcurrency fournit un mécanisme d'évolutivité horizontale, permettant à votre point de terminaison de traiter davantage de requêtes simultanées.

Le coût d'exploitation d'un point de terminaison est largement déterminé par la taille de la mémoire, et il n'y a aucun coût associé à l'augmentation de la simultanéité maximale. Cependant, il existe une limite de compte par région pour une simultanéité maximale sur tous les points de terminaison. Faire référence à Points de terminaison et quotas SageMaker pour les dernières limites.

Résultats de l'analyse comparative

Compte tenu de cela, l’objectif de l’analyse comparative d’un point de terminaison sans serveur est de déterminer le paramètre de taille de mémoire le plus rentable et le plus fiable, ainsi que la simultanéité maximale minimale capable de gérer vos modèles de trafic attendus.

Par défaut, l'outil exécute deux benchmarks. Le premier est un test de stabilité, qui déploie un point de terminaison pour chacune des configurations de mémoire spécifiées et appelle chaque point de terminaison avec les exemples de charges utiles fournis. L’objectif de ce test est de déterminer le paramètre MemorySizeInMB le plus efficace et le plus stable. Le test de référence capture les latences d'appel et calcule le coût attendu par appel pour chaque point de terminaison. Il compare ensuite le coût à celui d’une instance d’hébergement en temps réel similaire.

Une fois l'analyse comparative terminée, l'outil génère plusieurs sorties dans les délais spécifiés. result_save_path répertoire avec la structure de répertoire suivante :

├── benchmarking_report
├── concurrency_benchmark_raw_results
├── concurrency_benchmark_summary_results
├── cost_analysis_summary_results
├── stability_benchmark_raw_results
├── stability_benchmark_summary_results

Les benchmarking_report Le répertoire contient un rapport consolidé avec tous les résultats récapitulatifs que nous décrivons dans cet article. Des répertoires supplémentaires contiennent des sorties brutes et intermédiaires que vous pouvez utiliser pour des analyses supplémentaires. Se référer au GitHub repo pour une description plus détaillée de chaque artefact de sortie.

Examinons quelques résultats d'analyse comparative réels pour un point de terminaison servant un modèle TensorFlow MobileNetV2 de vision par ordinateur. Si vous souhaitez reproduire cet exemple, reportez-vous au exemples de cahiers répertoire dans le dépôt GitHub.

Le premier résultat du rapport consolidé est un tableau récapitulatif qui fournit les mesures de latence minimale, moyenne, moyenne et maximale pour chaque MemorySizeInMB configuration réussie de la taille de la mémoire. Comme le montre le tableau suivant, la latence d'appel moyenne (invocation_latency_mean) a continué de s'améliorer à mesure que la configuration de la mémoire a augmenté à 3072 XNUMX Mo, mais a cessé de s'améliorer par la suite.

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

En plus des statistiques descriptives de haut niveau, un graphique est fourni montrant la distribution de la latence telle qu'observée par le client pour chacune des configurations de mémoire. Encore une fois, nous pouvons observer que la configuration de 1024 2048 Mo n'est pas aussi performante que les autres options, mais il n'y a pas de différence substantielle de performances dans les configurations de XNUMX XNUMX et supérieures.

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Amazon Cloud Watch les métriques associées à chaque configuration de point de terminaison sont également fournies. Une mesure clé ici est ModelSetupTime, qui mesure le temps nécessaire au chargement du modèle lorsque le point de terminaison a été invoqué à froid. La métrique peut ne pas toujours apparaître dans le rapport car un point de terminaison est lancé à chaud. UN cold_start_delay Le paramètre est disponible pour spécifier le nombre de secondes de veille avant de démarrer le test sur un point de terminaison déployé. La définition de ce paramètre sur un nombre plus élevé, tel que 600 secondes, devrait augmenter la probabilité d'un appel à l'état froid et améliorer les chances de capturer cette métrique. De plus, cette métrique est beaucoup plus susceptible d'être capturée avec le test d'invocation simultanée, dont nous parlerons plus loin dans cette section.

Le tableau suivant présente les métriques capturées par CloudWatch pour chaque configuration de mémoire.

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Le graphique suivant montre les compromis en termes de performances et de coûts de différentes configurations de mémoire. Une ligne indique le coût estimé de l’appel du point de terminaison 1 million de fois, et l’autre indique la latence moyenne de réponse. Ces mesures peuvent vous aider à décider quelle configuration de point de terminaison est la plus rentable. Dans cet exemple, nous constatons que la latence moyenne s'aplatit après 2048 2048 Mo, alors que le coût continue d'augmenter, ce qui indique que pour ce modèle, une configuration de taille mémoire de XNUMX XNUMX serait la plus optimale.

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Le résultat final du test de coût et de stabilité est une configuration de mémoire recommandée, ainsi qu'un tableau comparant le coût d'exploitation d'un point de terminaison sans serveur à celui d'une instance d'hébergement SageMaker comparable. Sur la base des données collectées, l'outil a déterminé que la configuration de 2048 3072 Mo est la plus optimale pour ce modèle. Bien que la configuration 10 offre une latence supérieure d'environ 30 millisecondes, cela entraîne une augmentation du coût de 4.55 %, passant de 5.95 $ à 1 $ pour 88.72 million de requêtes. De plus, le résultat montre qu'un point de terminaison sans serveur permettrait d'économiser jusqu'à 1 % par rapport à une instance d'hébergement en temps réel comparable lorsqu'il y a moins d'un million de demandes d'appel mensuelles, et qu'il atteindrait le seuil de rentabilité avec un point de terminaison en temps réel après 8.5 millions de demandes.

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Le deuxième type de benchmark est facultatif et teste divers MaxConcurency paramètres sous différents modèles de trafic. Ce benchmark est généralement exécuté en utilisant la méthode optimale MemorySizeInMB configuration à partir du test de stabilité. Les deux paramètres clés de ce benchmark sont une liste de MaxConcurency paramètres à tester ainsi qu'une liste de multiplicateurs de clients, qui déterminent le nombre de clients simultanés simulés avec lesquels le point de terminaison est testé.

Par exemple, en définissant le concurrency_benchmark_max_conc parameter à [4, 8] et concurrency_num_clients_multiplier vers [1, 1.5, 2], deux points de terminaison sont lancés : un avec MaxConcurency de 4 et l'autre 8. Chaque point final est ensuite comparé avec un (MaxConcurency x multiplicateur) nombre de clients simultanés simulés, ce qui pour le point de terminaison avec une concurrence de 4 se traduit par des tests de charge avec 4, 6 et 8 clients simultanés.

Le premier résultat de ce test est un tableau qui montre les mesures de latence, les exceptions de limitation et les mesures de transactions par seconde (TPS) associées à chaque MaxConcurrency configuration avec différents nombres de clients simultanés. Ces mesures aident à déterminer les mesures appropriées MaxConcurrency paramètre pour gérer la charge de trafic attendue. Dans le tableau suivant, nous pouvons voir qu'un point de terminaison configuré avec une concurrence maximale de 8 était capable de gérer jusqu'à 16 clients simultanés avec seulement deux exceptions de limitation sur 2,500 24 appels effectués à une moyenne de XNUMX transactions par seconde.

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

L'ensemble de résultats suivant fournit un graphique pour chacun MaxConcurrency paramètre montrant la répartition de la latence sous différentes charges. Dans cet exemple, nous pouvons voir qu'un point de terminaison avec un MaxConcurrency le paramètre 4 a permis de traiter avec succès toutes les demandes avec jusqu'à 8 clients simultanés avec une augmentation minimale de la latence d'appel.

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Le résultat final fournit un tableau avec les métriques CloudWatch pour chaque MaxConcurrency configuration. Contrairement au tableau précédent montrant la répartition de la latence pour chaque configuration mémoire, qui peut ne pas toujours afficher le démarrage à froid ModelSetupTime métrique, cette métrique est beaucoup plus susceptible d'apparaître dans ce tableau en raison du plus grand nombre de demandes d'appel et d'un plus grand nombre de requêtes d'appel. MaxConcurrency.

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Conclusion

Dans cet article, nous avons présenté la boîte à outils d'analyse comparative d'inférence sans serveur SageMaker et fourni un aperçu de sa configuration et de ses sorties. L'outil peut vous aider à prendre une décision plus éclairée en ce qui concerne l'inférence sans serveur en testant différentes configurations avec des modèles de trafic réalistes. Essayez la boîte à outils d'analyse comparative avec vos propres modèles pour constater par vous-même les performances et les économies auxquelles vous pouvez vous attendre en déployant un point de terminaison sans serveur. Veuillez vous référer au GitHub repo pour une documentation supplémentaire et des exemples de cahiers.

Ressources additionnelles


À propos des auteurs

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Simon Zamarin est un architecte de solutions AI / ML dont l'objectif principal est d'aider les clients à extraire de la valeur de leurs actifs de données. Dans ses temps libres, Simon aime passer du temps avec sa famille, lire de la science-fiction et travailler sur divers projets de bricolage.

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon 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.

Présentation de la boîte à outils d'analyse comparative d'inférence sans serveur Amazon SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Rishabh Ray Chaudhury est chef de produit senior chez Amazon SageMaker, se concentrant sur l'inférence d'apprentissage automatique. Il est passionné par l'innovation et la création de nouvelles expériences pour les clients de machine learning sur AWS afin de les aider à faire évoluer leurs charges de travail. Dans ses temps libres, il aime voyager et cuisiner. Vous pouvez le retrouver sur LinkedIn.

Horodatage:

Plus de Apprentissage automatique AWS