Exafunction obsługuje AWS Inferentia, aby odblokować najlepszą wydajność cenową na potrzeby wnioskowania uczenia maszynowego PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Exafunction obsługuje AWS Inferentia, aby odblokować najlepszą wydajność cenową dla wnioskowania uczenia maszynowego

We wszystkich branżach modele uczenia maszynowego (ML) stają się coraz głębsze, przepływy pracy stają się coraz bardziej złożone, a obciążenia działają na większą skalę. Znaczne wysiłki i zasoby są wkładane w udoskonalanie tych modeli, ponieważ ta inwestycja bezpośrednio skutkuje lepszymi produktami i doświadczeniami. Z drugiej strony sprawienie, by te modele działały wydajnie w środowisku produkcyjnym, to nietrywialne przedsięwzięcie, które często jest pomijane, mimo że jest kluczem do osiągnięcia celów wydajnościowych i budżetowych. W tym poście omawiamy, w jaki sposób Exafunction i Inferencja AWS współpracuj, aby odblokować łatwe i ekonomiczne wdrażanie modeli ML w środowisku produkcyjnym.

Exafunkcja to start-up skoncentrowany na umożliwieniu firmom przeprowadzania ML na dużą skalę tak wydajnie, jak to możliwe. Jednym z ich produktów jest ExaDeploy, łatwe w użyciu rozwiązanie SaaS do obsługi obciążeń uczenia maszynowego na dużą skalę. ExaDeploy skutecznie koordynuje obciążenia ML w ramach mieszanych zasobów (akceleratory procesora i sprzętu), aby zmaksymalizować wykorzystanie zasobów. Zajmuje się również automatycznym skalowaniem, kolokacją obliczeniową, problemami z siecią, odpornością na awarie i nie tylko, aby zapewnić wydajne i niezawodne wdrożenie. Oparte na AWS Inferentia Instancje Amazon EC2 Inf1 zostały stworzone z myślą o zapewnieniu najniższego kosztu wnioskowania w chmurze. ExaDeploy obsługuje teraz instancje Inf1, co pozwala użytkownikom uzyskać zarówno sprzętowe oszczędności akceleratorów, jak i oszczędności programowe zoptymalizowanej wirtualizacji zasobów i orkiestracji na dużą skalę.

Omówienie rozwiązania

Jak ExaDeploy rozwiązuje problemy związane z wydajnością wdrażania

Aby zapewnić efektywne wykorzystanie zasobów obliczeniowych, należy wziąć pod uwagę odpowiednią alokację zasobów, automatyczne skalowanie, kolokację obliczeniową, zarządzanie kosztami sieci i opóźnieniami, odporność na błędy, przechowywanie wersji i odtwarzalność oraz wiele innych. Na dużą skalę wszelkie nieefektywności mają istotny wpływ na koszty i opóźnienia, a wiele dużych firm rozwiązało te nieefektywności, budując wewnętrzne zespoły i dysponując specjalistyczną wiedzą. Jednak dla większości firm niepraktyczne jest przyjmowanie narzutów finansowych i organizacyjnych związanych z tworzeniem uniwersalnego oprogramowania, które nie jest pożądaną podstawową kompetencją firmy.

ExaDeploy został zaprojektowany, aby rozwiązać te problemy związane z wydajnością wdrażania, w tym te, które występują w najbardziej złożonych obciążeniach, takich jak pojazdy autonomiczne i aplikacje do przetwarzania języka naturalnego (NLP). W przypadku niektórych dużych wsadowych obciążeń ML ExaDeploy obniżył koszty o ponad 85% bez poświęcania opóźnień lub dokładności, a czas integracji wynosił zaledwie jeden dzień pracy inżyniera. Udowodniono, że ExaDeploy automatycznie skaluje i zarządza tysiącami jednoczesnych instancji zasobów akceleratora sprzętowego bez degradacji systemu.

