Exafunction stöder AWS Inferentia för att låsa upp bästa prisprestanda för maskininlärning inferens PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Exafunction stöder AWS Inferentia för att låsa upp bästa prisprestanda för maskininlärning

I alla branscher blir modellerna för maskininlärning (ML) djupare, arbetsflöden blir mer komplexa och arbetsbelastningar fungerar i större skala. Betydande ansträngningar och resurser läggs på att göra dessa modeller mer exakta eftersom denna investering direkt resulterar i bättre produkter och upplevelser. Å andra sidan, att få dessa modeller att köras effektivt i produktionen är ett icke-trivialt åtagande som ofta förbises, trots att det är nyckeln till att uppnå prestanda- och budgetmål. I det här inlägget tar vi upp hur Exafunction och AWS slutledning arbeta tillsammans för att låsa upp enkel och kostnadseffektiv distribution för ML-modeller i produktion.

Exafunktion är en start-up inriktad på att göra det möjligt för företag att utföra ML i stor skala så effektivt som möjligt. En av deras produkter är ExaDeploy, en lättanvänd SaaS-lösning för att betjäna ML-arbetsbelastningar i stor skala. ExaDeploy orkestrerar effektivt dina ML-arbetsbelastningar över blandade resurser (CPU och hårdvaruacceleratorer) för att maximera resursutnyttjandet. Den tar också hand om automatisk skalning, beräkningssamlokalisering, nätverksproblem, feltolerans och mer för att säkerställa effektiv och tillförlitlig driftsättning. AWS Inferentia-baserad Amazon EC2 Inf1-instanser är specialbyggda för att leverera den lägsta kostnaden per slutledning i molnet. ExaDeploy stöder nu Inf1-instanser, vilket tillåter användare att få både de hårdvarubaserade besparingarna med acceleratorer och de mjukvarubaserade besparingarna av optimerad resursvirtualisering och orkestrering i stor skala.

Lösningsöversikt

Hur ExaDeploy löser för implementeringseffektivitet

För att säkerställa ett effektivt utnyttjande av beräkningsresurser måste du överväga korrekt resursallokering, automatisk skalning, beräkningssamlokalisering, nätverkskostnads- och latenshantering, feltolerans, versionshantering och reproducerbarhet med mera. I stor skala påverkar eventuell ineffektivitet väsentligt kostnader och latens, och många stora företag har åtgärdat dessa ineffektiviteter genom att bygga interna team och expertis. Det är dock inte praktiskt för de flesta företag att ta på sig denna ekonomiska och organisatoriska omkostnad för att bygga generaliserbar programvara som inte är företagets önskade kärnkompetens.

ExaDeploy är utformad för att lösa dessa smärtpunkter för implementeringseffektivitet, inklusive de som ses i några av de mest komplexa arbetsbelastningarna, såsom de i Autonomous Vehicle och NLP-applikationer (natural language processing). På vissa stora ML-arbetsbelastningar har ExaDeploy minskat kostnaderna med över 85 % utan att göra avkall på latens eller noggrannhet, med integrationstid så låg som en ingenjörsdag. ExaDeploy har visat sig automatiskt skala och hantera tusentals samtidiga hårdvaruacceleratorresursinstanser utan någon systemförsämring.

Nyckelfunktioner i ExaDeploy inkluderar:

  • Körs i ditt moln: Ingen av dina modeller, ingångar eller utgångar lämnar någonsin ditt privata nätverk. Fortsätt att använda dina molnleverantörsrabatter.
  • Delade acceleratorresurser: ExaDeploy optimerar acceleratorerna som används genom att möjliggöra för flera modeller eller arbetsbelastningar att dela acceleratorresurser. Den kan också identifiera om flera arbetsbelastningar distribuerar samma modell och sedan dela modellen över dessa arbetsbelastningar, och därigenom optimera acceleratorn som används. Dess automatiska ombalansering och noddränering maximerar utnyttjandet och minimerar kostnaderna.

Exafunction stöder AWS Inferentia för att låsa upp bästa prisprestanda för maskininlärning inferens PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

  • Skalbar serverlös implementeringsmodell: ExaDeploy automatiska skalor baserade på acceleratorns resursmättnad. Skala ner dynamiskt till 0 eller upp till tusentals resurser.
  • Stöd för en mängd olika beräkningstyper: Du kan ladda ner modeller för djupinlärning från alla större ML-ramverk såväl som godtycklig C++-kod, CUDA-kärnor, anpassade ops och Python-funktioner.
  • Dynamisk modellregistrering och versionshantering: Nya modeller eller modellversioner kan registreras och köras utan att behöva bygga om eller distribuera om systemet.
  • Punkt-till-punkt-utförande: Klienter ansluter direkt till fjärracceleratorresurser, vilket möjliggör låg latens och hög genomströmning. De kan till och med lagra tillståndet på distans.
  • Asynkron körning: ExaDeploy stöder asynkron exekvering av modeller, vilket gör att klienter kan parallellisera lokal beräkning med fjärracceleratorresursarbete.
  • Feltoleranta fjärrledningar: ExaDeploy tillåter klienter att dynamiskt komponera fjärrberäkningar (modeller, förbearbetning, etc.) till pipelines med feltoleransgaranti. ExaDeploy-systemet hanterar pod- eller nodfel med automatisk återställning och replay, så att utvecklarna aldrig behöver tänka på att säkerställa feltolerans.
  • Out-of-the-box övervakning: ExaDeploy tillhandahåller Prometheus-mått och Grafana-instrumentpaneler för att visualisera acceleratorresursanvändning och andra systemmått.

