Wdróż rozwiązanie MLOps, które hostuje punkty końcowe Twojego modelu w AWS Lambda PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wdróż rozwiązanie MLOps, które obsługuje punkty końcowe Twojego modelu w AWS Lambda

W 2019 roku Amazon był współzałożycielem zobowiązanie klimatyczne. Celem zobowiązania jest osiągnięcie zerowej emisji dwutlenku węgla netto do 2040 r. To 10 lat wcześniej niż określono w porozumieniu paryskim. Firmy, które się zarejestrują, zobowiązują się do regularnego raportowania, eliminacji emisji dwutlenku węgla i wiarygodnych kompensacji. W chwili pisania tego tekstu deklarację klimatyczną podpisało 377 firm, a liczba ta wciąż rośnie.

Ponieważ AWS jest zaangażowana w pomoc w osiągnięciu zerowego celu netto poprzez rozwiązania w chmurze i uczenie maszynowe (ML), opracowano już i wdrożono wiele projektów, które zmniejszają emisję dwutlenku węgla. Produkcja jest jedną z branż, które mogą odnieść znaczne korzyści z takich projektów. Poprzez zoptymalizowane zarządzanie energią maszyn w fabrykach, takich jak sprężarki lub agregaty chłodnicze, firmy mogą zmniejszyć swój ślad węglowy dzięki ML.

Efektywne przejście z fazy eksperymentów ML do fazy produkcyjnej jest wyzwaniem. Automatyzacja szkolenia i ponownego szkolenia modeli, posiadanie rejestru modeli oraz śledzenie eksperymentów i wdrażania to tylko niektóre z kluczowych wyzwań. W przypadku firm produkcyjnych istnieje jeszcze jedna warstwa złożoności, a mianowicie sposób, w jaki te wdrożone modele mogą działać na brzegu sieci.

W tym poście zajmujemy się tymi wyzwaniami, udostępniając szablon operacji uczenia maszynowego (MLOps), który zawiera zrównoważone rozwiązanie do zarządzania energią. Rozwiązanie jest niezależne od przypadków użycia, co oznacza, że ​​możesz je dostosować do swoich przypadków użycia, zmieniając model i dane. Pokazujemy, jak zintegrować modele w Rurociągi Amazon SageMaker, natywne narzędzie do orkiestracji przepływu pracy do tworzenia potoków uczenia maszynowego, które uruchamia zadanie szkoleniowe i opcjonalnie zadanie przetwarzania z symulacją Monte Carlo. Eksperymenty są śledzone Eksperymenty Amazon SageMaker. Modele są śledzone i rejestrowane w Rejestr modeli Amazon SageMaker. Na koniec dostarczamy kod do wdrożenia ostatecznego modelu w pliku AWS Lambda funkcja.

Lambda to usługa obliczeniowa, która umożliwia uruchamianie kodu bez zarządzania lub udostępniania serwerów. Automatyczne skalowanie Lambda, rozliczenia typu „płać za żądanie” i łatwość użytkowania sprawiają, że jest to częsty wybór wdrożeniowy dla zespołów zajmujących się analizą danych. Dzięki temu postowi analitycy danych mogą przekształcić swój model w opłacalną i skalowalną funkcję Lambda. Ponadto Lambda pozwala na integrację z Zielona trawa AWS IoT, które pomaga tworzyć oprogramowanie, które umożliwia urządzeniom działanie na krawędzi generowanych przez nie danych, tak jak miałoby to miejsce w przypadku zrównoważonego rozwiązania do zarządzania energią.

Omówienie rozwiązania

Wdrażana przez nas architektura (patrz poniższy rysunek) to podejście do uczenia maszynowego w pełni oparte na CI/CD. Elementy są oddzielone, aby uniknąć jednego rozwiązania monolitycznego.

Zacznijmy od lewego górnego rogu diagramu. The Przetwarzanie – budowanie obrazu komponent jest oparty na CI/CD Zatwierdzenie kodu AWS repozytorium, które pomaga budować i wypychać plik Doker kontener do Rejestr elastycznego pojemnika Amazon (Amazon ECR). Ten kontener przetwarzania służy jako pierwszy krok w naszym potoku ML, ale jest również ponownie używany do kroków przetwarzania końcowego. W naszym przypadku stosujemy symulację Monte Carlo jako przetwarzanie końcowe. The Szkolenie – Budowanie wizerunku repozytorium przedstawione w lewym dolnym rogu ma ten sam mechanizm co Przetwarzanie blok nad nim. Główna różnica polega na tym, że buduje kontener do szkolenia modeli.

