Rurociągi Amazon SageMaker pozwala naukowcom danych i inżynierom uczenia maszynowego (ML) zautomatyzować przepływy pracy szkoleniowej, co pomaga w tworzeniu powtarzalnego procesu orkiestracji etapów opracowywania modelu w celu szybkiego eksperymentowania i ponownego uczenia modelu. Można zautomatyzować cały przepływ pracy budowania modelu, w tym przygotowanie danych, inżynierię funkcji, uczenie modelu, dostrajanie modelu i walidację modelu, a także skatalogować go w rejestrze modeli. Potoki można skonfigurować tak, aby były uruchamiane automatycznie w regularnych odstępach czasu lub po wyzwoleniu określonych zdarzeń, albo można je uruchamiać ręcznie w razie potrzeby.
W tym poście przedstawiamy niektóre z ulepszeń w Amazon Sage Maker SDK i wprowadzają nowe funkcje Amazon SageMaker Pipelines, które ułatwiają praktykom ML tworzenie i trenowanie modeli ML.
Pipelines kontynuuje wprowadzanie innowacji, a dzięki najnowszym wydaniom możesz teraz korzystać z usługi w bardziej spersonalizowany sposób:
- 2.99.0, 2.101.1, 2.102.0, 2.104.0 – Zaktualizowana dokumentacja na
PipelineVariable
wykorzystanie dla klas bazowych estymatora, procesora, tunera, transformatora i modelu, modeli Amazon i modeli frameworka. W nowszych wersjach SDK pojawią się dodatkowe zmiany, które będą obsługiwać wszystkie podklasy estymatorów i procesorów. - 2.90.0 - Dostępność Model Krok do zadań związanych z tworzeniem i rejestracją zasobów modelu zintegrowanego.
- 2.88.2 - Dostępność Sesja Pipeline do zarządzanej interakcji z podmiotami i zasobami SageMaker.
- 2.88.2 – Kompatybilność podklas dla kroki zadania potoku przepływu pracy dzięki czemu można tworzyć abstrakcje zadań oraz konfigurować i uruchamiać przetwarzanie, trenowanie, przekształcanie i dostrajanie zadań tak, jak bez potoku.
- 2.76.0 - Dostępność FazaKrok do warunkowego zatrzymania potoku ze stanem awarii.
W tym poście przeprowadzimy Cię przez przepływ pracy przy użyciu przykładowego zestawu danych z naciskiem na budowanie i wdrażanie modelu, aby zademonstrować, jak zaimplementować nowe funkcje Pipelines. Na koniec powinieneś mieć wystarczającą ilość informacji, aby pomyślnie korzystać z tych nowszych funkcji i uprościć obciążenia ML.
Przegląd funkcji
Pipelines oferuje następujące nowe funkcje:
- Adnotacja zmiennej potoku – Niektóre parametry metody akceptują wiele typów danych wejściowych, w tym
PipelineVariables
i dodano dodatkową dokumentację, aby wyjaśnić, gdziePipelineVariables
są obsługiwane zarówno w najnowszej stabilnej wersji dokumentacji SDK SageMaker, jak i sygnaturze init funkcji. Na przykład w poniższym estymatorze TensorFlow sygnatura init pokazuje teraz, żemodel_dir
iimage_uri
wsparciePipelineVariables
, podczas gdy inne parametry nie. Aby uzyskać więcej informacji, zobacz Estymator przepływu Tensor.- Przed:
- Po:
- Sesja potokowa - Sesja Pipeline to nowa koncepcja wprowadzona w celu zapewnienia jedności w pakiecie SageMaker SDK i wprowadzająca leniwą inicjalizację zasobów potoku (wywołania uruchamiania są przechwytywane, ale nie są uruchamiane, dopóki potok nie zostanie utworzony i uruchomiony). The
PipelineSession
kontekst dziedziczySageMakerSession
i wdraża wygodne metody interakcji z innymi jednostkami i zasobami SageMaker, takimi jak zadania szkoleniowe, punkty końcowe i zestawy danych wejściowych przechowywane w Usługa Amazon Simple Storage (Amazonka S3). - Zgodność podklas z etapami zadań potoku przepływu pracy – Można teraz tworzyć abstrakcje zadań oraz konfigurować i uruchamiać przetwarzanie, trenowanie, przekształcanie i dostrajanie zadań tak samo, jak bez potoku.
- Na przykład tworzenie etapu przetwarzania za pomocą
SKLearnProcessor
wcześniej wymagane: - Jak widzimy w poprzednim kodzie,
ProcessingStep
musi wykonać w zasadzie tę samą logikę przetwarzania wstępnego, co.run
, po prostu bez inicjowania wywołania interfejsu API w celu uruchomienia zadania. Ale po włączeniu kompatybilności podklas z krokami zadań potoku przepływu pracy, deklarujemystep_args
argument, który przyjmuje logikę przetwarzania wstępnego z .run, dzięki czemu można zbudować abstrakcję zadania i skonfigurować ją tak, jakbyś jej używał bez Pipelines. Mijamy równieżpipeline_session
, który jestPipelineSession
obiekt, zamiastsagemaker_session
aby upewnić się, że wywołania uruchamiania są przechwytywane, ale nie są wywoływane, dopóki potok nie zostanie utworzony i uruchomiony. Zobacz następujący kod:
- Na przykład tworzenie etapu przetwarzania za pomocą
- Etap modelu (uproszczone podejście z etapami tworzenia i rejestracji modelu) – Pipelines oferuje dwa typy kroków do integracji z modelami SageMaker:
CreateModelStep
iRegisterModel
. Możesz teraz osiągnąć oba, używając tylkoModelStep
rodzaj. Zwróć uwagę, żePipelineSession
aby to osiągnąć. Zapewnia to podobieństwo między krokami potoku i zestawem SDK.- Przed:
-
- Po:
- Fail step (warunkowe zatrzymanie przebiegu rurociągu) -
FailStep
umożliwia zatrzymanie potoku ze stanem niepowodzenia, jeśli warunek zostanie spełniony, na przykład jeśli wynik modelu jest poniżej określonego progu.
Omówienie rozwiązania
W tym rozwiązaniu punktem wyjścia jest Studio Amazon SageMaker zintegrowane środowisko programistyczne (IDE) do szybkiego eksperymentowania. Studio oferuje środowisko do zarządzania kompleksowym środowiskiem Pipelines. Dzięki Studio możesz ominąć Konsola zarządzania AWS dla całego zarządzania przepływem pracy. Aby uzyskać więcej informacji na temat zarządzania potokami z poziomu Studio, zobacz Wyświetlanie, śledzenie i wykonywanie potoków SageMaker w SageMaker Studio.
Poniższy diagram ilustruje architekturę wysokiego poziomu przepływu pracy ML z różnymi etapami uczenia i generowania wniosków przy użyciu nowych funkcji.
Potok obejmuje następujące kroki:
- Wstępne przetwarzanie danych w celu zbudowania wymaganych funkcji i podziału danych na zestawy danych dotyczących pociągów, walidacji i testów.
- Utwórz zadanie szkoleniowe za pomocą frameworka SageMaker XGBoost.
- Oceń wytrenowany model przy użyciu testowego zestawu danych.
- Sprawdź, czy wynik AUC przekracza wstępnie zdefiniowany próg.
- Jeśli wynik AUC jest niższy niż próg, zatrzymaj działanie potoku i oznacz go jako nieudany.
- Jeśli wynik AUC jest większy niż próg, utwórz model SageMaker i zarejestruj go w rejestrze modeli SageMaker.
- Zastosuj transformację wsadową do danego zestawu danych, korzystając z modelu utworzonego w poprzednim kroku.
Wymagania wstępne
Aby śledzić ten post, potrzebujesz konta AWS z Domena studia.
Pipelines jest zintegrowane bezpośrednio z podmiotami i zasobami SageMaker, więc nie musisz wchodzić w interakcje z innymi usługami AWS. Nie musisz również zarządzać żadnymi zasobami, ponieważ jest to usługa w pełni zarządzana, co oznacza, że tworzy zasoby i zarządza nimi za Ciebie. Aby uzyskać więcej informacji na temat różnych komponentów SageMaker, które są zarówno samodzielnymi interfejsami API Pythona, jak i zintegrowanymi komponentami Studio, zobacz Strona produktu SageMaker.
Przed rozpoczęciem zainstaluj pakiet SageMaker SDK w wersji >= 2.104.0 i xlrd >=1.0.0 w notatniku Studio, korzystając z następującego fragmentu kodu:
Przepływ pracy w ML
W tym poście używasz następujących komponentów:
- Przygotowywanie danych
- Przetwarzanie SageMaker – SageMaker Processing to w pełni zarządzana usługa umożliwiająca przeprowadzanie niestandardowych transformacji danych i inżynierię funkcji dla obciążeń ML.
- Budowa modelu
- Szkolenie i ocena modeli
- Szkolenie jednym kliknięciem – Funkcja szkolenia rozproszonego SageMaker. SageMaker zapewnia rozproszone biblioteki szkoleniowe dla równoległości danych i równoległości modeli. Biblioteki są zoptymalizowane pod kątem środowiska szkoleniowego SageMaker, pomagają dostosować rozproszone zadania szkoleniowe do SageMaker oraz poprawiają szybkość i wydajność szkolenia.
- Eksperymenty SageMakera – Eksperymenty to funkcja programu SageMaker, która pozwala organizować, śledzić, porównywać i oceniać iteracje ML.
- Transformacja wsadowa SageMaker – Przekształcanie wsadowe lub ocenianie offline to usługa zarządzana w programie SageMaker, która umożliwia prognozowanie na większym zestawie danych przy użyciu modeli ML.
- Orkiestracja przepływu pracy
Potok SageMaker to seria połączonych ze sobą kroków zdefiniowanych przez definicję potoku JSON. Koduje potok za pomocą ukierunkowanego grafu acyklicznego (DAG). DAG podaje informacje o wymaganiach i relacjach między każdym krokiem potoku, a jego struktura jest określana przez zależności danych między krokami. Te zależności są tworzone, gdy właściwości danych wyjściowych kroku są przekazywane jako dane wejściowe do innego kroku.
Poniższy diagram ilustruje różne kroki w potoku SageMaker (dla przypadku użycia przewidywania rezygnacji), w których połączenia między krokami są wywnioskowane przez SageMaker na podstawie danych wejściowych i wyjściowych zdefiniowanych przez definicje kroków.
Kolejne sekcje przechodzą przez tworzenie każdego kroku potoku i uruchamianie całego potoku po jego utworzeniu.
Struktura projektu
Zacznijmy od struktury projektu:
- /sm-pipelines-end-to-end-przykład – Nazwa projektu
- /dane – Zbiory danych
- /rurociągi – Pliki kodu dla komponentów potoku
- /odejście klienta
- preprocess.py
- ocena.py
- /odejście klienta
- sagemaker-pipelines-project.ipynb – Notatnik przechodzący przez proces modelowania przy użyciu nowych funkcji Pipelines
Pobierz zbiór danych
Aby śledzić ten post, musisz pobrać i zapisać przykładowy zbiór danych pod folderem danych w katalogu domowym projektu, który zapisuje plik w System plików Amazon Elastic (Amazon EFS) w środowisku Studio.
Zbuduj komponenty rurociągu
Teraz jesteś gotowy do zbudowania komponentów potoku.
Importuj instrukcje i deklaruj parametry i stałe
Utwórz notatnik Studio o nazwie sagemaker-pipelines-project.ipynb
w katalogu domowym projektu. Wprowadź następujący blok kodu w komórce i uruchom komórkę, aby skonfigurować obiekty klienta SageMaker i S3, utwórz PipelineSession
i skonfiguruj lokalizację zasobnika S3, używając domyślnego zasobnika, który jest dostarczany z sesją programu SageMaker:
Pipelines obsługuje parametryzację, która umożliwia określenie parametrów wejściowych w czasie wykonywania bez zmiany kodu potoku. Możesz skorzystać z modułów dostępnych w ramach sagemaker.workflow.parameters
moduł, taki jak ParameterInteger
, ParameterFloat
, ParameterString
, aby określić parametry potoku różnych typów danych. Uruchom następujący kod, aby skonfigurować wiele parametrów wejściowych:
Wygeneruj wsadowy zbiór danych
Wygeneruj wsadowy zestaw danych, którego użyjesz później w kroku transformacji wsadowej:
Prześlij dane do zasobnika S3
Prześlij zbiory danych do Amazon S3:
Zdefiniuj skrypt przetwarzania i krok przetwarzania
W tym kroku przygotowujesz skrypt w języku Python do wykonywania inżynierii funkcji, jednego kodowania na gorąco i nadzorujesz podziały szkoleniowe, walidacyjne i testowe, które będą używane do budowania modelu. Uruchom następujący kod, aby skompilować skrypt przetwarzania:
Następnie uruchom następujący blok kodu, aby utworzyć wystąpienie procesora i krok Pipelines, aby uruchomić skrypt przetwarzania. Ponieważ skrypt przetwarzania jest napisany w Pandas, używasz a Procesor SKLearn. Rurociągi ProcessingStep
Funkcja przyjmuje następujące argumenty: procesor, wejściowe lokalizacje S3 dla surowych zestawów danych i wyjściowe lokalizacje S3 do zapisywania przetworzonych zestawów danych.
Zdefiniuj etap szkolenia
Skonfiguruj szkolenie modelu za pomocą estymatora SageMaker XGBoost i Pipelines TrainingStep
funkcjonować:
Zdefiniuj skrypt oceny i krok oceny modelu
Uruchom następujący blok kodu, aby ocenić model po przeszkoleniu. Ten skrypt hermetyzuje logikę, aby sprawdzić, czy wynik AUC spełnia określony próg.
Następnie uruchom następujący blok kodu, aby utworzyć wystąpienie procesora i krok Pipelines, aby uruchomić skrypt oceny. Ponieważ skrypt oceny używa pakietu XGBoost, używasz ScriptProcessor
wraz z obrazem XGBoost. Rurociągi ProcessingStep
Funkcja przyjmuje następujące argumenty: procesor, wejściowe lokalizacje S3 dla surowych zestawów danych i wyjściowe lokalizacje S3 do zapisywania przetworzonych zestawów danych.
Zdefiniuj krok tworzenia modelu
Uruchom następujący blok kodu, aby utworzyć model SageMaker przy użyciu kroku Model potoków. Ten krok wykorzystuje dane wyjściowe kroku szkolenia do spakowania modelu do wdrożenia. Zauważ, że wartość argumentu typu instancji jest przekazywana przy użyciu parametru Pipelines, który zdefiniowałeś wcześniej we wpisie.
Zdefiniuj krok transformacji wsadowej
Uruchom następujący blok kodu, aby uruchomić transformację wsadową przy użyciu wytrenowanego modelu z danymi wejściowymi wsadowymi utworzonymi w pierwszym kroku:
Zdefiniuj krok modelu rejestru
Poniższy kod rejestruje model w rejestrze modeli SageMaker przy użyciu kroku modelu Pipelines:
Zdefiniuj krok niepowodzenia, aby zatrzymać potok
Poniższy kod definiuje krok niepowodzenie potoków, aby zatrzymać uruchomienie potoku z komunikatem o błędzie, jeśli wynik AUC nie spełnia zdefiniowanego progu:
Zdefiniuj krok warunku, aby sprawdzić wynik AUC
Poniższy kod definiuje krok warunku, aby sprawdzić wynik AUC i warunkowo utworzyć model i uruchomić transformację wsadową oraz zarejestrować model w rejestrze modeli lub zatrzymać uruchomienie potoku w stanie niepowodzenia:
Zbuduj i uruchom potok
Po zdefiniowaniu wszystkich kroków składowych można je złożyć w obiekt Pipelines. Nie musisz określać kolejności potoku, ponieważ Pipelines automatycznie określa kolejność kolejności na podstawie zależności między krokami.
Uruchom następujący kod w komórce w notesie. Jeśli potok już istnieje, kod aktualizuje potok. Jeśli potok nie istnieje, tworzy nowy.
Wnioski
W tym poście przedstawiliśmy niektóre z nowych funkcji dostępnych teraz w Pipelines wraz z innymi wbudowanymi funkcjami SageMaker i algorytmem XGBoost do tworzenia, iteracji i wdrażania modelu do przewidywania rezygnacji. Rozwiązanie można rozszerzyć o dodatkowe źródła danych
do wdrożenia własnego przepływu pracy ML. Aby uzyskać więcej informacji na temat kroków dostępnych w obiegu pracy Pipelines, zobacz Rurociąg modelowania Amazon SageMaker i Przepływy pracy SageMaker, Przykłady AWS SageMaker Repozytorium GitHub zawiera więcej przykładów dotyczących różnych przypadków użycia przy użyciu Pipelines.
O autorach
Jerry'ego Penga jest inżynierem oprogramowania w AWS SageMaker. Koncentruje się na budowaniu kompleksowego systemu MLOps na dużą skalę od szkolenia po monitorowanie modelu w produkcji. Pasjonuje go również przybliżanie koncepcji MLOps szerszej publiczności.
Dewena Qi jest inżynierem rozwoju oprogramowania w AWS. Obecnie koncentruje się na rozwijaniu i ulepszaniu SageMaker Pipelines. Poza pracą lubi ćwiczyć wiolonczelę.
Gajatri Ghanakota jest starszym inżynierem uczenia maszynowego w AWS Professional Services. Pasjonuje się tworzeniem, wdrażaniem i wyjaśnianiem rozwiązań AI/ML w różnych dziedzinach. Przed objęciem tej roli kierowała wieloma inicjatywami jako analityk danych i inżynier ML w czołowych globalnych firmach z branży finansowej i detalicznej. Posiada tytuł magistra informatyki ze specjalizacją Data Science uzyskany na Uniwersytecie Kolorado w Boulder.
Rozbijacz Grewal jest Sr Ai/ML Specialist Solutions Architect z AWS. Obecnie skupia się na serwowaniu modeli i MLOpów na SageMakerze. Wcześniej pracował jako inżynier ds. uczenia maszynowego budując i hostując modele. Poza pracą lubi grać w tenisa i jeździć na rowerze po górskich szlakach.
promień li jest starszym analitykiem danych z AWS Professional Services. Jego specjalność skupia się na budowaniu i operacjonalizacji rozwiązań AI/ML dla klientów różnej wielkości, od startupów po organizacje korporacyjne. Poza pracą Ray lubi fitness i podróże.
- 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