Kluczowe cechy ExaDeploy obejmują:

  • Działa w Twojej chmurze: Żaden z twoich modeli, wejść ani wyjść nigdy nie opuszcza twojej sieci prywatnej. Nadal korzystaj ze zniżek dostawcy usług w chmurze.
  • Udostępnione zasoby akceleratora: ExaDeploy optymalizuje używane akceleratory, umożliwiając wielu modelom lub obciążeniom współdzielenie zasobów akceleratorów. Może również zidentyfikować, czy wiele obciążeń wdraża ten sam model, a następnie udostępnić model między tymi obciążeniami, optymalizując w ten sposób używany akcelerator. Jego automatyczne przywracanie równowagi i możliwości opróżniania węzłów maksymalizują wykorzystanie i minimalizują koszty.

Exafunction obsługuje AWS Inferentia, aby odblokować najlepszą wydajność cenową na potrzeby wnioskowania uczenia maszynowego PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

  • Skalowalny model wdrażania bezserwerowego: Automatyczne skalowanie ExaDeploy na podstawie nasycenia zasobów akceleratora. Dynamicznie skaluj w dół do 0 lub w górę do tysięcy zasobów.
  • Obsługa różnych typów obliczeń: Możesz odciążyć modele głębokiego uczenia się ze wszystkich głównych platform ML, a także z dowolnego kodu C++, jąder CUDA, niestandardowych operacji i funkcji Pythona.
  • Dynamiczna rejestracja i wersjonowanie modeli: Nowe modele lub wersje modeli można rejestrować i uruchamiać bez konieczności przebudowywania lub ponownego wdrażania systemu.
  • Realizacja punktowa: Klienci łączą się bezpośrednio ze zdalnymi zasobami akceleratora, co zapewnia niskie opóźnienia i wysoką przepustowość. Mogą nawet przechowywać stan zdalnie.
  • Wykonanie asynchroniczne: ExaDeploy obsługuje asynchroniczne wykonywanie modeli, co pozwala klientom na zrównoleglanie lokalnych obliczeń ze zdalną pracą zasobów akceleratora.
  • Odporne na uszkodzenia zdalne potoki: ExaDeploy umożliwia klientom dynamiczne komponowanie zdalnych obliczeń (modeli, wstępnego przetwarzania itp.) w potoki z gwarancją odporności na błędy. System ExaDeploy obsługuje awarie pod lub węzłów z automatycznym odtwarzaniem i odtwarzaniem, dzięki czemu programiści nigdy nie muszą myśleć o zapewnieniu odporności na awarie.
  • Nieszablonowe monitorowanie: ExaDeploy udostępnia metryki Prometheus i pulpity nawigacyjne Grafana do wizualizacji wykorzystania zasobów akceleratora i innych metryk systemowych.

ExaDeploy obsługuje AWS Inferentia

Oparte na AWS Inferentia instancje Amazon EC2 Inf1 zostały zaprojektowane z myślą o specyficznych obciążeniach związanych z głębokim uczeniem się. Te instancje zapewniają nawet 2.3-krotną przepustowość i do 70% oszczędności kosztów w porównaniu z instancjami wnioskowania GPU obecnej generacji.

ExaDeploy obsługuje teraz AWS Inferentia i razem odblokowują zwiększoną wydajność i oszczędności kosztów osiągnięte dzięki specjalnie zaprojektowanej akceleracji sprzętowej i zoptymalizowanej orkiestracji zasobów na dużą skalę. Przyjrzyjmy się połączonym zaletom ExaDeploy i AWS Inferentia, biorąc pod uwagę bardzo powszechne nowoczesne obciążenie ML: wsadowe, mieszane obciążenia obliczeniowe.

Hipotetyczna charakterystyka obciążenia pracą:

  • 15 ms przetwarzania wstępnego/końcowego tylko dla procesora
  • Wnioskowanie modelu (15 ms na GPU, 5 ms na AWS Inferentia)
  • 10 klientów, każdy wysyła żądanie co 20 ms
  • Przybliżony względny koszt CPU:Inferentia:GPU wynosi 1:2:4 (na podstawie cen Amazon EC2 On-Demand dla c5.xlarge, inf1.xlarge i g4dn.xlarge)

Poniższa tabela pokazuje, jak kształtuje się każda z opcji:

