Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Osiągnij czterokrotnie wyższą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie na wnioskowanie dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch

Elastyczna chmura obliczeniowa Amazon (Amazonka EC2) Instancje G5 są pierwszymi i jedynymi instancjami w chmurze, w których zastosowano procesory GPU NVIDIA A10G Tensor Core, które można wykorzystać w szerokim zakresie zastosowań wymagających intensywnej grafiki i uczenia maszynowego (ML). Dzięki instancjom G5 klienci ML otrzymują wysoką wydajność i ekonomiczną infrastrukturę do szkolenia i wdrażania większych i bardziej zaawansowanych modeli przetwarzania języka naturalnego (NLP), wizji komputerowej (CV) i przypadków użycia silnika rekomendującego.

Celem tego wpisu jest przedstawienie korzyści związanych z wydajnością wystąpień G5 w przypadku obciążeń wnioskowania ML na dużą skalę. Robimy to, porównując stosunek ceny do wydajności (mierzony jako wnioskowanie na milion dolarów) dla modeli NLP i CV z instancjami G4dn. Zaczynamy od opisania naszego podejścia do testów porównawczych, a następnie przedstawiamy krzywe przepustowości i opóźnień dla wielkości partii i precyzji typu danych. W porównaniu z instancjami G4dn stwierdzamy, że instancje G5 zapewniają konsekwentnie niższy koszt w przeliczeniu na milion wniosków zarówno dla trybów pełnej precyzji, jak i mieszanej precyzji dla modeli NLP i CV, jednocześnie osiągając wyższą przepustowość i mniejsze opóźnienia.

Podejście benchmarkingowe

Aby opracować badanie ceny i wydajności między G5 i G4dn, musimy zmierzyć przepustowość, opóźnienie i koszt na milion wniosków w zależności od wielkości partii. Badamy również wpływ pełnej precyzji na precyzję mieszaną. Zarówno wykres modelu, jak i dane wejściowe są ładowane do CUDA przed wnioskowaniem.

Jak pokazano na poniższym diagramie architektury, najpierw tworzymy odpowiednie obrazy kontenera podstawowego za pomocą CUDA dla bazowego wystąpienia EC2 (G4dn, G5). Aby zbudować podstawowe obrazy kontenerów, zaczynamy od Kontenery AWS Deep Learning, które używają gotowych obrazów platformy Docker do wdrażania środowisk uczenia głębokiego w ciągu kilku minut. Obrazy zawierają wymagane biblioteki i narzędzia do głębokiego uczenia się PyTorch. Możesz dodać własne biblioteki i narzędzia do tych obrazów, aby uzyskać wyższy stopień kontroli nad monitorowaniem, zgodnością i przetwarzaniem danych.

Następnie tworzymy obraz kontenera specyficzny dla modelu, który hermetyzuje konfigurację modelu, śledzenie modelu i powiązany kod do uruchamiania przejść do przodu. Wszystkie obrazy kontenerów są ładowane do Amazon ECR aby umożliwić skalowanie poziome tych modeli dla różnych konfiguracji modeli. Używamy Usługa Amazon Simple Storage (Amazon S3) jako wspólny magazyn danych do pobierania konfiguracji i przesyłania wyników testów porównawczych w celu podsumowania. Możesz użyć tej architektury do odtworzenia i odtworzenia wyników testu porównawczego oraz zmiany przeznaczenia do testów porównawczych różnych typów modeli (takich jak modele Hugging Face, modele PyTorch, inne modele niestandardowe) w różnych typach instancji EC2 (CPU, GPU, Inf1).

Po skonfigurowaniu tego eksperymentu naszym celem jest zbadanie opóźnień jako funkcji przepustowości. Ta krzywa jest ważna, aby projekt aplikacji mógł uzyskać optymalną pod względem kosztów infrastrukturę dla aplikacji docelowej. Aby to osiągnąć, symulujemy różne obciążenia, ustawiając w kolejce zapytania z wielu wątków, a następnie mierząc czas podróży w obie strony dla każdego zakończonego żądania. Przepustowość jest mierzona na podstawie liczby zrealizowanych żądań na jednostkę czasu zegarowego. Co więcej, można zmieniać rozmiary partii i inne zmienne, takie jak długość sekwencji i pełna precyzja w porównaniu z połówkową precyzją, aby kompleksowo przeczesać przestrzeń projektową, aby uzyskać orientacyjne wskaźniki wydajności. W naszym badaniu, poprzez parametryczne przemiatanie wielkości partii i zapytania od klientów wielowątkowych, określa się krzywą przepustowości w funkcji opóźnienia. Każde żądanie może być grupowane, aby zapewnić pełne wykorzystanie akceleratora, zwłaszcza w przypadku małych żądań, które mogą nie w pełni wykorzystywać węzła obliczeniowego. Możesz również zastosować tę konfigurację, aby określić rozmiar partii po stronie klienta w celu uzyskania optymalnej wydajności.

