Naukowcy zajmujący się danymi często pracują nad zrozumieniem skutków różnych strategii wstępnego przetwarzania danych i inżynierii funkcji w połączeniu z różnymi architekturami modeli i hiperparametrami. Wymaga to iteracyjnego pokrywania dużych przestrzeni parametrów, a śledzenie wcześniej uruchomionych konfiguracji i wyników przy jednoczesnym zachowaniu powtarzalności eksperymentów może być przytłaczające.
W tym poście przedstawiono przykład śledzenia eksperymentów w kodzie, danych, artefaktach i wskaźnikach przy użyciu Eksperymenty Amazon SageMaker w połączeniu z Kontrola wersji danych (DVC). Pokazujemy, jak możesz używać DVC obok Amazon Sage Maker prace związane z przetwarzaniem i szkoleniem. Szkolimy różne modele CatBoost na zbiorze danych dotyczących domów w Kalifornii od Repozytorium StatLibi zmieniaj strategie wstrzymania, śledząc wersję danych za pomocą DVC. W każdym indywidualnym eksperymencie śledzimy artefakty wejściowe i wyjściowe, kod i metryki za pomocą eksperymentów SageMaker.
Eksperymenty SageMakera
SageMaker Experiments to usługa AWS do śledzenia eksperymentów uczenia maszynowego (ML). The SageMaker Eksperymenty Python SDK to wysokopoziomowy interfejs do tej usługi, który pomaga śledzić informacje o eksperymencie za pomocą języka Python.
Celem programu SageMaker Experiments jest maksymalne uproszczenie tworzenia eksperymentów, wypełnianie ich próbami, dodawanie informacji o śledzeniu i pochodzeniu oraz przeprowadzanie analiz w ramach prób i eksperymentów.
Omawiając eksperymenty SageMaker, odwołujemy się do następujących pojęć:
- Eksperyment – Zbiór powiązanych prób. Dodajesz próby do eksperymentu, który chcesz ze sobą porównać.
- Trial – Opis wieloetapowego przepływu pracy ML. Każdy etap przepływu pracy jest opisany przez komponent próbny.
- Komponent próbny – Opis pojedynczego kroku w przepływie pracy ML, takiego jak czyszczenie danych, wyodrębnianie funkcji, uczenie modelu lub ocena modelu.
- Tracker – Menedżer kontekstu Pythona do rejestrowania informacji o pojedynczym komponencie próbnym (na przykład parametry, metryki lub artefakty).
Kontrola wersji danych
Kontrola wersji danych (DVC) to nowy rodzaj oprogramowania do wersjonowania danych, przepływu pracy i zarządzania eksperymentami, które opiera się na git (chociaż może działać samodzielnie). DVC zmniejsza lukę między ustalonymi zestawami narzędzi inżynierskich a potrzebami w zakresie analizy danych, umożliwiając korzystanie z nowych cechy przy ponownym wykorzystaniu posiadanych umiejętności i intuicji.
Udostępnianie i współpraca w ramach eksperymentów związanych z nauką o danych może odbywać się za pośrednictwem zwykłego przepływu Git (zatwierdzanie, rozgałęzianie, tagowanie, pull requesty) w taki sam sposób, w jaki działa to dla inżynierów oprogramowania. Dzięki Git i DVC zespoły zajmujące się analizą danych i ML mogą wersjonować eksperymenty, zarządzać dużymi zestawami danych i odtwarzać projekty.
DVC ma następujące funkcje:
- DVC to za darmo, otwarte źródło linii poleceń narzędziem.
- DVC działa na repozytoriach Git i ma podobny interfejs wiersza poleceń i przepływ jak Git. DVC może również działać samodzielnie, ale bez wersjonowanie możliwości.
- Wersjonowanie danych jest możliwe poprzez zastąpienie dużych plików, katalogów zestawów danych, modeli ML itd. małymi metapliki (łatwy w obsłudze z Git). Te symbole zastępcze wskazują oryginalne dane, które są oddzielone od zarządzania kodem źródłowym.
- Możesz użyć magazynu lokalnego lub w chmurze, aby przechowywać dane projektu oddzielnie od jego bazy kodu. W ten sposób analitycy danych mogą przesyłać duże zestawy danych lub udostępniać innym model wytrenowany przez procesor GPU.
- DVC sprawia, że projekty analizy danych są odtwarzalne, tworząc lekkie rurociągi przy użyciu niejawnych grafów zależności oraz przez kodyfikację danych i artefaktów.
- DVC jest niezależny od platformy. Działa na wszystkich głównych systemach operacyjnych (Linux, macOS i Windows) i działa niezależnie od języków programowania (Python, R, Julia, skrypty powłoki itp.) lub bibliotek ML (Keras, TensorFlow, PyTorch, Scipy i więcej) wykorzystanych w projekcie.
- DVC jest szybki do zainstalować i nie wymaga specjalnej infrastruktury ani nie zależy od interfejsów API ani usług zewnętrznych. Jest to samodzielne narzędzie CLI.
Eksperymenty SageMaker i próbka DVC
Poniższy Próbka GitHub pokazuje, jak korzystać z DVC w środowisku SageMaker. W szczególności przyjrzymy się, jak zbudować niestandardowy obraz z domyślnie zainstalowanymi bibliotekami DVC, aby zapewnić spójne środowisko programistyczne dla analityków danych w Studio Amazon SageMakeroraz jak uruchomić DVC wraz z infrastrukturą zarządzaną przez SageMaker na potrzeby przetwarzania i szkolenia. Ponadto pokazujemy, jak wzbogacić informacje o śledzeniu SageMaker o informacje o wersji danych z DVC i zwizualizować je w konsoli Studio.
Poniższy diagram ilustruje architekturę rozwiązania i przepływ pracy.
Utwórz niestandardowy obraz Studio z już zainstalowanym DVC
W tym Repozytorium GitHub, wyjaśniamy, jak utworzyć niestandardowy obraz dla programu Studio, w którym zainstalowano już DVC. Zaletą tworzenia obrazu i udostępniania go wszystkim użytkownikom Studio jest to, że tworzy spójne środowisko dla użytkowników Studio, które mogą również uruchamiać lokalnie. Chociaż próbka jest oparta na Chmura AWS9, możesz również zbudować kontener na komputerze lokalnym, o ile masz zainstalowany i uruchomiony Docker. Ta próbka jest oparta na następujących Dockerfile i środowisko.yml. Wynikowy obraz Dockera jest przechowywany w Rejestr elastycznego pojemnika Amazon (Amazon EMR) na Twoim koncie AWS. Zobacz następujący kod:
Możesz teraz utwórz nową domenę Studio or zaktualizować istniejącą domenę Studio który ma dostęp do nowo utworzonego obrazu Docker.
Używamy pliki Zestaw programistyczny AWS Cloud (AWS CDK), aby utworzyć następujące zasoby za pomocą Tworzenie chmury AWS:
- Rola wykonawcza SageMaker z odpowiednimi uprawnieniami do nowej lub istniejącej domeny Studio
- Obraz SageMaker i wersja obrazu SageMaker z obrazu Docker
conda-env-dvc-kernel
które stworzyliśmy wcześniej - An
AppImageConfig
która określa, jak powinna być skonfigurowana brama jądra - Użytkownik Studio (
data-scientist-dvc
) z odpowiednią rolą wykonawczą SageMaker i dostępnym dla niej niestandardowym obrazem Studio
Aby uzyskać szczegółowe instrukcje, zobacz Powiąż niestandardowy obraz z SageMaker Studio.
Uruchom laboratorium
Aby uruchomić laboratorium, wykonaj następujące czynności:
- W domenie Studio uruchom Studio dla
data-scientist-dvc
użytkownika. - Wybierz ikonę Git, a następnie wybierz Sklonuj repozytorium.
- Wprowadź adres URL repozytorium (
https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo
) i wybierz Clone. - W przeglądarce plików wybierz
amazon-sagemaker-experiments-dvc-demo
magazyn. - Otwórz
dvc_sagemaker_script_mode.ipynb
notatnik. - W razie zamówieenia projektu Obraz niestandardowy, wybierz obraz conda-env-dvc-kernel.
- Dodaj Wybierz.
Skonfiguruj DVC do przechowywania wersji danych
Tworzymy podkatalog, w którym przygotowujemy dane: sagemaker-dvc-sample. W ramach tego podkatalogu inicjujemy nowe repozytorium Git i ustawiamy pilota na repozytorium, które tworzymy w Zatwierdzenie kodu AWS. Celem jest posiadanie w tym repozytorium wersji konfiguracji i plików DVC do śledzenia danych. Jednak Git oferuje natywne możliwości zarządzania podprojektami za pomocą, na przykład, podmodułów git i poddrzew git, a ten przykład można rozszerzyć, aby używać dowolnego z wyżej wymienionych narzędzi, które najlepiej pasują do Twojego przepływu pracy.
Główną zaletą korzystania z CodeCommit z SageMaker w naszym przypadku jest jego integracja z AWS Zarządzanie tożsamością i dostępem (IAM) do uwierzytelniania i autoryzacji, co oznacza, że możemy używać ról uprawnień do wypychania i pobierania danych bez konieczności pobierania poświadczeń (lub kluczy SSH). Ustawienie odpowiednich uprawnień w roli wykonawczej SageMaker umożliwia również bezpieczną interakcję z notatnikiem Studio oraz zadaniem szkolenia i przetwarzania SageMaker z CodeCommit.
Chociaż możesz zastąpić CodeCommit dowolną inną usługą kontroli źródła, taką jak GitHub, Gitlab lub Bitbucket, musisz rozważyć, jak obsługiwać poświadczenia dla swojego systemu. Jedną z możliwości jest przechowywanie tych danych uwierzytelniających na Menedżer tajemnic AWS i pobierać je w czasie wykonywania z notatnika Studio, a także z zadań przetwarzania i szkolenia programu SageMaker.
Przetwarzaj i trenuj z DVC i SageMaker
W tej sekcji omówimy dwa różne podejścia do rozwiązania naszego problemu oraz sposób, w jaki możemy śledzić dwa testy przy użyciu eksperymentów SageMaker zgodnie z architekturą koncepcyjną wysokiego poziomu, którą pokazaliśmy wcześniej.
Skonfiguruj eksperyment SageMaker
Aby śledzić ten test w SageMaker, musimy stworzyć eksperyment. Musimy również zdefiniować próbę w eksperymencie. Dla uproszczenia rozważamy tylko jedną próbę w eksperymencie, ale możesz mieć dowolną liczbę prób w eksperymencie, na przykład, jeśli chcesz przetestować różne algorytmy.
Tworzymy eksperyment o nazwie DEMO-sagemaker-experiments-dvc
z dwoma próbami, dvc-trial-single-file
i dvc-trial-multi-files
, z których każdy reprezentuje inną wersję zestawu danych.
Stwórzmy DEMO-sagemaker-experiments-dvc
eksperyment:
Test 1: Generuj pojedyncze pliki do szkolenia i walidacji
W tej sekcji tworzymy skrypt przetwarzania, który pobiera surowe dane bezpośrednio z Usługa Amazon Simple Storage (Amazon S3) jako wejście; przetwarza je w celu utworzenia zestawów danych dotyczących pociągów, walidacji i testów; i przechowuje wyniki z powrotem w Amazon S3 za pomocą DVC. Ponadto pokazujemy, w jaki sposób można śledzić artefakty wyjściowe generowane przez DVC za pomocą programu SageMaker podczas wykonywania zadań przetwarzania i szkolenia oraz za pomocą eksperymentów SageMaker.
Najpierw tworzymy dvc-trial-single-file
próbny i dodaj go do DEMO-sagemaker-experiments-dvc
eksperyment. Dzięki temu wszystkie elementy próbne związane z tym testem są zorganizowane w sensowny sposób.
Użyj DVC w zadaniu przetwarzania SageMaker, aby utworzyć wersję pojedynczego pliku
W tej sekcji tworzymy skrypt przetwarzania, który pobiera nieprzetworzone dane bezpośrednio z Amazon S3 jako dane wejściowe, korzystając z możliwości zarządzania danymi ładowania programu SageMaker; przetwarza je w celu utworzenia zestawów danych dotyczących pociągów, walidacji i testów; i przechowuje wyniki z powrotem w Amazon S3 za pomocą DVC. Bardzo ważne jest, aby zrozumieć, że używając DVC do przechowywania danych w Amazon S3 (lub pobierania danych z Amazon S3), tracimy możliwości ładowania danych zarządzanych przez SageMaker, co może potencjalnie mieć wpływ na wydajność i koszty naszych zadań przetwarzania i szkolenia , zwłaszcza podczas pracy z bardzo dużymi zestawami danych. Aby uzyskać więcej informacji na temat różnych funkcji natywnych trybów wprowadzania programu SageMaker, zobacz Dostęp do danych treningowych.
Wreszcie, ujednolicamy możliwości śledzenia DVC z funkcjami śledzenia SageMaker podczas przetwarzania zadań za pośrednictwem SageMaker Experiments.
Skrypt przetwarzania oczekuje adresu repozytorium Git i gałęzi, którą chcemy utworzyć do przechowywania metadanych DVC przekazywanych przez zmienne środowiskowe. Same zestawy danych są przechowywane w Amazon S3 przez DVC. Chociaż zmienne środowiskowe są automatycznie śledzone w programie SageMaker Experiments i widoczne w parametrach komponentu próbnego, możemy wzbogacić komponenty próbne o dodatkowe informacje, które następnie staną się dostępne do wizualizacji w interfejsie użytkownika Studio za pomocą obiektu śledzenia. W naszym przypadku parametry komponentów próbnych obejmują:
DVC_REPO_URL
DVC_BRANCH
USER
data_commit_hash
train_test_split_ratio
Skrypt przetwarzania wstępnego klonuje repozytorium Git; generuje zestawy danych o pociągu, walidacji i testach; i synchronizuje go za pomocą DVC. Jak wspomniano wcześniej, podczas korzystania z DVC nie możemy korzystać z natywnych możliwości ładowania danych programu SageMaker. Oprócz obniżenia wydajności, które możemy ponieść w przypadku dużych zestawów danych, tracimy również możliwości automatycznego śledzenia artefaktów wyjściowych. Jednak dzięki trackerowi i DVC Python API możemy zrekompensować te niedociągnięcia, pobrać takie informacje w czasie wykonywania i przechowywać je w komponencie próbnym przy niewielkim wysiłku. Wartością dodaną w ten sposób jest posiadanie w jednym widoku artefaktów wejściowych i wyjściowych, które należą do tego konkretnego zadania przetwarzania.
Pełny skrypt Pythona do wstępnego przetwarzania jest dostępny w GitHub repo.
SageMaker daje nam możliwość uruchomienia naszego skryptu przetwarzania na obrazach kontenerów zarządzanych przez AWS, które są zoptymalizowane do działania w infrastrukturze AWS. Jeśli nasz skrypt wymaga dodatkowych zależności, możemy dostarczyć a requirements.txt
plik. Kiedy rozpoczynamy zadanie przetwarzania, SageMaker używa pip-install
zainstalować wszystkie potrzebne nam biblioteki (na przykład biblioteki związane z DVC). Jeśli potrzebujesz ściślejszej kontroli nad wszystkimi bibliotekami zainstalowanymi w kontenerach, możesz wprowadzić własny kontener w SageMaker, na przykład dla przetwarzanie i trening.
Mamy teraz wszystkie składniki potrzebne do wykonania naszej pracy związanej z przetwarzaniem SageMaker:
- Skrypt przetwarzający, który może przetwarzać kilka argumentów (
--train-test-split-ratio
) i dwie zmienne środowiskowe (DVC_REPO_URL
iDVC_BRANCH
) - A
requiremets.txt
filet - Repozytorium Git (w CodeCommit)
- Eksperyment i próba SageMakera
Następnie uruchamiamy zadanie przetwarzania za pomocą preprocessing-experiment.py
scenariusz, experiment_config
, dvc_repo_url
, dvc_branch
zdefiniowaliśmy wcześniej.
Zadanie przetwarzania trwa około 5 minut. Teraz możesz wyświetlić szczegóły wersji próbnej dla pojedynczego zbioru danych.
Poniższy zrzut ekranu pokazuje, gdzie można znaleźć przechowywane informacje w Studio. Zanotuj wartości dla dvc-trial-single-file
in DVC_BRANCH
, DVC_REPO_URL
, data_commit_hash
na parametry patka.
Zwróć także uwagę na szczegóły wejścia i wyjścia na Artefakty patka.
Utwórz estymator i dopasuj model do wersji danych z jednego pliku
Aby skorzystać z integracji DVC w ramach pracy szkoleniowej SageMaker, przekazujemy dvc_repo_url
i dvc_branch
jako zmienne środowiskowe podczas tworzenia obiektu Estimator.
Trenujemy na dvc-trial-single-file
oddział pierwszy.
Podczas pobierania danych za pomocą DVC używamy następującej struktury zbioru danych:
Teraz tworzymy estymator Scikit-learn za pomocą SageMaker SDK dla Pythona. Pozwala nam to określić:
- Ścieżka do pliku źródłowego Pythona, który powinien być uruchamiany jako punkt wejścia do szkolenia.
- Rola uprawnień, która kontroluje uprawnienia dostępu do danych Amazon S3 i CodeCommit oraz uruchamiania funkcji SageMaker.
- Lista słowników definiujących metryki używane do oceny zadań szkoleniowych.
- Liczba i typ instancji szkoleniowych. Używamy jednej instancji ml.m5.large.
- Hiperparametry używane do trenowania.
- Zmienne środowiskowe do wykorzystania podczas pracy szkoleniowej. Używamy
DVC_REPO_URL
,DVC_BRANCH
,USER
.
Metodę fit Estimatora wywołujemy z wcześniej zdefiniowaną konfiguracją eksperymentu, aby rozpocząć szkolenie.
Zadanie szkoleniowe zajmuje około 5 minut. Dzienniki pokazują te wiersze, wskazujące pliki ściągnięte przez DVC:
Test 2: Generuj wiele plików do szkolenia i walidacji
Tworzymy nowy dvc-trial-multi-files
próbny i dodaj go do prądu DEMO-sagemaker-experiments-dvc
eksperyment.
W odróżnieniu od pierwszego skryptu przetwarzania, teraz tworzymy z oryginalnego zestawu danych wiele plików do trenowania i walidacji oraz przechowujemy metadane DVC w innej gałęzi.
Możesz zapoznać się z drugim wstępnie przetwarzającym skryptem Pythona na GitHub.
Zadanie przetwarzania trwa około 5 minut. Teraz możesz wyświetlić szczegóły wersji próbnej dla wieloplikowego zbioru danych.
Poniższe zrzuty ekranu pokazują, gdzie można znaleźć informacje przechowywane w Eksperymentach SageMaker w Komponenty próbne sekcji w interfejsie użytkownika Studio. Zanotuj wartości dla dvc-trial-multi-files
in DVC_BRANCH
, DVC_REPO_URL
, data_commit_hash
na parametry patka.
Możesz również przejrzeć szczegóły wejścia i wyjścia na Artefakty patka.
Teraz trenujemy na dvc-trial-multi-files
oddział. Podczas pobierania danych za pomocą DVC używamy następującej struktury zbioru danych:
Podobnie jak wcześniej, tworzymy nowy estymator Scikit-learn o nazwie próbnej dvc-trial-multi-files
i rozpocząć pracę szkoleniową.
Zadanie szkoleniowe zajmuje około 5 minut. W dziennikach zadań szkoleniowych wyprowadzanych do notebooka można zobaczyć te wiersze, wskazujące pliki pobrane przez DVC:
Hostuj swój model w SageMaker
Po wytrenowaniu modelu ML możesz go wdrożyć za pomocą programu SageMaker. Aby wdrożyć trwały punkt końcowy działający w czasie rzeczywistym, który tworzy jedną prognozę na raz, używamy Usługi hostingu w czasie rzeczywistym SageMaker.
Najpierw otrzymujemy najnowszy testowy zestaw danych lokalnie w notatniku programistycznym w Studio. W tym celu możemy użyć dvc.api.read()
aby załadować surowe dane, które były przechowywane w Amazon S3 przez zadanie przetwarzania SageMaker.
Następnie przygotowujemy dane za pomocą Pand, ładujemy testowy plik CSV i dzwonimy predictor.predict
wywołać wcześniej utworzony punkt końcowy SageMaker z danymi i uzyskać prognozy.
Usuń punkt końcowy
Punkty końcowe należy usuwać, gdy nie są już używane, ponieważ są rozliczane według czasu wdrożenia (aby uzyskać więcej informacji, zobacz Cennik Amazon SageMaker). Pamiętaj, aby usunąć punkt końcowy, aby uniknąć nieoczekiwanych kosztów.
Sprzątać
Zanim usuniesz wszystkie utworzone zasoby, upewnij się, że wszystkie aplikacje zostały usunięte z data-scientist-dvc
użytkownika, w tym wszystkie aplikacje KernelGateway, a także domyślną aplikację JupiterServer.
Następnie możesz zniszczyć stos AWS CDK, uruchamiając następujące polecenie:
Jeśli korzystasz z istniejącej domeny, uruchom również następujące polecenia:
Wnioski
W tym poście zapoznałeś się z przykładem śledzenia eksperymentów w kodzie, danych, artefaktach i metrykach za pomocą eksperymentów SageMaker oraz zadań przetwarzania i szkolenia SageMaker w połączeniu z DVC. Stworzyliśmy obraz platformy Docker zawierający DVC, który był wymagany w programie Studio jako notatnik programistyczny, i pokazaliśmy, jak można używać zadań przetwarzania i szkolenia za pomocą DVC. Przygotowaliśmy dwie wersje danych i wykorzystaliśmy DVC do zarządzania nimi za pomocą Git. Następnie skorzystałeś z programu SageMaker Experiments do śledzenia przetwarzania i uczenia się za pomocą dwóch wersji danych, aby uzyskać ujednolicony widok parametrów, artefaktów i metryk w jednym okienku. Na koniec wdrożyłeś model w punkcie końcowym SageMaker i użyłeś testowego zestawu danych z drugiej wersji zestawu danych do wywołania punktu końcowego SageMaker i uzyskania prognoz.
W następnym kroku możesz rozszerzyć istniejący notatnik i wprowadzić własną strategię inżynierii funkcji oraz używać DVC i SageMaker do przeprowadzania eksperymentów. Chodźmy budować!
Więcej informacji można znaleźć w następujących zasobach:
O autorach
Paolo di Francesco jest architektem rozwiązań w AWS. Posiada doświadczenie w telekomunikacji i inżynierii oprogramowania. Pasjonuje się uczeniem maszynowym i obecnie koncentruje się na wykorzystaniu swojego doświadczenia, aby pomóc klientom osiągnąć ich cele w AWS, w szczególności w dyskusjach na temat MLOps. Poza pracą lubi grać w piłkę i czytać.
Eitana Seli jest specjalistą ds. rozwiązań w zakresie uczenia maszynowego w Amazon Web Services. Współpracuje z klientami AWS, zapewniając wskazówki i pomoc techniczną, pomagając im budować i obsługiwać rozwiązania uczenia maszynowego w AWS. W wolnym czasie Eitan lubi biegać i czytać najnowsze artykuły o uczeniu maszynowym.
- 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
- Kontrola wersji danych
- głęboka nauka
- rozszerzenie DVC
- google to
- uczenie maszynowe
- plato
- Platon Ai
- Analiza danych Platona
- Gra Platona
- PlatoDane
- platogaming
- skala ai
- składnia
- Instrukcje techniczne
- zefirnet