Wdróż rozwiązanie do przechwytywania danych w oparciu o uczenie maszynowe w AWS Lambda PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wdróż rozwiązanie do przechwytywania danych oparte na uczeniu maszynowym w AWS Lambda

Monitorowanie prognoz uczenia maszynowego (ML) może pomóc poprawić jakość wdrożonych modeli. Przechwytywanie danych z wniosków przeprowadzonych w środowisku produkcyjnym umożliwia monitorowanie wdrożonych modeli i wykrywanie odchyleń w jakości modeli. Wczesne i proaktywne wykrywanie tych odchyleń umożliwia podejmowanie działań naprawczych, takich jak ponowne szkolenie modeli, audytowanie systemów nadrzędnych lub rozwiązywanie problemów z jakością.

AWS Lambda to bezserwerowa usługa obliczeniowa, która może zapewniać wnioskowanie ML w czasie rzeczywistym na dużą skalę. W tym poście przedstawiamy przykładową funkcję przechwytywania danych, którą można wdrożyć w obciążeniu wnioskowania Lambda ML.

W grudniu 2020 r. Lambda wprowadziła obsługę obrazów kontenerów jako formatu opakowania. Ta funkcja zwiększyła limit rozmiaru pakietu wdrożeniowego z 500 MB do 10 GB. Przed wprowadzeniem tej funkcji ograniczenie rozmiaru pakietu utrudniało wdrażanie struktur ML, takich jak TensorFlow lub PyTorch, do funkcji Lambda. Po premierze zwiększony limit rozmiaru pakietu sprawił, że ML stała się opłacalnym i atrakcyjnym obciążeniem do wdrożenia w Lambdzie. W 2021 roku wnioskowanie ML było jednym z najszybciej rozwijających się typów obciążeń w usłudze Lambda.

Amazon Sage Maker, w pełni zarządzana usługa ML firmy Amazon, zawiera własną funkcję monitorowania modelu. Jednak przykładowy projekt w tym poście pokazuje, jak wykonać przechwytywanie danych do użycia w monitorowaniu modelu dla klientów, którzy używają Lambda do wnioskowania ML. Projekt wykorzystuje rozszerzenia Lambda do przechwytywania danych wnioskowania w celu zminimalizowania wpływu na wydajność i opóźnienie funkcji wnioskowania. Korzystanie z rozszerzeń Lambda minimalizuje również wpływ na twórców funkcji. Dzięki integracji poprzez rozszerzenie, funkcja monitorowania może być stosowana do wielu funkcji i obsługiwana przez scentralizowany zespół.

Przegląd rozwiązania

Ten projekt zawiera kod źródłowy i pliki pomocnicze dla aplikacji bezserwerowej, która zapewnia wnioskowanie w czasie rzeczywistym przy użyciu wstępnie wytrenowanego modelu odpowiedzi na pytania opartego na distilbert. Projekt wykorzystuje model pytań i odpowiedzi Hugging Face przetwarzania języka naturalnego (NLP) z PyTorch do wykonywania zadań wnioskowania w języku naturalnym. Projekt zawiera również rozwiązanie do wykonywania wnioskowania przechwytywania danych dla predykcji modelu. Zapisujący funkcję Lambda może dokładnie określić, które dane z danych wejściowych żądania wnioskowania i wyniku predykcji należy wysłać do rozszerzenia. W tym rozwiązaniu wysyłamy dane wejściowe i odpowiedź z modelu do rozszerzenia. Rozszerzenie następnie okresowo wysyła dane do Usługa Amazon Simple Storage (Amazon S3) łyżka. Rozszerzenie przechwytywania danych budujemy jako obraz kontenera za pomocą makefile. Następnie budujemy funkcję wnioskowania Lambda jako obraz kontenera i dodajemy obraz kontenera rozszerzenia jako warstwę obrazu kontenera. Poniższy diagram przedstawia przegląd architektury.

Rozszerzenia Lambda są sposobem na rozszerzenie funkcji Lambda. W tym projekcie używamy zewnętrznego rozszerzenia Lambda do rejestrowania żądania wnioskowania i przewidywania z wnioskowania. Rozszerzenie zewnętrzne działa jako osobny proces w środowisku uruchomieniowym Lambda, zmniejszając wpływ na funkcję wnioskowania. Jednak funkcja współdzieli zasoby, takie jak procesor, pamięć i pamięć masowa z funkcją Lambda. Zalecamy przydzielenie wystarczającej ilości pamięci do funkcji Lambda, aby zapewnić optymalną dostępność zasobów. (W naszych testach przydzieliliśmy 5 GB pamięci do funkcji wnioskowania Lambda i zapewniliśmy optymalną dostępność zasobów i opóźnienie wnioskowania). Po zakończeniu wnioskowania usługa Lambda natychmiast zwraca odpowiedź i nie czeka, aż rozszerzenie zakończy rejestrowanie żądania i odpowiedzi w wiadrze S3. W przypadku tego wzorca rozszerzenie monitorowania nie wpływa na opóźnienie wnioskowania. Aby dowiedzieć się więcej o rozszerzeniach Lambda zobacz te serie filmów.