Główny rurociąg, Modelarstwo (rurociąg), to kolejne repozytorium CodeCommit, które automatyzuje uruchamianie potoków SageMaker. Potok ten automatyzuje i łączy wstępne przetwarzanie danych, szkolenie modeli, śledzenie metryk modeli w SageMaker Experiments, przetwarzanie danych i katalogowanie modeli w rejestrze modeli SageMaker.

Ostatni element znajduje się w prawym dolnym rogu: Wdrożenie modelu. Jeśli postępujesz zgodnie z przykładami w Projekty Amazon SageMaker, otrzymasz szablon, który hostuje Twój model przy użyciu punktu końcowego SageMaker. Zamiast tego nasze repozytorium wdrożeniowe przechowuje model w funkcji Lambda. Pokazujemy podejście do wdrażania funkcji Lambda, która może uruchamiać prognozy w czasie rzeczywistym.

Wymagania wstępne

Aby pomyślnie wdrożyć nasze rozwiązanie, potrzebujesz:

Pobierz repozytorium GitHub

Pierwszym krokiem jest sklonowanie pliku Repozytorium GitHub na lokalną maszynę. Zawiera następującą strukturę folderów:

  • Wdrożenie – Zawiera kod odpowiedni do wdrożenia
  • mllib — Zawiera kod ML do wstępnego przetwarzania, uczenia, obsługi i symulacji
  • Testy — Zawiera testy jednostkowe i integracyjne

Kluczowym plikiem wdrożenia jest skrypt powłoki deployment/deploy.sh. Używasz tego pliku do wdrażania zasobów na swoim koncie. Zanim będziemy mogli uruchomić skrypt powłoki, wykonaj następujące kroki:

  1. Otwórz deployment/app.py i zmień nazwę_wiaderka pod SageMakerPipelineSourceCodeStack, bucket_name musi być globalnie unikalny (na przykład dodaj swoje imię i nazwisko).
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py, zmienić default_bucket dla get_pipeline do tej samej nazwy, co określona w kroku 1.

Wdróż rozwiązanie za pomocą AWS CDK

Po pierwsze, skonfiguruj swój AWS CLI z kontem i regionem, w którym chcesz przeprowadzić wdrożenie. Następnie uruchom następujące polecenia, aby przejść do katalogu wdrożenia, utworzyć środowisko wirtualne, aktywować je, zainstalować wymagane pakiety pip określone w setup.pyi uruchom deploy.sh:

cd deployment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit install
chmod u+x deploy.sh
./deploy.sh

deploy.sh wykonuje następujące czynności:

  1. Tworzy wirtualne środowisko w Pythonie.
  2. Źródła skryptu aktywacji środowiska wirtualnego.
  3. Instaluje AWS CDK i wymagania określone w setup.py.
  4. Bootstrapy środowisko.
  5. Pakuje i kopiuje niezbędne pliki, które opracowałeś, takie jak twój mllib pliki do odpowiednich folderów, w których te zasoby są potrzebne.
  6. Działa cdk deploy —require-approval never.
  7. Tworzy plik Tworzenie chmury AWS stos przez AWS CDK.

Początkowy etap wdrożenia powinien zająć mniej niż 5 minut. Powinieneś teraz mieć cztery repozytoria w CodeCommit w regionie określonym przez AWS CLI, jak przedstawiono na diagramie architektury. The AWS Code Pipeline rurociągi są uruchamiane jednocześnie. The modelbuild i modeldeploy potoki zależą od pomyślnego przebiegu kompilacji obrazu przetwarzania i szkolenia. The modeldeploy potok zależy od udanej kompilacji modelu. Wdrożenie modelu powinno zakończyć się w mniej niż 1.5 godziny.

Sklonuj repozytoria modeli w Studio

Aby dostosować potoki SageMaker utworzone za pomocą wdrożenia AWS CDK w interfejsie Studio, musisz najpierw sklonować repozytoria do Studio. Uruchom terminal systemowy w Studio i po podaniu nazwy projektu oraz identyfikatora wykonaj następujące polecenia:

git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modelbuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modeldeploy
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-processing-imagebuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-training-imagebuild

Po sklonowaniu repozytoriów możesz przesłać zatwierdzenie do repozytoriów. Te zatwierdzenia wyzwalają uruchomienie CodePipeline dla powiązanych potoków.

Możesz także dostosować rozwiązanie na swojej lokalnej maszynie i pracować na preferowanym IDE.

Poruszaj się po SageMaker Pipelines i SageMaker Experiments UI

