Uczenie maszynowe (ML) okazało się jednym z najskuteczniejszych i najbardziej rozpowszechnionych zastosowań technologii, które ma wpływ na wiele branż i każdego dnia wpływa na miliardy użytkowników. W związku z szybkim przyjęciem ML w każdej branży firmy stoją przed wyzwaniami w zakresie obsługi prognoz o niskich opóźnieniach i wysokiej dostępności przy maksymalizacji wykorzystania zasobów i redukcji powiązanych kosztów. Ponieważ każda struktura ML ma własne zależności, a kroki wdrażania dla każdej struktury są różne, wdrażanie modeli zbudowanych w różnych strukturach w środowisku produkcyjnym i zarządzanie każdym z punktów końcowych staje się coraz bardziej złożone.
Amazon Sage Maker Wielokontenerowe punkty końcowe (MCE) umożliwiają nam grupowanie modeli na różnych platformach i wdrażanie ich na tym samym hoście, tworząc jeden punkt końcowy. Możesz udostępnić kontenery dla różnych struktur, których używasz do budowania modeli, a SageMaker pobiera wszystkie te kontenery i umieszcza je za jednym punktem końcowym. Na przykład możesz mieć modele PyTorch i TensorFlow załadowane na dwóch dedykowanych punktach końcowych obsługujących te same lub zupełnie różne przypadki użycia, a oba te modele mają przerywany ruch przychodzący, który nie wykorzystuje zasobów do swoich limitów. W takim scenariuszu można połączyć je za pomocą kontenerów w jeden punkt końcowy za pomocą MCE, poprawiając wykorzystanie zasobów przy jednoczesnym obniżeniu kosztów ponoszonych w związku z posiadaniem obu modeli obsługujących z różnych punktów końcowych.
Wielokontenerowe punkty końcowe zapewniają skalowalne i ekonomiczne rozwiązanie do wdrażania do 15 modeli zbudowanych na różnych platformach ML, serwerach modelowych i algorytmach obsługujących ten sam lub inny przypadek użycia, co oznacza, że możesz mieć modele zbudowane na różnych platformach ML lub pośrednikach kroki we wszystkich tych kontenerach i modelach. Dostęp do wszystkich tych modeli można uzyskać indywidualnie poprzez bezpośrednie wywołanie lub połączone w potok za pomocą wywołania szeregowego, gdzie dane wyjściowe jednego modelu są danymi wejściowymi dla następnego.
W tym poście omówimy, jak przeprowadzić efektywne kosztowo wnioskowanie ML za pomocą modeli wielostrukturalnych w programie SageMaker.
Wzorce wywołań MCE
Bezpośrednie wywoływanie programu SageMaker MCE jest przydatne w przypadkach, gdy kijowałeś niezwiązane modele z punktem końcowym MCE lub przeprowadzasz test A/B między modelami za punktem końcowym MCE, aby ocenić ich wydajność. Możesz wywołać konkretny kontener bezpośrednio w wywołaniu interfejsu API i uzyskać prognozę z tego modelu.
Dzięki wywołaniu szeregowemu można połączyć ze sobą 2–15 kontenerów, a dane wyjściowe jednego stają się danymi wejściowymi następnego kontenera w kolejności. Jest to idealny przypadek użycia, jeśli na przykład masz potok przewidywania wieloetapowego, w którym model uczenia się Scikit jest używany do przewidywania pośredniego, a wynik jest przekazywany do modelu TensorFlow w celu ostatecznego wnioskowania. Zamiast wdrażać je jako różne punkty końcowe i inną aplikację lub zadanie, które je aranżuje i wykonuje wiele wywołań API, można je wdrożyć jako MCE SageMaker, abstrahując logikę i konfigurując je do wywoływania szeregowego, gdzie SageMaker zarządza transferem danych między jednym kontenerem do innego automatycznie i emituje dane wyjściowe końcowego kontenera do klienta wysyłającego żądanie API.
Wywołanie szeregowe SageMaker MCE zasadniczo różni się od szeregowego potoku wnioskowania SageMaker (więcej szczegółów w poniższych sekcjach). Szeregowy potok wnioskowania jest przeznaczony bardziej do organizowania złożonych przepływów pracy ML, takich jak wstępne przetwarzanie danych, budowanie zestawu modeli, wdrażanie kontroli warunkowych w celu określenia, który model należy wywołać lub przetwarzanie końcowe prognozy, obejmujące logikę biznesową przed wysłaniem prognozy do dalszych aplikacji . Natomiast wywołanie szeregowe MCE jest przeznaczone do łączenia 2–14 modeli w potok w celu wnioskowania, przy czym każdy model przyjmuje jako dane wejściowe prognozę poprzedniego modelu.
Wszystkie kontenery w MCE są zawsze w usłudze i pamięci, więc nie ma zimnego startu podczas wywoływania punktu końcowego. Moduły MCE poprawiają również wykorzystanie punktów końcowych i obniżają koszty, ponieważ modele są wdrażane za jednym punktem końcowym i współużytkują bazowe wystąpienie obliczeniowe, a nie każdy model zajmujący poszczególne zasoby obliczeniowe.
Przyjrzyjmy się kilku przypadkom użycia i zobaczmy, jak można wykorzystać MCE SageMaker do optymalizacji wnioskowania ML.
Przypadki użycia modułów MCE SageMaker
Załóżmy, że masz dwa modele klasyfikacji nastrojów, jeden dla języka angielskiego, a drugi dla języka niemieckiego, które obsługują różne regiony geograficzne z ruchem napływającym o różnych porach dnia. Zamiast dwóch punktów końcowych działających 24 godziny na dobę, 7 dni w tygodniu, możesz wdrożyć oba w jednym punkcie końcowym za pomocą MCE i uzyskiwać do nich dostęp za pomocą bezpośredniego wywołania, optymalizując w ten sposób wykorzystanie zasobów i koszty. Zobacz następujący kod:
W tym przykładzie mamy dwa modele (englishModel
i germanModel
) i definiujemy kontenery w SageMaker create_model
skonstruować i zdefiniować InferenceExecutionConfig
jako „Bezpośredni”. Teraz możemy wywołać punkt końcowy do wnioskowania i zdefiniować TargetContainerHostname
albo jako englishModel
or germanModel
w zależności od klienta wykonującego wywołanie API:
Możesz również użyć bezpośredniego wywołania w MCE, aby uruchomić testy A/B w celu porównania wydajności między modelami.
Poniższy diagram ilustruje naszą architekturę.
Podobnie w innych przypadkach użycia ML, gdy wyszkolony model jest używany do przetwarzania żądania, model odbiera dane w formacie, który musi być wstępnie przetworzony (na przykład wyróżniony), zanim będzie można go przekazać do algorytmu w celu wnioskowania. Gdy algorytmy ML są połączone w łańcuch, dane wyjściowe jednego modelu służą jako dane wejściowe dla następnego przed osiągnięciem końcowego wyniku. W takim przypadku można zbudować potok szeregowy SageMaker MCE, w którym kontenery komunikują się ze sobą w kolejności określonej w create_model
konstruuj zamiast wdrażać każdy z modeli w różnych punktach końcowych i pisać niezależną logikę, aby ułatwić przepływ danych między wszystkimi tymi modelami i wywołaniami interfejsu API. Poniższy diagram ilustruje tę architekturę.
W tym przypadku użycia używamy następującego kodu:
W tym przykładzie mamy dwa pojemniki do przetwarzania (Processing-1
i Processing-2
) do przetwarzania cech i przekształceń danych oraz dwa kontenery wnioskowania (Inference-1
i Inference-2
), aby uruchomić prognozy modelu ML na wstępnie przetworzonych danych. The PipelineModel
wystąpienie umożliwia zdefiniowanie potoku wnioskowania składającego się z liniowej sekwencji czterech kontenerów, które przetwarzają żądania dotyczące wnioskowania na danych. Kontenery znajdują się w tym samym wystąpieniu, co umożliwia wnioskowanie z małym opóźnieniem.
Skaluj wielomodelowe punkty końcowe dla dużej liczby modeli
Korzyści z wielomodelowych punktów końcowych SageMaker rosną w zależności od skali konsolidacji modeli. Możesz zauważyć oszczędności kosztów, gdy hostujesz dwa modele z jednym punktem końcowym, a w przypadku użycia z setkami lub tysiącami modeli oszczędności są znacznie większe.
Skalowanie punktów końcowych MCE jest również proste za pomocą SageMakerVariantInvocationsPerInstance
wstępnie zdefiniowana metryka, która podaje średnią liczbę razy na minutę, przez które każde wystąpienie punktu końcowego modelu jest wywoływane w celu zdefiniowania TargetScaling
polityka. SageMaker dynamicznie dostosowuje liczbę instancji udostępnianych dla modelu w odpowiedzi na zmiany w obciążeniu. Gdy obciążenie wzrasta, autoskalowanie powoduje przełączenie większej liczby wystąpień w tryb online i ładowanie z modelami docelowymi i kontenerami, aby na bieżąco obsługiwać żądania. Gdy obciążenie spada, skalowanie automatyczne usuwa niepotrzebne wystąpienia i odciąża kontenery modelu, dzięki czemu kontenery nie zużywają zasobów i nie płacisz za wystąpienia, których nie używasz. Czas na ukończenie pierwszego żądania przeciwko danemu modelowi ma dodatkowe opóźnienie (tzw. zimny start) na pobranie modelu z Usługa Amazon Simple Storage (Amazon S3) i załaduj go do pamięci. Kolejne wywołania kończą się bez dodatkowych kosztów, ponieważ model jest już załadowany. Zobacz następujący kod:
Zgodnie z poprzednią przykładową konfiguracją zasad używamy SageMakerVariantInvocationsPerInstance
wstępnie zdefiniowana metryka, aby dostosować liczbę instancji wariantów, tak aby każda instancja miała InvocationsPerInstance
metryka 70.
Możemy również skalować MCE SageMaker w oparciu o nasze własne niestandardowe metryki, takie jak CPUUtilization
, MemoryUtilization
, GPUUtilization
, GPUMemoryUtilization
lub DiskUtilization
, aby skalować w górę lub w dół liczbę instancji na podstawie wykorzystania określonego zasobu. Aby uzyskać więcej informacji, zobacz Automatyczne skalowanie modeli Amazon SageMaker.
Zaleca się, aby model w każdym kontenerze wykazywał podobne wymagania dotyczące mocy obliczeniowej i opóźnień dla każdego żądania wnioskowania, ponieważ jeśli ruch do MCE zmieni się z modelu wysokiego wykorzystania procesora na model niskiego wykorzystania procesora, ale ogólna liczba wywołań pozostaje taka sama, punkt końcowy nie skaluje się w poziomie i może nie być wystarczającej liczby wystąpień do obsługi wszystkich żądań do modelu wysokiego wykorzystania procesora.
Bezpieczne MCE
W przypadku MCE z bezpośrednim wywoływaniem wiele kontenerów jest hostowanych w jednej instancji dzięki współdzieleniu pamięci i woluminu pamięci masowej. Ważne jest, aby zabezpieczyć kontenery, utrzymywać prawidłowe mapowanie żądań do kontenerów docelowych i zapewnić użytkownikom prawidłowy dostęp do kontenerów docelowych. Możesz ograniczyć invoke_endpoint
dostęp do ograniczonego zestawu kontenerów wewnątrz MCE za pomocą sagemaker:TargetContainerHostname
AWS Zarządzanie tożsamością i dostępem (IAM) klucz warunku. SageMaker używa Role IAM aby zapewnić zasady IAM oparte na tożsamości używane do określania dozwolonych lub odrzucanych akcji i zasobów oraz warunków, na których akcje są dozwolone lub odrzucane. Poniższe zasady pokazują, jak ograniczyć wywołania do określonych kontenerów w punkcie końcowym:
Monitoruj wielomodelowe punkty końcowe za pomocą metryk Amazon CloudWatch
Aby dokonać kompromisu w zakresie ceny i wydajności, warto przetestować wielomodelowe punkty końcowe z modelami i reprezentatywnym ruchem z własnej aplikacji. SageMaker zapewnia dodatkowe metryki w Amazon Cloud Watch dla wielomodelowych punktów końcowych, dzięki czemu można określić użycie punktu końcowego i współczynnik trafień w pamięci podręcznej oraz zoptymalizować punkt końcowy. Metryki są następujące:
- ModelŁadowanieCzas oczekiwania – Interwał czasu oczekiwania żądania wywołania na pobranie lub załadowanie modelu docelowego w celu przeprowadzenia wnioskowania.
- Czas Rozładunku Modelu – Interwał czasu potrzebny na rozładowanie modelu przez kontener
UnloadModel
Wywołanie API. - ModelCzas Pobierania – Interwał czasu potrzebny na pobranie modelu z Amazon S3.
- Czas ładowania modelu – Interwał czasu potrzebny na załadowanie modelu przez kontener
LoadModel
Wywołanie API. - ModelCacheHit - Liczba
InvokeEndpoint
żądania wysyłane do punktu końcowego, w którym model został już załadowany. BiorącAverage
statystyka pokazuje stosunek żądań, w których model został już załadowany. - Liczba załadowanych modeli – Liczba modeli załadowanych do kontenerów w punkcie końcowym. Ta metryka jest emitowana na instancję. The
Average
statystyka z okresem 1 minuty pokazuje średnią liczbę modeli załadowanych na instancję, aSum
statystyka informuje o całkowitej liczbie modeli załadowanych we wszystkich instancjach w punkcie końcowym. Modele, które śledzi ta metryka, niekoniecznie są unikatowe, ponieważ w punkcie końcowym można załadować model do wielu kontenerów.
Istnieje również kilka innych metryk używanych przez każdy kontener uruchomiony w instancji, takich jak Invocations
wskazując liczbę InvokeEndpoint
żądania wysyłane do kontenera wewnątrz punktu końcowego, ContainerLatency
podając czas, jaki zajęło punktowi końcowemu, zanim kontener docelowy lub wszystkie kontenery w wywołaniu seryjnym zareagowały, jak widać z programu SageMaker, oraz CPUUtilization
i MemoryUtilizaton
wskazując jednostki procesora i procent pamięci.
Wnioski
W poście omówiliśmy, w jaki sposób wielokontenerowe punkty końcowe SageMaker mogą być pomocne w optymalizacji kosztów i wykorzystania zasobów. Przykłady wykorzystania MCE obejmują między innymi:
- Hosting modeli w różnych platformach (takich jak TensorFlow, PyTorch i Scikit-learn), które nie mają wystarczającego ruchu, aby nasycić pełną pojemność instancji
- Hosting modeli z tej samej platformy z różnymi algorytmami ML (takimi jak rekomendacje, prognozowanie lub klasyfikacja) i funkcjami obsługi
- Porównanie podobnych architektur działających na różnych wersjach frameworka (takich jak TensorFlow 1.x vs. TensorFlow 2.x) dla scenariuszy takich jak testy A/B
Moduły MCE SageMaker obsługują wdrażanie do 15 kontenerów na punktach końcowych w czasie rzeczywistym i wywoływanie ich niezależnie w celu uzyskania niewielkich opóźnień i oszczędności kosztów. Modele mogą być całkowicie heterogeniczne, z własnym niezależnym stosem obsługi. Możesz wywoływać te kontenery sekwencyjnie lub niezależnie dla każdego żądania. Bezpieczne hostowanie wielu modeli z różnych platform w jednym wystąpieniu może zaoszczędzić do 90% kosztów w porównaniu z hostowaniem modeli w dedykowanych punktach końcowych z jednym wystąpieniem.
O autorach
Dawal Patel jest głównym architektem uczenia maszynowego w AWS. Pracował z organizacjami od dużych przedsiębiorstw po średniej wielkości start-upy nad problemami związanymi z przetwarzaniem rozproszonym i sztuczną inteligencją. Koncentruje się na głębokim uczeniu, w tym w domenach NLP i wizji komputerowej. Pomaga klientom uzyskać wnioskowanie o wysokiej wydajności modelu w Amazon SageMaker.
Vikrama Elango jest starszym architektem rozwiązań AI/ML w Amazon Web Services z siedzibą w Wirginii w USA. Vikram pomaga globalnym klientom z branży finansowej i ubezpieczeniowej, zapewniając przywództwo projektowe i myślowe w tworzeniu i wdrażaniu aplikacji uczenia maszynowego na dużą skalę. Obecnie koncentruje się na przetwarzaniu języka naturalnego, odpowiedzialnej sztucznej inteligencji, optymalizacji wnioskowania i skalowaniu ML w całym przedsiębiorstwie. W wolnym czasie lubi podróżować, wędrować, gotować i biwakować z rodziną.
Saurabha Trikande jest starszym menedżerem produktu w firmie Amazon SageMaker Inference. Pasjonuje go praca z klientami i motywuje go cel, jakim jest demokratyzacja uczenia maszynowego. Koncentruje się na podstawowych wyzwaniach związanych z wdrażaniem złożonych aplikacji ML, wielodostępnych modeli ML, optymalizacji kosztów oraz zwiększaniem dostępności wdrażania modeli uczenia głębokiego. W wolnym czasie Saurabh lubi wędrować, poznawać innowacyjne technologie, śledzić TechCrunch i spędzać czas z rodziną.
- Zaawansowane (300)
- AI
- ai sztuka
- generator sztuki ai
- masz robota
- Amazon Sage Maker
- sztuczna inteligencja
- certyfikacja sztucznej inteligencji
- sztuczna inteligencja w bankowości
- robot sztucznej inteligencji
- roboty sztucznej inteligencji
- oprogramowanie sztucznej inteligencji
- Uczenie maszynowe AWS
- blockchain
- konferencja blockchain ai
- pomysłowość
- sztuczna inteligencja konwersacyjna
- konferencja kryptograficzna
- Dall's
- głęboka nauka
- google to
- uczenie maszynowe
- plato
- Platon Ai
- Analiza danych Platona
- Gra Platona
- PlatoDane
- platogaming
- skala ai
- składnia
- zefirnet