Podsumowując, możemy przedstawić ten problem matematycznie jako: (przepustowość, opóźnienie) = funkcja (wielkość partii, liczba wątków, precyzja).

Oznacza to, że biorąc pod uwagę wyczerpującą przestrzeń, liczba eksperymentów może być duża. Na szczęście każdy eksperyment można przeprowadzić niezależnie. Zalecamy używanie Partia AWS do przeprowadzenia tego benchmarkingu w skali poziomej w skompresowanym czasie bez wzrostu kosztów benchmarkingu w porównaniu z liniowym podejściem do testowania. Kod do replikacji wyników znajduje się w Repozytorium GitHub przygotowany dla AWS Re:Invent 2021. Repozytorium jest kompleksowe do przeprowadzania testów porównawczych na różnych akceleratorach. Możesz odwołać się do aspektu GPU w kodzie, aby zbudować kontener (Dockerfile-gpu), a następnie odnieś się do kodu w środku Container-Root dla konkretnych przykładów dla BERT i ResNet50.

Wykorzystaliśmy powyższe podejście do opracowania badań wydajności w dwóch typach modeli: Bert-base-uncased (110 milionów parametrów, NLP) i ResNet50 (25.6 miliona parametrów, CV). Poniższa tabela zawiera podsumowanie szczegółów modelu.

Typ modelu Model Szczegóły
NLP twmkn9/bert-base-uncased-squad2 110 milionów parametrów Długość sekwencji = 128
CV ResNet50 25.6 milionów parametrów

Dodatkowo, aby porównać typy danych (pełna, połowiczna precyzja), używamy torch.cuda.amp, który zapewnia wygodne metody obsługi mieszanej precyzji tam, gdzie niektóre operacje wykorzystują torch.float32 (zmiennoprzecinkowy) typ danych i inne operacje wykorzystania torch.float16 (połowa). Na przykład operatory, takie jak warstwy liniowe i sploty, są znacznie szybsze w przypadku float16, podczas gdy inne, takie jak redukcje, często wymagają dynamicznego zakresu float32. Automatyczna precyzja mieszana próbuje dopasować każdego operatora do odpowiedniego typu danych, aby zoptymalizować czas pracy sieci i zużycie pamięci.

Wyniki analizy porównawczej

Dla uczciwego porównania wybraliśmy G4dn.4xduży i G5.4xduży instancje o podobnych atrybutach, jak wymieniono w poniższej tabeli.

Instancja GPU Pamięć GPU (GiB) vCPU Pamięć (GiB) Pamięć instancji (GB) Wydajność sieci (Gb/s) Przepustowość EBS (Gb/s) Ceny systemu Linux na żądanie (us-east-1)
G5.4xduży 1 24 16 64 1x dysk SSD 600 NVMe do 25 8 $ 1.204 / godzina
G4dn.4xduży 1 16 16 64 1x dysk SSD 225 NVMe do 25 4.75 $ 1.624 / godzina

W poniższych sekcjach porównujemy wydajność wnioskowania ML modeli BERT i RESNET50 z podejściem przeszukiwania siatki dla określonych rozmiarów partii (32, 16, 8, 4, 1) i precyzji typu danych (pełna i połowa precyzji), aby uzyskać przepustowość vs. krzywa latencji. Dodatkowo badamy wpływ przepustowości na wielkość partii zarówno dla pełnej, jak i połowicznej precyzji. Na koniec mierzymy koszt na milion wniosków jako funkcję wielkości partii. Skonsolidowane wyniki tych eksperymentów podsumowano w dalszej części tego postu.

Przepustowość a opóźnienie

Poniższe rysunki porównują wystąpienia G4dn i G5 dla obciążeń NLP i CV z pełną i połowiczną precyzją. W porównaniu z instancjami G4dn, instancja G5 zapewnia przepustowość około pięć razy wyższą (pełna precyzja) i około 2.5 razy wyższą (połowa precyzji) dla modelu podstawowego BERT i około 2-2.5 razy wyższą dla modelu ResNet50. Ogólnie rzecz biorąc, G5 jest preferowanym wyborem, z rosnącymi wielkościami partii dla obu modeli, zarówno dla pełnej, jak i mieszanej precyzji z punktu widzenia wydajności.

Poniższe wykresy porównują przepustowość i opóźnienie P95 z pełną i połowiczną precyzją dla BERT.

Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Poniższe wykresy porównują przepustowość i opóźnienie P95 z pełną i połowiczną precyzją dla ResNet50.

Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Przepustowość i opóźnienie a wielkość partii

