Exafunction prend en charge AWS Inferentia pour débloquer les meilleures performances en termes de prix pour l'inférence d'apprentissage automatique PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Exafunction prend en charge AWS Inferentia pour débloquer les meilleures performances de prix pour l'inférence d'apprentissage automatique

Dans tous les secteurs, les modèles d'apprentissage automatique (ML) s'approfondissent, les flux de travail deviennent plus complexes et les charges de travail fonctionnent à plus grande échelle. Des efforts et des ressources considérables sont déployés pour rendre ces modèles plus précis, car cet investissement se traduit directement par de meilleurs produits et expériences. D'un autre côté, faire en sorte que ces modèles fonctionnent efficacement en production est une entreprise non négligeable qui est souvent négligée, bien qu'elle soit essentielle pour atteindre les objectifs de performance et de budget. Dans cet article, nous couvrons comment Exafunction et Inférence AWS travaillez ensemble pour débloquer un déploiement simple et rentable pour les modèles ML en production.

Exafonction est une start-up dont l'objectif est de permettre aux entreprises d'effectuer le ML à grande échelle aussi efficacement que possible. Un de leurs produits est ExaDéploiement, une solution SaaS facile à utiliser pour gérer les charges de travail ML à grande échelle. ExaDeploy orchestre efficacement vos charges de travail ML sur des ressources mixtes (processeur et accélérateurs matériels) pour maximiser l'utilisation des ressources. Il prend également en charge la mise à l'échelle automatique, la colocation de calcul, les problèmes de réseau, la tolérance aux pannes, etc., pour garantir un déploiement efficace et fiable. Basé sur AWS Inferentia Instances Amazon EC2 Inf1 sont spécialement conçus pour offrir le coût par inférence le plus bas dans le cloud. ExaDeploy prend désormais en charge les instances Inf1, ce qui permet aux utilisateurs d'obtenir à la fois les économies matérielles des accélérateurs et les économies logicielles de la virtualisation et de l'orchestration optimisées des ressources à grande échelle.

Vue d'ensemble de la solution

Comment ExaDeploy résout l'efficacité du déploiement

Pour garantir une utilisation efficace des ressources de calcul, vous devez tenir compte de l'allocation appropriée des ressources, de la mise à l'échelle automatique, de la colocalisation du calcul, de la gestion des coûts et de la latence du réseau, de la tolérance aux pannes, de la gestion des versions et de la reproductibilité, etc. À grande échelle, toute inefficacité affecte considérablement les coûts et la latence, et de nombreuses grandes entreprises ont remédié à ces inefficacités en créant des équipes et une expertise internes. Cependant, il n'est pas pratique pour la plupart des entreprises d'assumer ces frais généraux financiers et organisationnels liés à la création de logiciels généralisables qui ne sont pas la compétence de base souhaitée par l'entreprise.

ExaDeploy est conçu pour résoudre ces problèmes d'efficacité de déploiement, y compris ceux rencontrés dans certaines des charges de travail les plus complexes telles que celles des véhicules autonomes et des applications de traitement du langage naturel (NLP). Sur certaines charges de travail ML par lots volumineuses, ExaDeploy a réduit les coûts de plus de 85 % sans sacrifier la latence ou la précision, avec un temps d'intégration aussi court qu'une journée d'ingénieur. ExaDeploy a fait ses preuves pour évoluer automatiquement et gérer des milliers d'instances de ressources d'accélérateur matériel simultanées sans aucune dégradation du système.

Les principales fonctionnalités d'ExaDeploy incluent :

  • Fonctionne dans votre cloud: Aucun de vos modèles, entrées ou sorties ne quitte jamais votre réseau privé. Continuez à utiliser les remises de votre fournisseur de cloud.
  • Ressources d'accélérateur partagées: ExaDeploy optimise les accélérateurs utilisés en permettant à plusieurs modèles ou charges de travail de partager les ressources des accélérateurs. Il peut également identifier si plusieurs charges de travail déploient le même modèle, puis partager le modèle entre ces charges de travail, optimisant ainsi l'accélérateur utilisé. Ses capacités de rééquilibrage automatique et de drainage des nœuds optimisent l'utilisation et minimisent les coûts.

