Exafunction acceptă AWS Inferentia pentru a debloca cele mai bune performanțe la preț pentru inferența învățării automate PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Exafunction acceptă AWS Inferentia pentru a debloca cele mai bune performanțe de preț pentru inferența învățării automate

În toate industriile, modelele de învățare automată (ML) sunt din ce în ce mai profunde, fluxurile de lucru devin mai complexe, iar sarcinile de lucru funcționează la scară mai mare. Sunt depuse eforturi și resurse semnificative pentru a face aceste modele mai precise, deoarece această investiție are ca rezultat direct produse și experiențe mai bune. Pe de altă parte, a face ca aceste modele să funcționeze eficient în producție este o activitate nebanală, care este adesea trecută cu vederea, în ciuda faptului că este cheia pentru atingerea obiectivelor de performanță și buget. În această postare vom acoperi modul în care Exafunction și Inferentia AWS lucrează împreună pentru a debloca implementarea simplă și rentabilă pentru modelele ML în producție.

Exafuncție este un start-up axat pe a permite companiilor să realizeze ML la scară cât mai eficient posibil. Unul dintre produsele lor este ExaDeploy, o soluție SaaS ușor de utilizat pentru a servi sarcinile de lucru ML la scară. ExaDeploy orchestrează eficient sarcinile de lucru ML prin resurse mixte (procesoare și acceleratoare hardware) pentru a maximiza utilizarea resurselor. De asemenea, se ocupă de scalarea automată, colocarea de calcul, problemele de rețea, toleranța la erori și multe altele, pentru a asigura o implementare eficientă și fiabilă. Bazat pe AWS Inferentia Instanțe Amazon EC2 Inf1 sunt concepute special pentru a oferi cel mai mic cost-pe-inferență în cloud. ExaDeploy acceptă acum instanțe Inf1, ceea ce permite utilizatorilor să obțină atât economiile bazate pe hardware ale acceleratoarelor, cât și economiile bazate pe software ale virtualizării și orchestrarii optimizate a resurselor la scară.

Prezentare generală a soluțiilor

Cum rezolvă ExaDeploy pentru eficiența implementării

Pentru a asigura utilizarea eficientă a resurselor de calcul, trebuie să luați în considerare alocarea adecvată a resurselor, scalarea automată, colocarea calculului, gestionarea costurilor și a latenței de rețea, toleranța la erori, versiunea și reproductibilitatea și multe altele. La scară, orice ineficiență afectează în mod semnificativ costurile și latența, iar multe companii mari au abordat aceste ineficiențe construind echipe interne și expertiză. Cu toate acestea, nu este practic pentru majoritatea companiilor să-și asume aceste cheltuieli financiare și organizaționale pentru construirea de software generalizabil care nu este competența de bază dorită de companie.

ExaDeploy este proiectat să rezolve aceste probleme legate de eficiența implementării, inclusiv cele observate în unele dintre cele mai complexe sarcini de lucru, cum ar fi cele din aplicațiile Autonomous Vehicle și procesarea limbajului natural (NLP). În cazul unor sarcini de lucru ML în loturi mari, ExaDeploy a redus costurile cu peste 85% fără a sacrifica latența sau acuratețea, cu un timp de integrare de până la o zi de inginer. ExaDeploy s-a dovedit că scala automat și gestionează mii de instanțe simultane de resurse hardware acceleratoare fără nicio degradare a sistemului.

Caracteristicile cheie ale ExaDeploy includ:

  • Se rulează în cloud: Niciunul dintre modelele, intrările sau ieșirile dvs. nu părăsește rețeaua privată. Continuați să utilizați reducerile furnizorului dvs. de cloud.
  • Resurse de accelerație partajate: ExaDeploy optimizează acceleratoarele utilizate, permițând mai multe modele sau sarcini de lucru pentru a partaja resursele acceleratoarelor. De asemenea, poate identifica dacă mai multe sarcini de lucru implementează același model și apoi poate partaja modelul între acele sarcini de lucru, optimizând astfel acceleratorul utilizat. Capacitățile sale de reechilibrare automată și de scurgere a nodurilor maximizează utilizarea și minimizează costurile.

Exafunction acceptă AWS Inferentia pentru a debloca cele mai bune performanțe la preț pentru inferența învățării automate PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

  • Model scalabil de implementare fără server: scala automată ExaDeploy pe baza saturației resurselor acceleratorului. Reduceți dinamic până la 0 sau până la mii de resurse.
  • Suport pentru o varietate de tipuri de calcul: Puteți descărca modele de învățare profundă din toate cadrele ML majore, precum și cod arbitrar C++, nuclee CUDA, operațiuni personalizate și funcții Python.
  • Înregistrarea și versiunea dinamică a modelului: Noile modele sau versiuni de model pot fi înregistrate și rulate fără a fi nevoie să reconstruiți sau să redistribuiți sistemul.
  • Execuție punct la punct: Clienții se conectează direct la resursele acceleratorului de la distanță, ceea ce permite o latență scăzută și un randament ridicat. Ele pot chiar stoca starea de la distanță.
  • Execuție asincronă: ExaDeploy acceptă execuția asincronă a modelelor, ceea ce permite clienților să paralelizeze calculul local cu lucrul de la distanță cu resursele acceleratorului.
  • Conducte la distanță tolerante la erori: ExaDeploy permite clienților să compună în mod dinamic calcule la distanță (modele, preprocesare etc.) în conducte cu garanție de toleranță la erori. Sistemul ExaDeploy tratează defecțiunile podului sau nodului cu recuperare și reluare automată, astfel încât dezvoltatorii nu trebuie să se gândească niciodată la asigurarea toleranței la erori.
  • Monitorizare ieșită din cutie: ExaDeploy oferă valori Prometheus și tablouri de bord Grafana pentru a vizualiza utilizarea resurselor acceleratorului și alte valori ale sistemului.