Poniższe wykresy przedstawiają przepustowość w funkcji wielkości partii. Przy małych wielkościach partii akcelerator nie działa w pełni, a wraz ze wzrostem wielkości partii zwiększa się przepustowość kosztem opóźnienia. Krzywa przepustowości asymptotycznie osiąga maksymalną wartość, która jest funkcją wydajności akceleratora. Krzywa ma dwie wyraźne cechy: odcinek wznoszący się i odcinek płaski asymptotyczny. W przypadku danego modelu wydajny akcelerator (G5) jest w stanie rozciągnąć wznoszącą się sekcję do większych rozmiarów partii niż G4dn i asymptoty przy wyższej przepustowości. Ponadto istnieje liniowy kompromis między opóźnieniem a rozmiarem partii. W związku z tym, jeśli aplikacja jest powiązana z opóźnieniem, możemy użyć opóźnienia P95 w porównaniu z rozmiarem partii, aby określić optymalny rozmiar partii. Jeśli jednak celem jest maksymalizacja przepustowości przy najmniejszym opóźnieniu, lepiej wybrać rozmiar partii odpowiadający „kolanowi” między sekcjami rosnącymi i asymptotycznymi, ponieważ każdy dalszy wzrost rozmiaru partii skutkowałby taką samą przepustowością przy gorsze opóźnienie. Aby osiągnąć najlepszy stosunek ceny do wydajności, mając na celu wyższą przepustowość przy najmniejszym opóźnieniu, lepiej jest skalować to optimum w poziomie za pomocą wielu serwerów wnioskowania, a nie tylko zwiększać rozmiar partii.

Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Koszt a wielkość partii

W tej sekcji przedstawiamy wyniki porównawcze kosztów wnioskowania ($ na milion wnioskowań) w stosunku do wielkości partii. Na poniższym rysunku wyraźnie widać, że koszt (mierzony jako $ na milion wniosków) jest konsekwentnie niższy zarówno w przypadku G5, jak i G4dn (z pełną i połówkową precyzją).

Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

W poniższej tabeli podsumowano porównania przepustowości, opóźnień i kosztów (wniosków w dolarach na milion) dla modeli BERT i RESNET50 w obu trybach dokładności dla określonych rozmiarów partii. Pomimo wyższego kosztu wystąpienia, G5 konsekwentnie przewyższa G4dn we wszystkich aspektach opóźnienia wnioskowania, przepustowości i kosztu (wnioskowanie w dolarach na milion) dla wszystkich rozmiarów partii. Łącząc różne metryki w koszt ($ na milion wniosków), model BERT (wielkość partii 32, pełna precyzja) z G5 jest 3.7 razy korzystniejszy niż G4dn, a z modelem ResNet50 (wielkość partii 32, pełna precyzja) wynosi 1.6 razy korzystniejsze niż G4dn.

Model Wielkość partii Detaliczność

Wydajność

(Wielkość partii X Żądania/s)

Opóźnienie (ms)

$/milion

Wnioskowania (na żądanie)

Koszt korzyści

(G5 przez G4dn)

. . . G5 G4dn G5 G4dn G5 G4dn
Bert-baza bez obudowy 32 pełny 723 154 44 208 $0.6 $2.2 3.7X
Mieszany 870 410 37 79 $0.5 $0.8 1.6X
16 pełny 651 158 25 102 $0.7 $2.1 3.0X
Mieszany 762 376 21 43 $0.6 $0.9 1.5X
8 pełny 642 142 13 57 $0.7 $2.3 3.3X
Mieszany 681 350 12 23 $0.7 $1.0 1.4X
. 1 pełny 160 116 6 9 $2.8 $2.9 1.0X
Mieszany 137 102 7 10 $3.3 $3.3 1.0X
ResNet50 32 pełny 941 397 34 82 $0.5 $0.8 1.6X
Mieszany 1533 851 21 38 $0.3 $0.4 1.3X
16 pełny 888 384 18 42 $0.5 $0.9 1.8X
Mieszany 1474 819 11 20 $0.3 $0.4 1.3X
8 pełny 805 340 10 24 $0.6 $1.0 1.7X
Mieszany 1419 772 6 10 $0.3 $0.4 1.3X
. 1 pełny 202 164 5 6 $2.2 $2 0.9X
Mieszany 196 180 5 6 $2.3 $1.9 0.8X

Dodatkowe wzorce wnioskowania

