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:
- Otwórz
deployment/app.py
i zmień nazwę_wiaderka podSageMakerPipelineSourceCodeStack
,bucket_name
musi być globalnie unikalny (na przykład dodaj swoje imię i nazwisko). - In
deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py
, zmienićdefault_bucket
dlaget_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.py
i uruchom deploy.sh
:
deploy.sh
wykonuje następujące czynności:
- Tworzy wirtualne środowisko w Pythonie.
- Źródła skryptu aktywacji środowiska wirtualnego.
- Instaluje AWS CDK i wymagania określone w
setup.py
. - Bootstrapy środowisko.
- 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. - Działa
cdk deploy —require-approval never
. - 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:
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.
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:
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:
Po uruchomieniu zdarzenia testowego otrzymasz odpowiedź podobną do pokazanej na poniższym zrzucie ekranu.
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!
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
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.
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.
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 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.
- AI
- ai sztuka
- generator sztuki ai
- masz robota
- Uczenie maszynowe Amazon
- Amazon Sage Maker
- Autopilot Amazon SageMaker
- 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
- produkcja
- plato
- Platon Ai
- Analiza danych Platona
- Gra Platona
- PlatoDane
- platogaming
- skala ai
- Zrównoważony rozwój
- składnia
- zefirnet