Exafunction prend en charge AWS Inferentia pour débloquer les meilleures performances en termes de prix pour l'inférence d'apprentissage automatique PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

  • Modèle de déploiement évolutif sans serveur: ExaDeploy s'adapte automatiquement en fonction de la saturation des ressources de l'accélérateur. Réduisez dynamiquement jusqu'à 0 ou jusqu'à des milliers de ressources.
  • Prise en charge de divers types de calcul: Vous pouvez décharger les modèles d'apprentissage en profondeur de tous les principaux frameworks ML ainsi que du code C++ arbitraire, des noyaux CUDA, des opérations personnalisées et des fonctions Python.
  • Enregistrement dynamique du modèle et gestion des versions: De nouveaux modèles ou versions de modèles peuvent être enregistrés et exécutés sans avoir à reconstruire ou à redéployer le système.
  • Exécution point à point: Les clients se connectent directement aux ressources de l'accélérateur distant, ce qui permet une faible latence et un débit élevé. Ils peuvent même stocker l'état à distance.
  • Exécution asynchrone: ExaDeploy prend en charge l'exécution asynchrone des modèles, ce qui permet aux clients de paralléliser le calcul local avec le travail des ressources d'accélérateur à distance.
  • Pipelines distants tolérants aux pannes: ExaDeploy permet aux clients de composer dynamiquement des calculs distants (modèles, prétraitement, etc.) dans des pipelines avec une garantie de tolérance aux pannes. Le système ExaDeploy gère les pannes de pod ou de nœud avec une récupération et une relecture automatiques, de sorte que les développeurs n'aient jamais à penser à assurer la tolérance aux pannes.
  • Surveillance prête à l'emploi: ExaDeploy fournit des métriques Prometheus et des tableaux de bord Grafana pour visualiser l'utilisation des ressources de l'accélérateur et d'autres métriques système.

ExaDeploy prend en charge AWS Inferentia

Les instances Amazon EC2 Inf1 basées sur AWS Inferentia sont conçues pour les charges de travail d'inférence spécifiques à l'apprentissage en profondeur. Ces instances offrent un débit jusqu'à 2.3 fois supérieur et jusqu'à 70 % d'économies par rapport à la génération actuelle d'instances d'inférence GPU.

ExaDeploy prend désormais en charge AWS Inferentia et, ensemble, ils débloquent les performances accrues et les économies réalisées grâce à une accélération matérielle spécialement conçue et à une orchestration optimisée des ressources à grande échelle. Examinons les avantages combinés d'ExaDeploy et d'AWS Inferentia en considérant une charge de travail ML moderne très courante : les charges de travail par lots et à calcul mixte.

Caractéristiques hypothétiques de la charge de travail :

  • 15 ms de pré-traitement/post-traitement CPU uniquement
  • Inférence de modèle (15 ms sur GPU, 5 ms sur AWS Inferentia)
  • 10 clients, chacun faisant une requête toutes les 20 ms
  • Le coût relatif approximatif de CPU:Inferentia:GPU est de 1:2:4 (basé sur la tarification Amazon EC2 à la demande pour c5.xlarge, inf1.xlarge et g4dn.xlarge)

Le tableau ci-dessous montre comment chacune des options prend forme :

installation Ressources nécessaires Prix Latence
GPU sans ExaDeploy 2 CPU, 2 GPU par client (total 20 CPU, 20 GPU) 100 30 ms
GPU avec ExaDeploy 8 GPU partagés sur 10 clients, 1 CPU par client 42 30 ms
AWS Inference sans ExaDeploy 1 CPU, 1 AWS Inferentia par client (total 10 CPU, 10 Inferentia) 30 20 ms
AWS Inference avec ExaDeploy 3 AWS Inferentia partagés sur 10 clients, 1 CPU par client 16 20 ms

Exemple ExaDeploy sur AWS Inferentia

Dans cette section, nous passons en revue les étapes de configuration d'ExaDeploy à travers un exemple avec des nœuds inf1 sur un modèle BERT PyTorch. Nous avons constaté un débit moyen de 1140 XNUMX échantillons/s pour le modèle bert-base, ce qui démontre que peu ou pas de surcharge a été introduite par ExaDeploy pour ce modèle unique, scénario de charge de travail unique.

Étape 1: Configurez un Service Amazon Elastic Kubernetes Grappe (Amazon EKS)

Un cluster Amazon EKS peut être mis en place avec notre Module Terraform AWS. Pour notre exemple, nous avons utilisé un inf1.xlarge pour AWS Inference.

Étape 2: Configurer ExaDepoy