ExaDeploy acceptă AWS Inferentia

Instanțele Amazon EC2 Inf1 bazate pe AWS Inferentia sunt concepute pentru sarcinile de lucru specifice de inferență de deep learning. Aceste instanțe oferă un debit de până la 2.3x și o economie de costuri de până la 70% în comparație cu generația actuală de instanțe de inferență GPU.

ExaDeploy acceptă acum AWS Inferentia și, împreună, deblochează performanța crescută și economiile de costuri obținute prin accelerarea hardware special concepută și orchestrarea optimizată a resurselor la scară. Să ne uităm la beneficiile combinate ale ExaDeploy și AWS Inferentia, luând în considerare o sarcină de lucru ML modernă foarte comună: încărcături de lucru în loturi, mixte de calcul.

Caracteristici ipotetice ale volumului de muncă:

  • 15 ms de pre-procesare/post-procesare numai pentru procesor
  • Inferență de model (15 ms pe GPU, 5 ms pe AWS Inferentia)
  • 10 clienți, fiecare face cerere la fiecare 20 ms
  • Costul relativ aproximativ al CPU:Inferentia:GPU este 1:2:4 (Pe baza prețurilor Amazon EC2 On-Demand pentru c5.xlarge, inf1.xlarge și g4dn.xlarge)

Tabelul de mai jos arată cum se formează fiecare dintre opțiuni:

Configurarea Resurse necesare A costat Latență
GPU fără ExaDeploy 2 CPU, 2 GPU per client (total 20 CPU, 20 GPU) 100 30 ms
GPU cu ExaDeploy 8 GPU-uri partajate între 10 clienți, 1 CPU per client 42 30 ms
AWS Inferentia fără ExaDeploy 1 CPU, 1 AWS Inferentia per client (total 10 CPU, 10 Inferentia) 30 20 ms
AWS Inferentia cu ExaDeploy 3 AWS Inferentia partajate între 10 clienți, 1 CPU per client 16 20 ms

Exemplu ExaDeploy pe AWS Inferentia

În această secțiune, trecem peste pașii de configurare a ExaDeploy printr-un exemplu cu noduri inf1 pe un model BERT PyTorch. Am observat un debit mediu de 1140 de eșantioane/sec pentru modelul bert-base, ceea ce demonstrează că ExaDeploy a introdus puțin sau deloc general pentru acest scenariu cu un singur model, un singur volum de lucru.

Etapa 1: Configurați un Serviciul Amazon Elastic Kubernetes cluster (Amazon EKS).

Un cluster Amazon EKS poate fi creat cu ajutorul nostru Modul Terraform AWS. Pentru exemplul nostru, am folosit un inf1.xlarge pentru AWS Inferentia.

Etapa 2: Configurați ExaDepoy

Al doilea pas este configurarea ExaDeploy. În general, implementarea ExaDeploy pe instanțe inf1 este simplă. Configurarea urmează în cea mai mare parte aceeași procedură ca și pe instanțele unității de procesare grafică (GPU). Diferența principală este schimbarea etichetei modelului de la GPU la AWS Inferentia și recompilarea modelului. De exemplu, trecerea de la instanțe g4dn la inf1 folosind interfețele de programare a aplicațiilor (API) ExaDeploy a necesitat doar aproximativ 10 linii de cod pentru a fi schimbate.

  • O metodă simplă este să folosiți Exafunction Modulul Terraform AWS Kubernetes or Diagrama de cârmă. Acestea implementează componentele de bază ExaDeploy pentru a rula în clusterul Amazon EKS.
  • Compilați modelul într-un format serializat (de exemplu, TorchScript, modele salvate TF, ONNX etc). Pentru AWS Inferentia, am urmat acest tutorial.
  • Înregistrați modelul compilat în depozitul de module 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(),
           },
       )

  • Pregătiți datele pentru model (adică nu 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",
    )

  • Rulați modelul de la distanță de la 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 și AWS Inferentia: mai bine împreună

AWS Inferentia depășește limitele debitului pentru inferența modelului și oferă cel mai mic cost-pe-inferență în cloud. Acestea fiind spuse, companiile au nevoie de orchestrarea adecvată pentru a se bucura de avantajele preț-performanță ale Inf1 la scară. Servirea ML este o problemă complexă care, dacă este abordată intern, necesită o expertiză care este eliminată din obiectivele companiei și adesea întârzie termenele de producție. ExaDeploy, care este soluția software de implementare ML Exafunction, a devenit lider în industrie. Deservește chiar și cele mai complexe sarcini de lucru ML, oferind în același timp experiențe de integrare fără probleme și suport din partea unei echipe de talie mondială. Împreună, ExaDeploy și AWS Inferentia deblochează performanțe crescute și economii de costuri pentru sarcinile de lucru de inferență la scară.

Concluzie

În această postare, v-am arătat cum Exafunction acceptă AWS Inferentia pentru ML de performanță. Pentru mai multe informații despre crearea de aplicații cu Exafunction, vizitați Exafuncție. Pentru cele mai bune practici privind construirea sarcinilor de lucru de învățare profundă pe Inf1, vizitați Instanțele Amazon EC2 Inf1.


Despre Autori

Nicholas Jiang, inginer software, Exafunction

Jonathan Ma, inginer software, Exafunction

Prem Nair, inginer software, Exafunction

Anshul Ramachandran, inginer software, Exafunction

Shruti Koparkar, director senior de marketing de produse, AWS

Timestamp-ul:

Mai mult de la Învățare automată AWS