Zawartość projektu

Ten projekt używa AWS Serverless Model aplikacji (AWS SAM) interfejs wiersza poleceń (CLI). To narzędzie wiersza polecenia umożliwia programistom inicjowanie i konfigurowanie aplikacji; pakować, budować i testować lokalnie; i wdrażaj w chmurze AWS.

Możesz pobrać kod źródłowy tego projektu z repozytorium GitHub.

Ten projekt zawiera następujące pliki i foldery:

  • aplikacja/aplikacja.py – Kod funkcji Lambda aplikacji, w tym kod wnioskowania ML.
  • aplikacja/plik Dockera – Plik Dockerfile do budowania obrazu kontenera, który pakuje funkcję wnioskowania, model pobrany z Hugging Face oraz rozszerzenie Lambda zbudowane jako warstwa. W przeciwieństwie do funkcji .zip, warstwy nie mogą być dołączane do funkcji Lambda zapakowanych w kontenery podczas tworzenia funkcji. Zamiast tego budujemy warstwę i kopiujemy jej zawartość do obrazu kontenera.
  • Rozszerzenia – Pliki rozszerzenia monitora modelu. To rozszerzenie Lambda służy do rejestrowania danych wejściowych funkcji wnioskowania i odpowiedniej prognozy do wiadra S3.
  • aplikacja/model – Model pobrany z Hugging Face.
  • aplikacja/wymagania.txt – Zależności Pythona do zainstalowania w kontenerze.
  • wydarzenia – Zdarzenia wywołania, których można użyć do przetestowania funkcji.
  • szablon.yaml – Plik deskryptora definiujący zasoby AWS aplikacji.

Aplikacja korzysta z kilku zasobów AWS, w tym funkcji Lambda i Brama Amazon API API. Zasoby te są zdefiniowane w template.yaml plik w tym projekcie. Możesz zaktualizować szablon, aby dodać zasoby AWS za pomocą tego samego procesu wdrażania, który aktualizuje kod aplikacji.

Wymagania wstępne

W tej instrukcji należy spełnić następujące wymagania wstępne:

Wdróż przykładową aplikację

Aby zbudować aplikację po raz pierwszy, wykonaj następujące czynności:

  • Uruchom następujący kod w swojej powłoce. (To również zbuduje rozszerzenie):
  • Utwórz obraz platformy Docker aplikacji monitora modelu. Zawartość kompilacji znajduje się w .aws-sam katalog
docker build -t serverless-ml-model-monitor:latest .

docker tag serverless-ml-model-monitor:latest .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Zaloguj się do Amazon ECR:
aws ecr get-login-password --region us-east-1 docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com

  • Utwórz repozytorium w Amazon ECR:

aws ecr create-repositoryrepository-name serverless-ml-model-monitor--image-scanning-configuration scanOnPush=true--region us-east-1

  • Wypchnij obraz kontenera do Amazon ECR:
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Odkomentuj wiersz nr 1 w aplikacja/plik Dockera i edytuj go, aby wskazywał właściwy obraz repozytorium ECR, a następnie odkomentuj wiersze #6 i #7 w aplikacja/plik Docker:
WORKDIR /opt
COPY --from=layer /opt/ .

  • Ponownie skompiluj aplikację:

Budujemy ponownie, ponieważ Lambda nie obsługuje warstw Lambda bezpośrednio dla typu pakowania obrazu kontenera. Musimy najpierw zbudować komponent monitorowania modelu jako obraz kontenera, przesłać go do Amazon ECR, a następnie użyć tego obrazu w aplikacji monitorującej model jako warstwę kontenera.

  • Na koniec wdróż funkcję Lambda, bramę API i rozszerzenie:
sam deploy --guided

To polecenie pakuje i wdraża Twoją aplikację w AWS z serią monitów:

  • Nazwa stosu : nazwa wdrożonego Tworzenie chmury AWS stos. Powinno to być unikalne dla Twojego konta i regionu, a dobrym punktem wyjścia byłoby coś pasującego do nazwy Twojego projektu.
  • Region AWS : Region AWS, w którym wdrażasz swoją aplikację.
  • Potwierdź zmiany przed wdrożeniem : Jeśli ustawione na yes, wszystkie zbiory zmian są wyświetlane przed uruchomieniem w celu ręcznego sprawdzenia. Jeśli ustawiono na nie, interfejs AWS SAM CLI automatycznie wdraża zmiany aplikacji.
  • Zezwalaj na tworzenie roli AWS SAM CLI IAM : Wiele szablonów AWS SAM, w tym ten przykład, tworzy AWS Zarządzanie tożsamością i dostępem (IAM) role wymagane dla funkcji Lambda zawartych w celu uzyskania dostępu do usług AWS. Domyślnie są one ograniczone do minimalnych wymaganych uprawnień. Aby wdrożyć stos CloudFormation, który tworzy lub modyfikuje role uprawnień, należy: CAPABILITY_IAM wartość dla capabilities musi być zapewnione. Jeśli w tym monicie nie podano uprawnień, aby wdrożyć ten przykład, musisz jawnie przekazać --capabilities CAPABILITY_IAM do sam deploy dowództwo.
  • Zapisz argumenty w samconfig.toml : Jeśli ustawione na yes, Twoje wybory są zapisywane w pliku konfiguracyjnym wewnątrz projektu, dzięki czemu w przyszłości możesz po prostu uruchomić sam deploy bez parametrów, aby wdrożyć zmiany w aplikacji.

