Exafunction unterstützt AWS Inferentia, um das beste Preis-Leistungs-Verhältnis für Machine-Learning-Inferenz PlatoBlockchain Data Intelligence zu erzielen. Vertikale Suche. Ai.

Exafunction unterstützt AWS Inferentia, um das beste Preis-Leistungs-Verhältnis für Machine-Learning-Inferenz zu erzielen

In allen Branchen werden Modelle für maschinelles Lernen (ML) immer tiefer, Workflows werden komplexer und Workloads werden in größeren Maßstäben ausgeführt. Es werden erhebliche Anstrengungen und Ressourcen investiert, um diese Modelle genauer zu machen, da diese Investition direkt zu besseren Produkten und Erfahrungen führt. Andererseits ist die effiziente Ausführung dieser Modelle in der Produktion ein nicht triviales Unterfangen, das oft übersehen wird, obwohl es der Schlüssel zum Erreichen von Leistungs- und Budgetzielen ist. In diesem Beitrag behandeln wir, wie Exafunction und AWS-Inferenz Arbeiten Sie zusammen, um eine einfache und kosteneffiziente Bereitstellung für ML-Modelle in der Produktion zu ermöglichen.

Exafunktion ist ein Start-up, das sich darauf konzentriert, Unternehmen in die Lage zu versetzen, ML in großem Umfang so effizient wie möglich durchzuführen. Eines ihrer Produkte ist ExaDeploy, eine benutzerfreundliche SaaS-Lösung zur Bereitstellung von ML-Workloads in großem Maßstab. ExaDeploy orchestriert Ihre ML-Workloads effizient über gemischte Ressourcen (CPU- und Hardwarebeschleuniger), um die Ressourcennutzung zu maximieren. Es kümmert sich auch um Auto Scaling, Compute Colocation, Netzwerkprobleme, Fehlertoleranz und mehr, um eine effiziente und zuverlässige Bereitstellung zu gewährleisten. AWS Inferentia-basiert Amazon EC2 Inf1-Instanzen wurden speziell entwickelt, um die niedrigsten Kosten pro Inferenz in der Cloud zu liefern. ExaDeploy unterstützt jetzt Inf1-Instanzen, wodurch Benutzer sowohl die hardwarebasierten Einsparungen von Beschleunigern als auch die softwarebasierten Einsparungen einer optimierten Ressourcenvirtualisierung und -orchestrierung in großem Maßstab erzielen können.

Lösungsüberblick

Lösungsansätze von ExaDeploy für die Bereitstellungseffizienz

Um eine effiziente Nutzung von Rechenressourcen zu gewährleisten, müssen Sie die richtige Ressourcenzuweisung, automatische Skalierung, gemeinsame Rechenstandorte, Netzwerkkosten- und Latenzmanagement, Fehlertoleranz, Versionsverwaltung und Reproduzierbarkeit und mehr berücksichtigen. In der Größenordnung wirken sich alle Ineffizienzen erheblich auf Kosten und Latenzzeiten aus, und viele große Unternehmen haben diese Ineffizienzen durch den Aufbau interner Teams und Fachwissen angegangen. Für die meisten Unternehmen ist es jedoch nicht praktikabel, diesen finanziellen und organisatorischen Mehraufwand für die Entwicklung generalisierbarer Software zu übernehmen, die nicht die gewünschte Kernkompetenz des Unternehmens darstellt.

ExaDeploy wurde entwickelt, um diese Schwachstellen bei der Bereitstellungseffizienz zu lösen, einschließlich derjenigen, die in einigen der komplexesten Workloads auftreten, wie z. B. in Anwendungen für autonome Fahrzeuge und Verarbeitung natürlicher Sprache (NLP). Bei einigen großen Batch-ML-Workloads hat ExaDeploy die Kosten um über 85 % gesenkt, ohne die Latenz oder Genauigkeit zu beeinträchtigen, mit einer Integrationszeit von nur einem Technikertag. ExaDeploy hat sich bei der automatischen Skalierung und Verwaltung Tausender gleichzeitiger Hardwarebeschleuniger-Ressourceninstanzen ohne Systemverschlechterung bewährt.

