Dla analityków danych przeniesienie modeli uczenia maszynowego (ML) z weryfikacji koncepcji do produkcji często stanowi poważne wyzwanie. Jednym z głównych wyzwań może być wdrożenie dobrze działającego, wyszkolonego lokalnie modelu w chmurze w celu wnioskowania i wykorzystania w innych aplikacjach. Zarządzanie procesem może być kłopotliwe, ale dzięki odpowiedniemu narzędziu można znacznie zmniejszyć wymagany nakład pracy.
Wnioskowanie Amazon SageMaker, która została ogólnie udostępniona w kwietniu 2022 r., ułatwia wdrażanie modeli uczenia maszynowego w środowisku produkcyjnym w celu przewidywania na dużą skalę, zapewniając szeroki wybór infrastruktury uczenia maszynowego i opcji wdrażania modeli, które pomagają zaspokoić wszystkie potrzeby wnioskowania uczenia maszynowego. Możesz użyć Punkty końcowe wnioskowania bezserwerowego SageMaker dla obciążeń, które mają okresy bezczynności między zrywami ruchu i mogą tolerować zimne uruchamianie. Punkty końcowe skalują się automatycznie w oparciu o ruch i eliminują niezróżnicowaną ciężką pracę związaną z wybieraniem i zarządzaniem serwerami. Dodatkowo możesz użyć AWS Lambda bezpośrednio, aby udostępnić swoje modele i wdrożyć aplikacje ML przy użyciu preferowanej struktury open source, która może okazać się bardziej elastyczna i opłacalna.
FastAPI to nowoczesna, wydajna platforma internetowa do tworzenia interfejsów API w języku Python. Wyróżnia się, jeśli chodzi o tworzenie aplikacji bezserwerowych z mikrousługami RESTful i przypadkami użycia wymagającymi wnioskowania ML na dużą skalę w wielu branżach. Jego łatwość i wbudowane funkcje, takie jak automatyczna dokumentacja API, sprawiają, że jest to popularny wybór wśród inżynierów ML do wdrażania wysokowydajnych interfejsów API wnioskowania. Możesz definiować i organizować swoje trasy za pomocą gotowych funkcji FastAPI, aby skalować i obsługiwać rosnącą logikę biznesową w razie potrzeby, testować lokalnie i hostować ją na Lambda, a następnie udostępniać za pośrednictwem jednej bramy API, która pozwala wprowadź platformę internetową typu open source do Lambda bez ciężkiego podnoszenia lub refaktoryzacji kodu.
Ten post pokazuje, jak łatwo wdrożyć i uruchomić bezserwerowe wnioskowanie ML, udostępniając swój model ML jako punkt końcowy za pomocą FastAPI, Docker, Lambda i Brama Amazon API. Pokazujemy również, jak zautomatyzować wdrażanie za pomocą Zestaw programistyczny AWS Cloud (CDK AWS).
Omówienie rozwiązania
Poniższy diagram przedstawia architekturę rozwiązania, które wdrażamy w tym poście.
Wymagania wstępne
Musisz mieć następujące wymagania wstępne:
- Zainstalowany Python3 wraz z
virtualenv
do tworzenia i zarządzania środowiskami wirtualnymi w języku Python - aws-cdk v2 zainstalowany w twoim systemie, aby móc korzystać z AWS CDK CLI
- Docker zainstalowany i uruchomiony na komputerze lokalnym
Sprawdź, czy jest zainstalowane całe niezbędne oprogramowanie:
- Połączenia Interfejs wiersza poleceń AWS (AWS CLI) jest potrzebny. Zaloguj się na swoje konto i wybierz region, w którym chcesz wdrożyć rozwiązanie.
- Użyj następującego kodu, aby sprawdzić swoją wersję Pythona:
- Sprawdź, czy
virtualenv
jest instalowany do tworzenia i zarządzania środowiskami wirtualnymi w języku Python. Ściśle mówiąc, nie jest to trudne wymaganie, ale ułatwi ci życie i ułatwi śledzenie tego postu. Użyj następującego kodu: - Sprawdź, czy cdk jest zainstalowany. Zostanie to wykorzystane do wdrożenia naszego rozwiązania.
- Sprawdź, czy Docker jest zainstalowany. Nasze rozwiązanie sprawi, że Twój model będzie dostępny przez obraz Dockera dla Lambdy. Aby zbudować ten obraz lokalnie, potrzebujemy Dockera.
- Upewnij się, że Docker działa i działa z następującym kodem:
Jak ustrukturyzować projekt FastAPI za pomocą AWS CDK
W naszym projekcie używamy następującej struktury katalogów (pomijając część kodu AWS CDK, który jest nieistotny w kontekście tego posta):
Katalog podąża za rekomendowana struktura projektów AWS CDK dla Pythona.
Najważniejszą częścią tego repozytorium jest tzw fastapi_model_serving
informator. Zawiera kod, który zdefiniuje stos AWS CDK oraz zasoby, które będą wykorzystywane do serwowania modelu.
Połączenia fastapi_model_serving
katalog zawiera model_endpoint
podkatalog, który zawiera wszystkie niezbędne zasoby, które składają się na nasz bezserwerowy punkt końcowy, a mianowicie plik Docker do zbudowania obrazu Docker, którego będzie używać Lambda, kod funkcji Lambda, która używa FastAPI do obsługi żądań wnioskowania i kierowania ich do właściwego punktu końcowego oraz model artefakty modelu, który chcemy wdrożyć. model_endpoint
zawiera również:
Docker
– Ten podkatalog zawiera następujące elementy:Dockerfile
– Służy do zbudowania obrazu funkcji Lambda ze wszystkimi artefaktami (kod funkcji Lambda, artefakty modelu itd.) we właściwym miejscu, aby można było z nich korzystać bez problemów.serving.api.tar.gz
– To jest tarball, który zawiera wszystkie zasoby z folderu wykonawczego, które są niezbędne do zbudowania obrazu Dockera. Omówimy, jak stworzyć.tar.gz
plik w dalszej części tego posta.runtime
– Ten podkatalog zawiera następujące elementy:serving_api
– Kod funkcji Lambda i jej zależności określone w pliku requirements.txt.custom_lambda_utils
– Obejmuje to skrypt wnioskowania, który ładuje niezbędne artefakty modelu, aby model mógł zostać przekazany do programuserving_api
który następnie ujawni go jako punkt końcowy.
Ponadto mamy katalog szablonów, który zawiera szablon struktur folderów i plików, w których można zdefiniować niestandardowe kody i interfejsy API zgodnie z przykładem, który omówiliśmy wcześniej. Katalog szablonów zawiera fikcyjny kod, którego możesz użyć do stworzenia nowych funkcji Lambda:
dummy
– Zawiera kod implementujący strukturę zwykłej funkcji Lambda przy użyciu środowiska wykonawczego Pythonaapi
– Zawiera kod implementujący funkcję Lambda, która otacza punkt końcowy FastAPI wokół istniejącej bramy API
Wdróż rozwiązanie
Domyślnie kod jest wdrażany w regionie eu-west-1. Jeśli chcesz zmienić region, możesz zmienić zmienną kontekstową DEPLOYMENT_REGION w pliku cdk.json
plik.
Należy jednak pamiętać, że rozwiązanie próbuje wdrożyć funkcję Lambda na architekturze arm64 i ta funkcja może nie być dostępna we wszystkich regionach. W takim przypadku musisz zmienić parametr architektury w pliku fastapi_model_serving_stack.py
plik, a także pierwszy wiersz pliku Dockerfile w katalogu Docker, aby hostować to rozwiązanie w architekturze x86.
Aby wdrożyć rozwiązanie, wykonaj następujące czynności:
- Uruchom następujące polecenie, aby sklonować repozytorium GitHub:
git clone https://github.com/aws-samples/lambda-serverless-inference-fastapi
Ponieważ chcemy pokazać, że rozwiązanie może współpracować z artefaktami modelu szkolonymi lokalnie, zawieramy przykładowy artefakt modelu wstępnie wytrenowanego DestylowaćBERT model w hubie modelu Hugging Face dla zadania z odpowiedzią na pytanie wserving_api.tar.gz
plik. Czas pobierania może zająć około 3–5 minut. Teraz skonfigurujmy środowisko. - Pobierz wstępnie przeszkolony model, który zostanie wdrożony z centrum modelu Hugging Face do
./model_endpoint/runtime/serving_api/custom_lambda_utils/model_artifacts
informator. Tworzy również środowisko wirtualne i instaluje wszystkie potrzebne zależności. Wystarczy uruchomić to polecenie tylko raz:make prep
. Wykonanie tego polecenia może zająć około 5 minut (w zależności od przepustowości łącza internetowego), ponieważ wymaga pobrania artefaktów modelu. - Spakuj artefakty modelu do pliku
.tar.gz
archiwum, które będzie używane wewnątrz obrazu Dockera zbudowanego w stosie AWS CDK. Musisz uruchamiać ten kod za każdym razem, gdy wprowadzasz zmiany w artefaktach modelu lub samym interfejsie API, aby zawsze mieć w pakiecie najnowszą wersję udostępnianego punktu końcowego:make package_model
. Wszystkie artefakty są na swoim miejscu. Teraz możemy wdrożyć stos AWS CDK na Twoim koncie AWS. - Uruchom cdk bootstrap, jeśli po raz pierwszy wdrażasz aplikację AWS CDK w środowisku (kombinacja konta i regionu):
Ten stos zawiera zasoby potrzebne do działania zestawu narzędzi. Na przykład stos zawiera wiadro Amazon Simple Storage Service (Amazon S3), które służy do przechowywania szablonów i zasobów podczas procesu wdrażania.
Ponieważ budujemy obrazy Dockera lokalnie w tym wdrożeniu AWS CDK, musimy upewnić się, że demon Dockera działa, zanim będziemy mogli wdrożyć ten stos za pośrednictwem AWS CDK CLI.
- Aby sprawdzić, czy demon Dockera działa w twoim systemie, użyj następującego polecenia:
Jeśli nie pojawi się komunikat o błędzie, powinieneś być gotowy do wdrożenia rozwiązania.
- Wdróż rozwiązanie za pomocą następującego polecenia:
Ten krok może zająć około 5–10 minut ze względu na budowanie i przesyłanie obrazu Dockera.
Rozwiązywanie problemów
Jeśli jesteś użytkownikiem komputera Mac, możesz napotkać błąd podczas logowania Rejestr elastycznego pojemnika Amazon (Amazon ECR) z loginem Docker, np Error saving credentials ... not implemented
. Na przykład:
Zanim będzie można używać Lambdy na wierzchu kontenerów Docker w AWS CDK, może być konieczna zmiana pliku ~/docker/config.json
plik. Mówiąc dokładniej, może być konieczna zmiana parametru credsStore w ~/.docker/config.json
do pęku kluczy osx. To rozwiązuje problemy z logowaniem do Amazon ECR na komputerze Mac.
Uruchom wnioskowanie w czasie rzeczywistym
Po twoim Tworzenie chmury AWS stos został pomyślnie wdrożony, przejdź do Wyjścia tab dla swojego stosu w konsoli AWS CloudFormation i otwórz adres URL punktu końcowego. Teraz nasz model jest dostępny za pośrednictwem adresu URL punktu końcowego i jesteśmy gotowi do uruchomienia wnioskowania w czasie rzeczywistym.
Przejdź do adresu URL, aby zobaczyć, czy widzisz komunikat „Witaj świecie” i dodaj /docs
na adres, aby sprawdzić, czy strona z interaktywnym interfejsem użytkownika programu Swagger została pomyślnie wyświetlona. Może być trochę zimnego startu, więc może być konieczne kilkakrotne odczekanie lub odświeżenie.
Po zalogowaniu się na stronę docelową interfejsu FastAPI swagger UI możesz uruchomić przez root /
lub za pośrednictwem /question
.
Cena Od /
, możesz uruchomić interfejs API i otrzymać komunikat „witaj świecie”.
Cena Od /question
, możesz uruchomić interfejs API i przeprowadzić wnioskowanie ML na modelu, który wdrożyliśmy w przypadku odpowiedzi na pytanie. Na przykład używamy pytania Jaki jest teraz kolor mojego samochodu? a kontekst jest taki, że mój samochód był kiedyś niebieski, ale pomalowałem go na czerwono.
Kiedy wybierzesz Wykonać, w oparciu o podany kontekst, model odpowie na pytanie odpowiedzią, jak pokazano na poniższym zrzucie ekranu.
W treści odpowiedzi możesz zobaczyć odpowiedź z oceną ufności z modelu. Możesz także poeksperymentować z innymi przykładami lub osadzić interfejs API w istniejącej aplikacji.
Alternatywnie możesz uruchomić wnioskowanie za pomocą kodu. Oto jeden przykład napisany w Pythonie przy użyciu requests
biblioteka:
Kod generuje ciąg podobny do następującego:
Jeśli chcesz dowiedzieć się więcej o wdrażaniu generatywnej sztucznej inteligencji i dużych modeli językowych w AWS, zajrzyj tutaj:
- Wdróż bezserwerową generatywną sztuczną inteligencję w AWS Lambda z OpenLLaMa
- Wdrażaj duże modele językowe w AWS Inferentia2 przy użyciu dużych kontenerów wnioskowania modeli
Sprzątać
W katalogu głównym swojego repozytorium uruchom następujący kod, aby wyczyścić zasoby:
Wnioski
W tym poście przedstawiliśmy, w jaki sposób możesz użyć Lambdy do wdrożenia wytrenowanego modelu ML przy użyciu preferowanego frameworka aplikacji internetowych, takiego jak FastAPI. Udostępniliśmy szczegółowe repozytorium kodu, które możesz wdrożyć, i zachowujesz elastyczność przełączania się na dowolne przetwarzane artefakty przeszkolonego modelu. Wydajność może zależeć od sposobu implementacji i wdrożenia modelu.
Zapraszamy do samodzielnego wypróbowania i czekamy na Twoją opinię!
O autorach
Tingyi Li jest architektem rozwiązań korporacyjnych z AWS z siedzibą w Sztokholmie w Szwecji, wspierając klientów z krajów skandynawskich. Lubi pomagać klientom w architekturze, projektowaniu i opracowywaniu rozwiązań infrastrukturalnych zoptymalizowanych pod kątem chmury. Specjalizuje się w sztucznej inteligencji i uczeniu maszynowym i jest zainteresowana wspieraniem klientów dzięki inteligencji w ich aplikacjach AI/ML. W wolnym czasie jest także ilustratorką w niepełnym wymiarze godzin, pisze powieści i gra na pianinie.
Demir Catović jest inżynierem uczenia maszynowego z AWS z siedzibą w Zurychu w Szwajcarii. Angażuje się z klientami i pomaga im wdrażać skalowalne iw pełni funkcjonalne aplikacje ML. Pasjonuje się budowaniem i produkcją aplikacji uczenia maszynowego dla klientów i zawsze chętnie odkrywa nowe trendy i najnowocześniejsze technologie w świecie AI/ML.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoData.Network Pionowe generatywne AI. Wzmocnij się. Dostęp tutaj.
- PlatoAiStream. Inteligencja Web3. Wiedza wzmocniona. Dostęp tutaj.
- PlatonESG. Motoryzacja / pojazdy elektryczne, Węgiel Czysta technologia, Energia, Środowisko, Słoneczny, Gospodarowanie odpadami. Dostęp tutaj.
- Przesunięcia bloków. Modernizacja własności offsetu środowiskowego. Dostęp tutaj.
- Źródło: https://aws.amazon.com/blogs/machine-learning/deploy-a-serverless-ml-inference-endpoint-of-large-language-models-using-fastapi-aws-lambda-and-aws-cdk/
- :Jest
- :nie
- :Gdzie
- $W GÓRĘ
- 1
- 10
- 100
- 13
- 2022
- 7
- 9
- a
- Zdolny
- O nas
- dostępny
- Konto
- w poprzek
- Dodaj
- do tego
- adres
- AI
- AI / ML
- Wszystkie kategorie
- pozwala
- wzdłuż
- również
- zawsze
- Amazonka
- Amazon Web Services
- wśród
- an
- i
- odpowiedź
- każdy
- api
- Pszczoła
- Aplikacja
- Zastosowanie
- aplikacje
- kwiecień
- architektura
- Archiwum
- SĄ
- na około
- AS
- Aktywa
- At
- zautomatyzować
- automatycznie
- automatycznie
- dostępny
- z dala
- AWS
- Tworzenie chmury AWS
- AWS Lambda
- Backend
- przepustowość
- na podstawie
- BE
- bo
- zanim
- pomiędzy
- Niebieski
- ciało
- Bootstrap
- przynieść
- szeroki
- budować
- Budowanie
- wybudowany
- wbudowany
- biznes
- ale
- by
- CAN
- wózek
- walizka
- Etui
- wyzwanie
- wyzwania
- zmiana
- Zmiany
- ZOBACZ
- wybór
- Dodaj
- Chmura
- kod
- Kody
- zimno
- kolor
- połączenie
- byliśmy spójni, od początku
- kompletny
- pojęcie
- pewność siebie
- Skontaktuj się
- połączenie
- Konsola
- zawierać
- Pojemnik
- Pojemniki
- zawiera
- kontekst
- skorygowania
- opłacalne
- mógłby
- Stwórz
- tworzy
- Tworzenie
- Listy uwierzytelniające
- Klientów
- dostosowane
- pionierski nowatorski
- dane
- Domyślnie
- W zależności
- rozwijać
- wdrażane
- wdrażanie
- Wdrożenie
- Wnętrze
- szczegółowe
- rozwijanie
- oprogramowania
- bezpośrednio
- dyskutować
- Doker
- dokumentacja
- nie
- pobieranie
- z powodu
- podczas
- Wcześniej
- łatwość
- łatwiej
- z łatwością
- łatwo
- wysiłek
- osadzać
- uprawniającej
- zakończenia
- Punkt końcowy
- zaangażowany
- inżynier
- Inżynierowie
- zapewnić
- Enterprise
- Środowisko
- środowiska
- błąd
- przykład
- przykłady
- podniecony
- wykonać
- Przede wszystkim system został opracowany
- Wyjście
- eksperyment
- odkryj
- Twarz
- Cecha
- kilka
- filet
- Akta
- i terminów, a
- pierwszy raz
- Elastyczność
- elastyczne
- obserwuj
- następujący
- następujący sposób
- W razie zamówieenia projektu
- Framework
- od
- funkcjonować
- funkcjonalności
- Funkcje
- Bramka
- ogólnie
- generatywny
- generatywna sztuczna inteligencja
- otrzymać
- GitHub
- dany
- Go
- będzie
- Rozwój
- uchwyt
- Ciężko
- Have
- he
- słyszeć
- ciężki
- ciężkie podnoszenie
- pomoc
- pomoc
- pomaga
- jej
- tutaj
- wysoka wydajność
- gospodarz
- W jaki sposób
- How To
- Jednak
- HTML
- http
- HTTPS
- Piasta
- i
- Idle
- if
- obraz
- zdjęcia
- wdrożenia
- narzędzia
- ważny
- in
- W innych
- obejmuje
- przemysłowa
- Infrastruktura
- wewnątrz
- zainstalowany
- Inteligencja
- interaktywne
- zainteresowany
- Internet
- najnowszych
- wprowadzono
- problemy
- IT
- JEGO
- samo
- json
- Zapalony
- Wiedząc
- lądowanie
- język
- duży
- później
- nauka
- Biblioteka
- życie
- Modernizacja
- lubić
- Linia
- masa
- miejscowy
- lokalnie
- log
- zalogowaniu
- logika
- Zaloguj Się
- mac
- maszyna
- uczenie maszynowe
- zrobiony
- Główny
- robić
- WYKONUJE
- zarządzanie
- zarządzający
- Może..
- Poznaj nasz
- wiadomość
- mikroserwisy
- może
- nic
- minut
- ML
- model
- modele
- Nowoczesne technologie
- jeszcze
- większość
- przeniesienie
- wielokrotność
- musi
- my
- mianowicie
- niezbędny
- Potrzebować
- potrzebne
- wymagania
- Nowości
- już dziś
- of
- często
- on
- pewnego razu
- ONE
- tylko
- koncepcja
- open source
- działanie
- Opcje
- or
- zamówienie
- zwykły
- Inne
- ludzkiej,
- na zewnątrz
- pakowane
- strona
- parametr
- część
- minęło
- namiętny
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- okresy
- Miejsce
- plato
- Analiza danych Platona
- PlatoDane
- odgrywa
- Popularny
- Post
- Przewidywania
- Korzystny
- warunki wstępne
- prezenty
- wygląda tak
- Produkcja
- projekt
- projektowanie
- dowód
- dowód koncepcji
- Udowodnij
- pod warunkiem,
- zapewnia
- że
- Popychanie
- Python
- pytanie
- gotowy
- w czasie rzeczywistym
- Czerwony
- zmniejszyć
- region
- regiony
- składnica
- wywołań
- wymagany
- wymaganie
- wymagania
- Zasoby
- odpowiedź
- dalsze
- zachować
- prawo
- korzeń
- Trasa
- trasy
- run
- bieganie
- sagemaker
- oszczędność
- skalowalny
- Skala
- Naukowcy
- zakres
- wynik
- widzieć
- wybierając
- wybór
- Bezserwerowe
- Serwery
- usługa
- Usługi
- służąc
- zestaw
- ona
- powinien
- pokazać
- prezentacja
- pokazane
- Targi
- znaczący
- znacznie
- podobny
- Prosty
- pojedynczy
- So
- Tworzenie
- rozwiązanie
- Rozwiązania
- Rozwiązuje
- kilka
- Mówiąc
- wyspecjalizowanym
- swoiście
- określony
- stos
- stojaki
- początek
- rozpocznie
- Rynek
- Ewolucja krok po kroku
- Cel
- przechowywanie
- sklep
- przechowywania
- sznur
- Struktura
- Z powodzeniem
- taki
- Wspierający
- Szwecja
- Szwajcaria
- system
- Brać
- Zadanie
- Technologies
- szablon
- Szablony
- test
- że
- Połączenia
- ich
- Im
- następnie
- Tam.
- one
- to
- Przez
- czas
- czasy
- do
- narzędzie
- Top
- ruch drogowy
- Pociąg
- przeszkolony
- Trendy
- próbować
- ui
- UNIX
- nowomodny
- URL
- posługiwać się
- używany
- Użytkownik
- zastosowania
- za pomocą
- wersja
- przez
- Wirtualny
- czekać
- chcieć
- była
- we
- sieć
- Aplikacja internetowa
- usługi internetowe
- powitanie
- DOBRZE
- poszedł
- Co
- Co to jest
- jeśli chodzi o komunikację i motywację
- ilekroć
- czy
- który
- KIM
- będzie
- w
- bez
- Praca
- świat
- napisany
- You
- Twój
- siebie
- zefirnet
- Zurych