ExaDeploy stöder AWS Inferentia

AWS Inferentia-baserade Amazon EC2 Inf1-instanser är designade för djupinlärningsspecifika slutledningsarbetsbelastningar. Dessa instanser ger upp till 2.3x genomströmning och upp till 70 % kostnadsbesparing jämfört med den nuvarande generationen av GPU-inferensinstanser.

ExaDeploy stöder nu AWS Inferentia, och tillsammans låser de upp den ökade prestanda och kostnadsbesparingar som uppnås genom specialbyggd hårdvaruacceleration och optimerad resursorkestrering i stor skala. Låt oss titta på de kombinerade fördelarna med ExaDeploy och AWS Inferentia genom att överväga en mycket vanlig modern ML-arbetsbelastning: batch-arbetsbelastningar med blandade datorer.

Hypotetiska arbetsbelastningsegenskaper:

  • 15 ms av CPU-endast förprocess/efterprocess
  • Modellinferens (15 ms på GPU, 5 ms på AWS Inferentia)
  • 10 klienter, var och en gör förfrågan var 20:e ms
  • Ungefärlig relativ kostnad för CPU:Inferentia:GPU är 1:2:4 (Baserat på Amazon EC2 On-Demand-priser för c5.xlarge, inf1.xlarge och g4dn.xlarge)

Tabellen nedan visar hur vart och ett av alternativen formas:

Inställning Resurser som behövs Pris Latens
GPU utan ExaDeploy 2 CPU, 2 GPU per klient (totalt 20 CPU, 20 GPU) 100 30 ms
GPU med ExaDeploy 8 GPU:er delade på 10 klienter, 1 CPU per klient 42 30 ms
AWS Inferentia utan ExaDeploy 1 CPU, 1 AWS Inferentia per klient (totalt 10 CPU, 10 Inferentia) 30 20 ms
AWS Inferentia med ExaDeploy 3 AWS Inferentia delade över 10 klienter, 1 CPU per klient 16 20 ms

ExaDeploy på AWS Inferentia exempel

I det här avsnittet går vi igenom stegen för att konfigurera ExaDeploy genom ett exempel med inf1-noder på en BERT PyTorch-modell. Vi såg en genomsnittlig genomströmning på 1140 prover/sekund för bert-basmodellen, vilket visar att lite eller ingen overhead introducerades av ExaDeploy för detta scenario med en enda arbetsbelastning.

steg 1: Ställ in en Amazon Elastic Kubernetes-tjänst (Amazon EKS) kluster

Ett Amazon EKS-kluster kan tas upp med vår Terraform AWS-modul. För vårt exempel använde vi en inf1.xlarge för AWS Inferentia.

steg 2: Ställ in ExaDepoy

Det andra steget är att ställa in ExaDeploy. I allmänhet är distributionen av ExaDeploy på inf1-instanser okomplicerad. Installationen följer för det mesta samma procedur som den gör på grafikprocessorinstanser (GPU). Den primära skillnaden är att ändra modelltaggen från GPU till AWS Inferentia och kompilera om modellen. Till exempel, för att flytta från g4dn till inf1-instanser med ExaDeploys applikationsprogrammeringsgränssnitt (API) krävdes endast cirka 10 rader kod som ändrades.

  • En enkel metod är att använda Exafunctions Terraform AWS Kubernetes-modul or Rordiagram. Dessa distribuerar de centrala ExaDeploy-komponenterna för att köras i Amazon EKS-klustret.
  • Kompilera modell till ett serialiserat format (t.ex. TorchScript, TF-sparade modeller, ONNX, etc). För AWS Inferentia följde vi denna handledning.
  • Registrera den kompilerade modellen i ExaDeploys modulförråd.
    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(),
           },
       )

  • Förbered data för modellen (dvs inte 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",
    )

  • Kör modellen på distans från klienten.
    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 och AWS Inferentia: Bättre tillsammans

AWS Inferentia tänjer på gränserna för genomströmning för modellinferens och levererar lägsta kostnad per slutledning i molnet. Som sagt, företag behöver rätt orkestrering för att kunna dra nytta av pris-prestandafördelarna med Inf1 i stor skala. ML-servering är ett komplext problem som, om det åtgärdas internt, kräver expertis som är borttagen från företagets mål och ofta försenar produkttidslinjer. ExaDeploy, som är Exafunctions mjukvarulösning för ML-distribution, har vuxit fram som branschledare. Den betjänar även de mest komplexa ML-arbetsbelastningarna, samtidigt som den ger smidiga integrationsupplevelser och support från ett team i världsklass. Tillsammans låser ExaDeploy och AWS Inferentia upp ökad prestanda och kostnadsbesparingar för slutledningsarbetsbelastningar i stor skala.

Slutsats

I det här inlägget visade vi dig hur Exafunction stöder AWS Inferentia för prestanda ML. För mer information om byggapplikationer med Exafunction, besök Exafunktion. För bästa praxis för att bygga arbetsbelastningar för djupt lärande på Inf1, besök Amazon EC2 Inf1-instanser.


Om författarna

Nicholas Jiang, mjukvaruingenjör, Exafunction

Jonathan Ma, mjukvaruingenjör, Exafunction

Prem Nair, mjukvaruingenjör, Exafunction

Anshul Ramachandran, mjukvaruingenjör, Exafunction

Shruti Koparkar, senior produktmarknadschef, AWS

Tidsstämpel:

Mer från AWS maskininlärning