Adres URL punktu końcowego bramy interfejsu API można znaleźć w wartościach wyjściowych wyświetlanych po wdrożeniu.

Przetestuj aplikację

Aby przetestować aplikację, użyj Postman lub curl, aby wysłać żądanie do punktu końcowego API Gateway. Na przykład:

curl -X POST -H "Content-Type: text/plain" https://.execute-api.us-east-1.amazonaws.com/Prod/nlp-qa -d '{"question": "Where do you live?", "context": "My name is Clara and I live in Berkeley."}'

Powinieneś zobaczyć dane wyjściowe podobne do poniższego kodu. Model ML wywnioskował z kontekstu i zwrócił odpowiedź na nasze pytanie.

{
    "Question": "Where do you live?",
    "Answer": "Berkeley",
    "score": 0.9113729596138
}

Po kilku minutach powinieneś zobaczyć plik w wiadrze S3 nlp-qamodel-model-monitoring-modelmonitorbucket- z danymi wejściowymi i wnioskowaniem zarejestrowanym.

Sprzątać

Aby usunąć utworzoną przykładową aplikację, użyj interfejsu AWS CLI:

aws cloudformation delete-stack --stack-name 

Wnioski

W tym poście zaimplementowaliśmy funkcję monitorowania modelu jako rozszerzenie Lambda i wdrożyliśmy ją w obciążeniu wnioskowania Lambda ML. Pokazaliśmy, jak zbudować i wdrożyć to rozwiązanie na własnym koncie AWS. Na koniec pokazaliśmy, jak przeprowadzić test, aby zweryfikować funkcjonalność monitora.

Proszę podać wszelkie przemyślenia lub pytania w sekcji komentarzy. Aby uzyskać więcej zasobów do nauki bezserwerowej, odwiedź Bezserwerowy ląd.


O autorach

Wdróż rozwiązanie do przechwytywania danych w oparciu o uczenie maszynowe w AWS Lambda PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Danem Foxem jest głównym architektem rozwiązań specjalistycznych w Worldwide Specialist Organization for Serverless. Dan współpracuje z klientami, aby pomóc im wykorzystać usługi bezserwerowe do tworzenia skalowalnych, odpornych na awarie, wydajnych i ekonomicznych aplikacji. Dan jest wdzięczny, że może mieszkać i pracować w pięknym Boulder w Kolorado.

Wdróż rozwiązanie do przechwytywania danych w oparciu o uczenie maszynowe w AWS Lambda PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Newtona Jaina jest starszym menedżerem produktu odpowiedzialnym za budowanie nowych doświadczeń dla klientów w zakresie uczenia maszynowego, obliczeń o wysokiej wydajności (HPC) i przetwarzania mediów w AWS Lambda. Kieruje rozwojem nowych możliwości zwiększania wydajności, zmniejszania opóźnień, poprawy skalowalności, zwiększania niezawodności i obniżania kosztów. Pomaga również klientom AWS w definiowaniu skutecznej strategii bezserwerowej dla ich aplikacji intensywnie korzystających z mocy obliczeniowej.

Wdróż rozwiązanie do przechwytywania danych w oparciu o uczenie maszynowe w AWS Lambda PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Diksza Szarma jest architektem rozwiązań i specjalistą ds. uczenia maszynowego w AWS. Pomaga klientom przyspieszyć ich adopcję w chmurze, szczególnie w obszarach uczenia maszynowego i technologii bezserwerowych. Diksha wdraża spersonalizowane dowody koncepcji, które pokazują klientom wartość AWS w sprostaniu wyzwaniom biznesowym i informatycznym. Umożliwia klientom poznanie AWS i współpracuje z klientami, aby zbudować pożądane rozwiązanie.

Wdróż rozwiązanie do przechwytywania danych w oparciu o uczenie maszynowe w AWS Lambda PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Weda Ramana jest starszym specjalistą ds. architekta rozwiązań w zakresie uczenia maszynowego z siedzibą w stanie Maryland. Veda współpracuje z klientami, aby pomóc im w tworzeniu wydajnych, bezpiecznych i skalowalnych aplikacji uczenia maszynowego. Veda jest zainteresowana pomaganiem klientom w wykorzystaniu technologii bezserwerowych do uczenia maszynowego.

Wdróż rozwiązanie do przechwytywania danych w oparciu o uczenie maszynowe w AWS Lambda PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Josha Kahna jest światowym liderem technologii bezserwerowych i głównym architektem rozwiązań. Prowadzi globalną społeczność ekspertów bezserwerowych w AWS, którzy pomagają klientom każdej wielkości, od start-upów po największe przedsiębiorstwa na świecie, w efektywnym korzystaniu z technologii bezserwerowych AWS.

Znak czasu:

Więcej z Uczenie maszynowe AWS