Zu den Hauptfunktionen von ExaDeploy gehören:

  • Läuft in Ihrer Cloud: Keines Ihrer Modelle, Eingänge oder Ausgänge verlässt jemals Ihr privates Netzwerk. Nutzen Sie weiterhin die Rabatte Ihres Cloud-Anbieters.
  • Gemeinsam genutzte Accelerator-Ressourcen: ExaDeploy optimiert die verwendeten Beschleuniger, indem mehreren Modellen oder Workloads ermöglicht wird, Beschleunigerressourcen gemeinsam zu nutzen. Es kann auch erkennen, ob mehrere Workloads dasselbe Modell bereitstellen, und dann das Modell für diese Workloads freigeben, wodurch der verwendete Beschleuniger optimiert wird. Seine Funktionen für automatisches Rebalancing und Node-Draining maximieren die Auslastung und minimieren die Kosten.

Exafunction unterstützt AWS Inferentia, um das beste Preis-Leistungs-Verhältnis für Machine-Learning-Inferenz PlatoBlockchain Data Intelligence zu erzielen. Vertikale Suche. Ai.

  • Skalierbares serverloses Bereitstellungsmodell: ExaDeploy skaliert automatisch basierend auf der Beschleuniger-Ressourcensättigung. Skalieren Sie dynamisch auf 0 oder auf Tausende von Ressourcen.
  • Unterstützung für eine Vielzahl von Berechnungstypen: Sie können Deep-Learning-Modelle aus allen wichtigen ML-Frameworks sowie beliebigem C++-Code, CUDA-Kernels, benutzerdefinierten Operationen und Python-Funktionen auslagern.
  • Dynamische Modellregistrierung und Versionierung: Neue Modelle oder Modellversionen können registriert und ausgeführt werden, ohne dass das System neu erstellt oder neu bereitgestellt werden muss.
  • Punkt-zu-Punkt-Ausführung: Clients verbinden sich direkt mit Remote-Accelerator-Ressourcen, was eine geringe Latenz und einen hohen Durchsatz ermöglicht. Sie können den Status sogar aus der Ferne speichern.
  • Asynchrone Ausführung: ExaDeploy unterstützt die asynchrone Ausführung von Modellen, was es Clients ermöglicht, lokale Berechnungen mit Remote-Accelerator-Ressourcen zu parallelisieren.
  • Fehlertolerante Remote-Pipelines: ExaDeploy ermöglicht es Clients, entfernte Berechnungen (Modelle, Vorverarbeitung usw.) dynamisch in Pipelines mit garantierter Fehlertoleranz zusammenzustellen. Das ExaDeploy-System handhabt Pod- oder Knotenausfälle mit automatischer Wiederherstellung und Wiedergabe, sodass die Entwickler nie an die Gewährleistung der Fehlertoleranz denken müssen.
  • Sofort einsatzbereite Überwachung: ExaDeploy stellt Prometheus-Metriken und Grafana-Dashboards bereit, um die Ressourcennutzung des Beschleunigers und andere Systemmetriken zu visualisieren.

ExaDeploy unterstützt AWS Inferentia

AWS Inferentia-basierte Amazon EC2 Inf1-Instances sind für Deep-Learning-spezifische Inferenz-Workloads konzipiert. Diese Instances bieten einen bis zu 2.3-fachen Durchsatz und bis zu 70 % Kosteneinsparungen im Vergleich zur aktuellen Generation von GPU-Inferenz-Instances.

ExaDeploy unterstützt jetzt AWS Inferentia, und zusammen setzen sie die gesteigerte Leistung und Kosteneinsparungen frei, die durch speziell entwickelte Hardwarebeschleunigung und optimierte Ressourcen-Orchestrierung in großem Maßstab erreicht werden. Sehen wir uns die kombinierten Vorteile von ExaDeploy und AWS Inferentia an, indem wir einen sehr verbreiteten modernen ML-Workload betrachten: Batch-Workloads mit gemischter Datenverarbeitung.

Hypothetische Workload-Eigenschaften:

  • 15 ms reine CPU-Vorverarbeitung/Nachverarbeitung
  • Modellinferenz (15 ms auf GPU, 5 ms auf AWS Inferentia)
  • 10 Clients, jeder stellt alle 20 ms eine Anfrage
  • Die ungefähren relativen Kosten von CPU:Inferentia:GPU betragen 1:2:4 (Basierend auf Amazon EC2 On-Demand-Preisen für c5.xlarge, inf1.xlarge und g4dn.xlarge)

Die folgende Tabelle zeigt, wie sich jede der Optionen entwickelt:

Einrichtung Ressourcen benötigt Kosten Latency
GPU ohne ExaDeploy 2 CPU, 2 GPU pro Client (insgesamt 20 CPU, 20 GPU) 100 30 ms
GPU mit ExaDeploy 8 GPUs werden von 10 Clients gemeinsam genutzt, 1 CPU pro Client 42 30 ms
AWS Inferentia ohne ExaDeploy 1 CPU, 1 AWS Inferentia pro Client (insgesamt 10 CPU, 10 Inferentia) 30 20 ms
AWS Inferentia mit ExaDeploy 3 AWS Inferentia gemeinsam genutzt auf 10 Clients, 1 CPU pro Client 16 20 ms

ExaDeploy auf AWS Inferentia-Beispiel

In diesem Abschnitt gehen wir die Schritte zur Konfiguration von ExaDeploy anhand eines Beispiels mit inf1-Knoten auf einem BERT-PyTorch-Modell durch. Wir haben einen durchschnittlichen Durchsatz von 1140 Samples/Sek. für das Bert-Basismodell gesehen, was zeigt, dass ExaDeploy für dieses Szenario mit einem einzigen Modell und einer einzigen Workload wenig bis gar keinen Overhead verursacht hat.

Schritt 1: Richten Sie ein Amazon Elastic Kubernetes-Service (Amazon EKS)-Cluster

Ein Amazon EKS-Cluster kann mit unserem hochgefahren werden Terraform AWS-Modul. Für unser Beispiel haben wir eine verwendet inf1.xlarge für AWS Inferentia.

Schritt 2: Richten Sie ExaDepoy ein

Der zweite Schritt besteht darin, ExaDeploy einzurichten. Im Allgemeinen ist die Bereitstellung von ExaDeploy auf inf1-Instances unkompliziert. Das Setup folgt größtenteils dem gleichen Verfahren wie bei GPU-Instanzen (Graphics Processing Unit). Der Hauptunterschied besteht darin, das Modell-Tag von GPU auf AWS Inferentia zu ändern und das Modell neu zu kompilieren. Beispielsweise erforderte der Wechsel von g4dn- zu inf1-Instanzen mithilfe der Anwendungsprogrammierschnittstellen (APIs) von ExaDeploy nur etwa 10 Codezeilen, die geändert werden mussten.

  • Eine einfache Methode ist die Verwendung von Exafunction Terraform AWS Kubernetes-Modul or Helmkarte. Diese stellen die zentralen ExaDeploy-Komponenten zur Ausführung im Amazon EKS-Cluster bereit.
  • Kompilieren Sie das Modell in ein serialisiertes Format (z. B. TorchScript, in TF gespeicherte Modelle, ONNX usw.). Für AWS Inferentia folgten wir Dieses Tutorial.
  • Registrieren Sie das kompilierte Modell im Modul-Repository von 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(),
           },
       )

  • Bereiten Sie die Daten für das Modell vor (dh nicht 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",
    )

  • Führen Sie das Modell remote vom Client aus.
    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 und AWS Inferentia: Gemeinsam besser

AWS Inferentia verschiebt die Grenzen des Durchsatzes für die Modellinferenz und bietet die niedrigsten Kosten pro Inferenz in der Cloud. Allerdings benötigen Unternehmen die richtige Orchestrierung, um die Preis-Leistungs-Vorteile von Inf1 in großem Umfang nutzen zu können. ML-Serving ist ein komplexes Problem, das, wenn es intern angegangen wird, Fachwissen erfordert, das von den Unternehmenszielen entfernt ist und häufig Produktzeitpläne verzögert. ExaDeploy, die ML-Bereitstellungssoftwarelösung von Exafunction, hat sich zum Branchenführer entwickelt. Es bedient selbst die komplexesten ML-Workloads und bietet gleichzeitig reibungslose Integrationserfahrungen und Support von einem erstklassigen Team. Zusammen ermöglichen ExaDeploy und AWS Inferentia eine höhere Leistung und Kosteneinsparungen für Inferenz-Workloads im großen Maßstab.

Zusammenfassung

In diesem Beitrag haben wir Ihnen gezeigt, wie Exafunction AWS Inferentia für Performance ML unterstützt. Weitere Informationen zum Erstellen von Anwendungen mit Exafunction finden Sie unter Exafunktion. Best Practices zum Erstellen von Deep-Learning-Workloads auf Inf1 finden Sie unter Amazon EC2 Inf1-Instances.


Über die Autoren

Nicholas Jiang, Softwareingenieur, Exafunction

Jonathan Ma, Softwareingenieur, Exafunction

Prem Nair, Softwareingenieur, Exafunction

Anshul Ramachandran, Softwareingenieur, Exafunction

Shruti Koparkar, Senior Product Marketing Manager, AWS

Zeitstempel:

Mehr von AWS Maschinelles Lernen