ustawienie Potrzebne zasoby Koszty: Utajenie
GPU bez ExaDeploy 2 CPU, 2 GPU na klienta (łącznie 20 CPU, 20 GPU) 100 30 ms
GPU z ExaDeploy 8 procesorów graficznych współdzielonych przez 10 klientów, 1 procesor na klienta 42 30 ms
AWS Inferentia bez ExaDeploy 1 CPU, 1 AWS Inferentia na klienta (łącznie 10 CPU, 10 Inferentia) 30 20 ms
AWS Inferentia z ExaDeploy 3 AWS Inferentia współdzielone przez 10 klientów, 1 procesor na klienta 16 20 ms

ExaDeploy na przykładzie AWS Inferentia

W tej sekcji omówimy kroki konfiguracji ExaDeploy na przykładzie z węzłami inf1 w modelu BERT PyTorch. Zaobserwowaliśmy średnią przepustowość 1140 próbek/s dla modelu bert-base, co pokazuje, że ExaDeploy wprowadził niewielki lub żaden narzut dla tego pojedynczego modelu i scenariusza pojedynczego obciążenia.

Krok 1: Skonfiguruj Elastyczna usługa Amazon Kubernetes (Amazon EKS).

Klaster Amazon EKS można utworzyć za pomocą naszego Moduł Terraform AWS. W naszym przykładzie użyliśmy an inf1.xlarge dla AWS Inferentia.

Krok 2: Skonfiguruj ExaDepoy

Drugim krokiem jest skonfigurowanie ExaDeploy. Ogólnie rzecz biorąc, wdrożenie ExaDeploy w instancjach inf1 jest proste. Konfiguracja przebiega w większości zgodnie z tą samą procedurą, co w przypadku instancji procesora graficznego (GPU). Podstawowa różnica polega na zmianie znacznika modelu z GPU na AWS Inferentia i ponownej kompilacji modelu. Na przykład przejście z instancji g4dn do inf1 przy użyciu interfejsów programowania aplikacji (API) ExaDeploy wymagało zmiany tylko około 10 linii kodu.

  • Jedną z prostych metod jest użycie Exafunction Moduł Terraform AWS Kubernetes or Wykres steru. Wdrażają one podstawowe komponenty ExaDeploy do działania w klastrze Amazon EKS.
  • Skompiluj model do formatu serializowanego (np. TorchScript, zapisane modele TF, ONNX itp.). W przypadku AWS Inferentia postępowaliśmy zgodnie z ten poradnik.
  • Zarejestruj skompilowany model w repozytorium modułów 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(),
           },
       )

  • Przygotuj dane do modelu (tzn. nie 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",
    )

  • Uruchom model zdalnie z poziomu klienta.
    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: razem lepiej

AWS Inferentia przesuwa granice przepustowości dla wnioskowania modelu i zapewnia najniższy koszt wnioskowania w chmurze. To powiedziawszy, firmy potrzebują odpowiedniej orkiestracji, aby cieszyć się korzyściami cenowo-wydajnymi Inf1 na dużą skalę. Obsługa systemów uczących się to złożony problem, który, jeśli zostanie rozwiązany wewnętrznie, wymaga specjalistycznej wiedzy, która jest oderwana od celów firmy i często opóźnia harmonogramy produktów. ExaDeploy, oprogramowanie do wdrażania ML firmy Exafunction, stało się liderem w branży. Obsługuje nawet najbardziej złożone obciążenia ML, zapewniając jednocześnie płynną integrację i wsparcie światowej klasy zespołu. Razem ExaDeploy i AWS Inferentia odblokowują zwiększoną wydajność i oszczędności kosztów dla obciążeń wnioskowania na dużą skalę.

Wnioski

W tym poście pokazaliśmy, jak Exafunction wspiera AWS Inferentia dla wydajności ML. Aby uzyskać więcej informacji na temat tworzenia aplikacji za pomocą Exafunction, odwiedź stronę Exafunkcja. Aby zapoznać się z najlepszymi praktykami dotyczącymi tworzenia obciążeń związanych z uczeniem głębokim w Inf1, odwiedź stronę Instancje Amazon EC2 Inf1.


O autorach

Nicholas Jiang, inżynier oprogramowania, Exafunction

Jonathan Ma, inżynier oprogramowania, Exafunction

Prem Nair, inżynier oprogramowania, Exafunction

Anshul Ramachandran, inżynier oprogramowania, Exafunction

Shruti Koparkar, starszy kierownik ds. marketingu produktów, AWS

Znak czasu:

Więcej z Uczenie maszynowe AWS