Potok SageMaker to seria połączonych ze sobą kroków, które są zdefiniowane za pomocą Zestaw SDK Amazon SageMaker dla Pythona. Ta definicja potoku koduje potok przy użyciu skierowanego wykresu acyklicznego (DAG), który można wyeksportować jako definicję JSON. Aby dowiedzieć się więcej o strukturze takich potoków, zobacz Przegląd potoków SageMaker.

Nawigować do Zasoby SageMaker okienko i wybierz zasób potoków do wyświetlenia. Pod Imię, powinieneś zobaczyć PROJECT_NAME-PROJECT_ID. W interfejsie uruchamiania powinno być pomyślne uruchomienie, które powinno zająć nieco ponad 1 godzinę. Potok powinien wyglądać tak, jak pokazano na poniższym zrzucie ekranu.

Rurociąg Amazon SageMaker

Przebieg został automatycznie uruchomiony po wdrożeniu stosu AWS CDK. Możesz ręcznie wywołać przebieg, wybierając Stwórz wykonanie. Stamtąd możesz wybrać własne parametry potoku, takie jak typ wystąpienia i liczba wystąpień dla kroków przetwarzania i szkolenia. Ponadto możesz nadać przebiegowi nazwę i opis. Potok jest wysoce konfigurowalny za pomocą parametrów potoku, do których można odwoływać się i definiować w całej definicji potoku.

Możesz rozpocząć kolejne uruchomienie potoku z wybranymi parametrami. Następnie przejdź do Zasoby SageMaker okienko ponownie i wybierz Eksperymenty i próby. Tam powinieneś ponownie zobaczyć linię z nazwą, taką jak PROJECT_NAME-PROJECT_ID. Przejdź do eksperymentu i wybierz jedyny przebieg z losowym identyfikatorem. Stamtąd wybierz zadanie szkoleniowe SageMaker, aby poznać metryki związane z zadaniem szkoleniowym.

Celem SageMaker Experiments jest jak najprostsze tworzenie eksperymentów, wypełnianie ich próbami i przeprowadzanie analiz w ramach prób i eksperymentów. SageMaker Pipelines jest ściśle zintegrowany z SageMaker Experiments i domyślnie dla każdego uruchomienia tworzy eksperyment, wersję próbną i komponenty próbne na wypadek, gdyby nie istniały.

Zatwierdź wdrożenie Lambda w rejestrze modelu

W następnym kroku przejdź do rejestru modeli w obszarze Zasoby SageMaker. Tutaj możesz ponownie znaleźć linię o nazwie takiej jak PROJECT_NAME-PROJECT_ID. Przejdź do jedynego istniejącego modelu i zatwierdź go. Spowoduje to automatyczne wdrożenie artefaktu modelu w kontenerze w Lambda.

Po zatwierdzeniu modelu w rejestrze modeli, an Most zdarzeń Amazona uruchamiana jest reguła zdarzenia. Ta reguła uruchamia potok CodePipeline z zakończeniem *-modeldeploy. W tej sekcji omówimy, w jaki sposób to rozwiązanie używa zatwierdzonego modelu i obsługuje go w funkcji Lambda. CodePipeline pobiera istniejące repozytorium CodeCommit również kończące się na *-modeldeploy i używa tego kodu do uruchomienia w CodeBuild. Głównym wpisem dla CodeBuild jest buildspec.yml plik. Najpierw spójrzmy na to:

version: 0.2

env:
  shell: bash

phases:
  install:
    runtime_versions:
      python: 3.8
    commands:
      - python3 -m ensurepip --upgrade
      - python3 -m pip install --upgrade pip
      - python3 -m pip install --upgrade virtualenv
      - python3 -m venv .venv
      - source .venv/bin/activate
      - npm install -g aws-cdk@2.26.0
      - pip install -r requirements.txt
      - cdk bootstrap
  build:
    commands:
      - python build.py --model-package-group-name "$SOURCE_MODEL_PACKAGE_GROUP_NAME"
      - tar -xf model.tar.gz
      - cp model.joblib lambda/digital_twin
      - rm model.tar.gz
      - rm model.joblib
      - cdk deploy --require-approval never

W fazie instalacji zapewniamy aktualność bibliotek Pythona, tworzymy środowisko wirtualne, instalujemy AWS CDK v2.26.0 oraz instalujemy aws-cdk Biblioteka Pythona wraz z innymi korzystającymi z pliku wymagań. My także uruchom konto AWS. W fazie budowania uruchamiamy build.py, które omówimy dalej. Ten plik pobiera najnowszy zatwierdzony artefakt modelu SageMaker Usługa Amazon Simple Storage (Amazon S3) do lokalnej instancji CodeBuild. Ten .tar.gz plik jest rozpakowywany, a jego zawartość kopiowana do folderu, który zawiera również nasz główny kod Lambda. Funkcja Lambda jest wdrażana przy użyciu AWS CDK, a kod kończy się w kontenerze Docker z Amazon ECR. Odbywa się to automatycznie przez AWS CDK.