Oprócz wyników bazy BERT i ResNet50 w poprzednich sekcjach, przedstawiamy dodatkowe wyniki benchmarkingu dla innych powszechnie używanych dużych modeli NLP i CV w PyTorch. Przewaga wydajności G5 nad G4dn została zaprezentowana dla modeli BERT Large z różną precyzją oraz modeli Yolo-v5 dla różnych rozmiarów. Aby uzyskać kod do replikacji testu porównawczego, zobacz Przykłady NVIDIA Deep Learning dla rdzeni tensorowych. Wyniki te pokazują korzyści płynące z używania G5 nad G4dn dla szerokiego zakresu zadań wnioskowania obejmujących różne typy modeli.

Model Detaliczność Wielkość partii Długość sekwencji Przepustowość (wysłane/s) Przepustowość: G4dn Przyspieszenie ponad G4dn
BERT-duży FP16 1 128 93.5 40.31 2.3
BERT-duży FP16 4 128 264.2 87.4 3.0
BERT-duży FP16 8 128 392.1 107.5 3.6
BERT-duży FP32 1 128 68.4 22.67 3.0
BERT-duży 4 128 118.5 32.21 3.7
BERT-duży 8 128 132.4 34.67 3.8
Model GFLOPS Liczba parametrów Przetwarzanie wstępne (ms) Wnioskowanie (ms) Wnioskowanie (bez tłumienia maks.) (NMS/obraz)
YOLOv5 16.5 7.2M 0.2 3.6 4.5
YOLOv5m 49.1 21M 0.2 6.5 4.5
YOLOv5l 109.3 46M 0.2 9.1 3.5
YOLOv5x 205.9 86M 0.2 14.4 1.3

Wnioski

W tym poście pokazaliśmy, że w przypadku wnioskowania z dużymi modelami NLP i CV PyTorch instancje EC2 G5 są lepszym wyborem w porównaniu z instancjami G4dn. Chociaż koszt godzinowy na żądanie wystąpień G5 jest wyższy niż wystąpień G4dn, jego wyższa wydajność może osiągnąć 2–5 razy większą przepustowość przy dowolnej precyzji dla modeli NLP i CV, co sprawia, że ​​koszt na milion wniosków jest 1.5–3.5 razy korzystniejszy niż Instancje G4dn. Nawet w przypadku aplikacji związanych z latencją G5 jest 2.5–5 razy lepszy niż G4dn dla modeli NLP i CV.

Podsumowując, instancje AWS G5 są doskonałym wyborem dla potrzeb wnioskowania zarówno z perspektywy wydajności, jak i kosztu wnioskowania. Uniwersalność frameworka CUDA oraz skala i głębokość puli instancji G5 w AWS zapewnia unikalną możliwość przeprowadzania wnioskowania na dużą skalę.


O autorach

Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Ankur Śrivastava jest starszym architektem rozwiązań w zespole ML Frameworks. Koncentruje się na pomaganiu klientom w samodzielnym, rozproszonym szkoleniu i wnioskowaniu na dużą skalę na temat AWS. Jego doświadczenie obejmuje przemysłową konserwację predykcyjną, cyfrowe bliźniaki, probabilistyczną optymalizację projektu. Ukończył studia doktoranckie na wydziale inżynierii mechanicznej na Rice University oraz badania podoktoranckie na Massachusetts Institute of Technology.

Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Sundara Ranganathana jest szefem Business Development, ML Frameworks w zespole Amazon EC2. Koncentruje się na dużych obciążeniach ML w usługach AWS, takich jak Amazon EKS, Amazon ECS, Elastic Fabric Adapter, AWS Batch i Amazon SageMaker. Jego doświadczenie obejmuje kierownicze role w zarządzaniu produktami i rozwoju produktów w NetApp, Micron Technology, Qualcomm i Mentor Graphics.

Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Mahadewan Balasubramaniam jest głównym architektem rozwiązań dla autonomicznych systemów obliczeniowych z prawie 20-letnim doświadczeniem w dziedzinie głębokiego uczenia opartego na fizyce, budowania i wdrażania cyfrowych bliźniaków w systemach przemysłowych na dużą skalę. Mahadevan uzyskał doktorat z inżynierii mechanicznej w Massachusetts Institute of Technology i ma na swoim koncie ponad 25 patentów i publikacji.

Osiągnij czterokrotnie większą przepustowość wnioskowania ML przy trzykrotnie niższym koszcie wnioskowania dzięki instancjom Amazon EC2 G5 dla modeli NLP i CV PyTorch PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Amra Ragaba jest głównym architektem rozwiązań dla akcelerowanych platform EC2 dla AWS, którego celem jest pomaganie klientom w uruchamianiu obciążeń obliczeniowych na dużą skalę. W wolnym czasie lubi podróżować i znajdować nowe sposoby na włączenie technologii do codziennego życia.

Znak czasu:

Więcej z Uczenie maszynowe AWS