La deuxième étape consiste à configurer ExaDeploy. En général, le déploiement d'ExaDeploy sur les instances inf1 est simple. La configuration suit généralement la même procédure que sur les instances de processeur graphique (GPU). La principale différence est de changer la balise de modèle de GPU à AWS Inferentia et de recompiler le modèle. Par exemple, le passage d'instances g4dn à inf1 à l'aide des interfaces de programmation d'application (API) d'ExaDeploy ne nécessitait qu'environ 10 lignes de code à modifier.

  • Une méthode simple consiste à utiliser Exafunction Module Terraform AWS Kubernetes or Carte de barre. Ceux-ci déploient les principaux composants ExaDeploy à exécuter dans le cluster Amazon EKS.
  • Compiler le modèle dans un format sérialisé (par exemple, TorchScript, modèles enregistrés TF, ONNX, etc.). Pour AWS Inferentia, nous avons suivi ce tutoriel.
  • Enregistrez le modèle compilé dans le référentiel de modules d'ExaDeploy.
    with exa.ModuleRepository(MODULE_REPOSITORY_ADDRESS) as repo:
       repo.register_py_module(
           "BertInferentia",
           module_class="TorchModule",
           context_data=BERT_NEURON_TORCHSCRIPT_AS_BYTES,
           config={
               "_torchscript_input_names": ",".join(BERT_INPUT_NAMES).encode(),
               "_torchscript_output_names": BERT_OUTPUT_NAME.encode(),
               "execution_type": "inferentia".encode(),
           },
       )

  • Préparez les données pour le modèle (c'est-à-dire ExaDeploy-specific).
    tokenizer = transformers.AutoTokenizer.from_pretrained(
       "bert-base-cased-finetuned-mrpc"
    )
    
    batch_encoding = tokenizer.encode_plus(
       "The company Exafunction is based in the Bay Area",
       "Exafunction’s headquarters are situated in Mountain View",
       max_length=MAX_LENGTH,
       padding="max_length",
       truncation=True,
       return_tensors="pt",
    )

  • Exécutez le modèle à distance depuis le client.
    with exa.Session(
       scheduler_address=SCHEDULER_ADDRESS,
       module_tag="BertInferentia",
       constraint_config={
           "KUBERNETES_NODE_SELECTORS": "role=runner-inferentia",
           "KUBERNETES_ENV_VARS": "AWS_NEURON_VISIBLE_DEVICES=ALL",
       },
    ) as sess:
       bert = sess.new_module("BertInferentia")
       classification_logits = bert.run(
           **{
               key: value.numpy()
               for key, value in batch_encoding.items()
           }
       )[BERT_OUTPUT_NAME].numpy()
    
       # Assert that the model classifies the two statements as paraphrase.
       assert classification_logits[0].argmax() == 1

ExaDeploy et AWS Inferentia : mieux ensemble

AWS Inferentia repousse les limites du débit pour l'inférence de modèle et offre le coût par inférence le plus bas dans le cloud. Cela étant dit, les entreprises ont besoin d'une bonne orchestration pour profiter des avantages prix-performance d'Inf1 à grande échelle. Le service ML est un problème complexe qui, s'il est traité en interne, nécessite une expertise éloignée des objectifs de l'entreprise et retarde souvent les délais de production. ExaDeploy, qui est la solution logicielle de déploiement ML d'Exafunction, est devenu le leader du secteur. Il sert même les charges de travail ML les plus complexes, tout en offrant des expériences d'intégration fluides et le support d'une équipe de classe mondiale. Ensemble, ExaDeploy et AWS Inferentia débloquent des performances et des économies accrues pour les charges de travail d'inférence à grande échelle.

Conclusion

Dans cet article, nous vous avons montré comment Exafunction prend en charge AWS Inferentia pour le ML de performance. Pour plus d'informations sur la création d'applications avec Exafunction, visitez Exafonction. Pour connaître les meilleures pratiques en matière de création de charges de travail d'apprentissage en profondeur sur Inf1, consultez Instances Amazon EC2 Inf1.


À propos des auteurs

Nicholas Jiang, ingénieur logiciel, Exafunction

Jonathan Ma, ingénieur logiciel, Exafunction

Prem Nair, ingénieur logiciel, Exafunction

Anshul Ramachandran, ingénieur logiciel, Exafunction

Shruti Koparkar, responsable principal du marketing produit, AWS

Horodatage:

Plus de Apprentissage automatique AWS