Połączenia build.py plik jest plikiem Pythona, który najczęściej używa rozszerzenia AWS SDK dla Pythona (Boto3) aby wyświetlić listę dostępnych pakietów modeli.

Funkcja get_approved_package zwraca identyfikator URI Amazon S3 artefaktu, który jest następnie pobierany, zgodnie z wcześniejszym opisem.

Po pomyślnym wdrożeniu modelu możesz test bezpośrednio na konsoli Lambda w Regionie, w którym chcesz wdrożyć. Nazwa funkcji powinna zawierać DigitalTwinStack-DigitalTwin*. Otwórz funkcję i przejdź do Testowanie patka. Możesz użyć następującego zdarzenia, aby uruchomić połączenie testowe:

{
  "flow": "[280, 300]",
  "pressure": "[69, 70]",
  "simulations": "10",
  "no_of_trials": "10",
  "train_error_weight": "1.0"
}

Po uruchomieniu zdarzenia testowego otrzymasz odpowiedź podobną do pokazanej na poniższym zrzucie ekranu.

Przetestuj funkcję AWS Lambda

Jeśli chcesz przeprowadzić więcej symulacji lub prób, możesz zwiększyć limit czasu Lambdy i poeksperymentować z kodem! Możesz też chcieć pobrać wygenerowane dane i zwizualizować je w Amazon QuickSight. Poniżej znajduje się przykład. Teraz twoja kolej!

Amazon QuickSight

Sprzątać

Aby uniknąć dalszych opłat, wykonaj następujące czynności:

  • W konsoli AWS CloudFormation usuń plik EnergyOptimization stos.
    Spowoduje to usunięcie całego rozwiązania.
  • Usuń stos DigitalTwinStack, który wdrożył twoją funkcję Lambda.

Wnioski

W tym poście pokazaliśmy potok MLOps oparty na CI/CD rozwiązania do zarządzania energią, w którym każdy krok jest oddzielony. Możesz śledzić swoje potoki i eksperymenty ML w interfejsie Studio. Zademonstrowaliśmy również inne podejście do wdrażania: po zatwierdzeniu modelu w rejestrze modeli funkcja Lambda obsługująca zatwierdzony model jest budowana automatycznie za pośrednictwem CodePipeline.

Jeśli chcesz zapoznać się z potokiem MLOps w AWS lub zrównoważonym rozwiązaniem do zarządzania energią, sprawdź Repozytorium GitHub i wdróż stos we własnym środowisku AWS!


O autorach

Wdróż rozwiązanie MLOps, które hostuje punkty końcowe Twojego modelu w AWS Lambda PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Laurensa van der Maasa jest Data Scientist w AWS Professional Services. Ściśle współpracuje z klientami budującymi rozwiązania uczenia maszynowego w AWS i jest pasjonatem tego, jak uczenie maszynowe zmienia świat, jaki znamy.

Wdróż rozwiązanie MLOps, które hostuje punkty końcowe Twojego modelu w AWS Lambda PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Kangkang Wang jest konsultantem AI/ML w AWS Professional Services. Ma bogate doświadczenie we wdrażaniu rozwiązań AI/ML w pionie opieki zdrowotnej i nauk przyrodniczych. Lubi też pomagać klientom korporacyjnym w budowaniu skalowalnych platform AI/ML, aby przyspieszyć podróż w chmurze ich analityków danych.

Wdróż rozwiązanie MLOps, które hostuje punkty końcowe Twojego modelu w AWS Lambda PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Selena Tabbara jest Data Scientist w AWS Professional Services. Codziennie pracuje ze swoimi klientami, aby osiągnąć ich wyniki biznesowe poprzez innowacje na platformach AWS. W wolnym czasie Selena lubi grać na pianinie, chodzić po górach i oglądać koszykówkę.

Michaela Wallnera Michaela Wallnera jest starszym konsultantem specjalizującym się w AI/ML w AWS Professional Services. Michael jest pasjonatem umożliwiania klientom na drodze do chmury, aby stali się AWSome. Jest podekscytowany produkcją i lubi pomagać w przekształcaniu przestrzeni produkcyjnej za pomocą danych.

Znak czasu:

Więcej z Uczenie maszynowe AWS