Z radością ogłaszamy dwie nowe możliwości w aplikacji Studio Amazon SageMaker które przyspieszą rozwój iteracyjny dla praktyków uczenia maszynowego (ML): obsługa trybu lokalnego i platformy Docker. Opracowywanie modelu uczenia maszynowego często obejmuje powolne cykle iteracji, gdy programiści przełączają się między kodowaniem, szkoleniem i wdrażaniem. Każdy krok wymaga oczekiwania na uruchomienie zdalnych zasobów obliczeniowych, co opóźnia sprawdzanie poprawności implementacji i uzyskiwanie informacji zwrotnych na temat zmian.
Dzięki trybowi lokalnemu programiści mogą teraz trenować i testować modele, debugować kod i weryfikować kompleksowe potoki bezpośrednio w instancji notatnika SageMaker Studio bez konieczności uruchamiania zdalnych zasobów obliczeniowych. Skraca to cykl iteracji z minut do sekund, zwiększając produktywność programistów. Obsługa Dockera w notatnikach SageMaker Studio umożliwia programistom bezproblemowe budowanie kontenerów Docker i uzyskiwanie dostępu do gotowych kontenerów, zapewniając spójne środowisko programistyczne w całym zespole i unikając czasochłonnej konfiguracji i zarządzania zależnościami.
Obsługa trybu lokalnego i platformy Docker zapewnia usprawniony przepływ pracy podczas sprawdzania poprawności zmian w kodzie i tworzenia prototypów modeli przy użyciu lokalnych kontenerów działających na notatniku SageMaker Studio
instancja. W tym poście przeprowadzimy Cię przez konfigurację trybu lokalnego w SageMaker Studio, uruchomienie przykładowego zadania szkoleniowego i wdrożenie modelu na serwerze Amazon Sage Maker punkt końcowy z notatnika SageMaker Studio.
Tryb lokalny SageMaker Studio
W SageMaker Studio wprowadzono tryb lokalny, umożliwiający uruchamianie zadań szkoleniowych, wnioskowania, transformacji wsadowych i przetwarzania SageMaker bezpośrednio w instancjach notatników JupyterLab, Code Editor lub SageMaker Studio Classic bez konieczności stosowania zdalnych zasobów obliczeniowych. Korzyści z używania trybu lokalnego obejmują:
- Natychmiastowa weryfikacja i testowanie przepływów pracy bezpośrednio w zintegrowanych środowiskach programistycznych (IDE)
- Szybsza iteracja poprzez lokalne przebiegi w przypadku zadań na mniejszą skalę w celu sprawdzenia wyników i wcześniejszej identyfikacji problemów
- Poprawiona wydajność programowania i debugowania poprzez eliminację oczekiwania na zdalne zadania szkoleniowe
- Natychmiastowa informacja zwrotna na temat zmian w kodzie przed uruchomieniem pełnych zadań w chmurze
Poniższy rysunek ilustruje przepływ pracy w trybie lokalnym w SageMaker.
Aby korzystać z trybu lokalnego, ustaw instance_type='local'
podczas uruchamiania zadań SageMaker Python SDK, takich jak uczenie i wnioskowanie. Spowoduje to uruchomienie ich w instancjach używanych przez Twoje środowiska IDE SageMaker Studio zamiast udostępniania zasobów w chmurze.
Chociaż niektóre funkcje, takie jak szkolenie rozproszone, są dostępne tylko w chmurze, tryb lokalny eliminuje potrzebę przełączania kontekstów w celu szybkich iteracji. Kiedy będziesz gotowy, aby wykorzystać pełną moc i skalę SageMaker, możesz bezproblemowo uruchomić przepływ pracy w chmurze.
Obsługa Dockera w SageMaker Studio
SageMaker Studio umożliwia teraz także budowanie i uruchamianie kontenerów Docker lokalnie w instancji notatnika SageMaker Studio. Ta nowa funkcja umożliwia tworzenie i sprawdzanie obrazów Dockera w SageMaker Studio przed użyciem ich do uczenia i wnioskowania SageMaker.
Poniższy diagram ilustruje architekturę orkiestracji Docker wysokiego poziomu w SageMaker Studio.
Dzięki obsłudze Dockera w SageMaker Studio możesz:
- Twórz kontenery Docker ze zintegrowanymi modelami i zależnościami bezpośrednio w SageMaker Studio
- Wyeliminuj potrzebę zewnętrznych procesów kompilacji platformy Docker, aby uprościć tworzenie obrazów
- Uruchamiaj kontenery lokalnie, aby sprawdzić funkcjonalność przed wdrożeniem modeli w środowisku produkcyjnym
- Wykorzystuj ponownie lokalne kontenery podczas wdrażania w SageMaker na potrzeby szkoleń i hostingu
Chociaż w chwili pisania tego tekstu niektóre zaawansowane możliwości platformy Docker, takie jak obsługa wielu kontenerów i sieci niestandardowe, nie są obsługiwane, dostępna jest podstawowa funkcja kompilacji i uruchamiania, która przyspiesza tworzenie kontenerów na potrzeby przepływów pracy typu „przynieś własny kontener” (BYOC).
Wymagania wstępne
Aby korzystać z trybu lokalnego w aplikacjach SageMaker Studio, należy spełnić następujące wymagania wstępne:
- Do pobierania obrazów z Rejestr elastycznego pojemnika Amazon (Amazon ECR), konto hostujące obraz ECR musi zapewniać użytkownikowi uprawnienia dostępu Zarządzanie tożsamością i dostępem (IAM) rolę. Rola domeny musi także umożliwiać dostęp do Amazon ECR.
- Aby włączyć możliwości trybu lokalnego i okna Docker, należy ustawić opcję
EnableDockerAccess
parametr na true dla domenyDockerSettings
używając Interfejs wiersza poleceń AWS (interfejs wiersza poleceń AWS). Dzięki temu użytkownicy w domenie mogą korzystać z trybu lokalnego i funkcji Dockera. Domyślnie tryb lokalny i okno dokowane są wyłączone w SageMaker Studio. Aby aktualizacja usługi Docker zaczęła obowiązywać, konieczne będzie ponowne uruchomienie wszystkich istniejących aplikacji SageMaker Studio. Poniżej znajduje się przykładowe polecenie CLI AWS służące do aktualizacji domeny SageMaker Studio:
- Aby móc to zrobić, musisz zaktualizować rolę IAM SageMaker wypchnij obrazy Dockera do Amazon ECR:
Uruchamiaj pliki Pythona w przestrzeniach SageMaker Studio w trybie lokalnym
SageMaker Studio JupyterLab i edytor kodu (w oparciu o Code-OSS, kod Visual Studio – Open Source), rozszerza SageMaker Studio, dzięki czemu możesz pisać, testować, debugować i uruchamiać analizy i kod ML przy użyciu popularnego, lekkiego IDE. Aby uzyskać więcej informacji na temat rozpoczęcia pracy z środowiskami IDE SageMaker Studio, zobacz Zwiększ produktywność w Amazon SageMaker Studio: Przedstawiamy JupyterLab Spaces i generatywne narzędzia AI i Nowość – Edytor kodu oparty na Code-OSS VS Code Open Source, teraz dostępny w Amazon SageMaker Studio. Wykonaj następujące kroki:
- Utwórz nowy terminal.
- Zainstaluj wtyczkę Docker CLI i Docker Compose, postępując zgodnie z poniższymi instrukcjami GitHub repo. Jeśli polecenia połączone zawiodą, uruchom je pojedynczo.
Należy zaktualizować pakiet SageMaker SDK do najnowszej wersji.
- run
pip install sagemaker -Uq
w terminalu.
Tylko w przypadku Edytora kodu musisz ustawić środowisko Python tak, aby działało w bieżącym terminalu.
- W Edytorze kodu na menu plik¸ wybierz Preferencje i Ustawienia.
- Wyszukaj i wybierz Terminal: Wykonaj w katalogu pliku.
- W edytorze kodu lub JupyterLab otwórz plik
scikit_learn_script_mode_local_training_and_serving
folder i uruchomscikit_learn_script_mode_local_training_and_serving.py
plik.
Możesz uruchomić skrypt, wybierając run w edytorze kodu lub przy użyciu interfejsu CLI w terminalu JupyterLab. Będziesz mógł zobaczyć, jak model jest szkolony lokalnie. Następnie wdrażasz model lokalnie w punkcie końcowym SageMaker i obliczasz średni błąd kwadratowy (RMSE
).
Symuluj uczenie i wnioskowanie w SageMaker Studio Classic przy użyciu trybu lokalnego
W SageMaker Studio Classic możesz także używać notatnika, aby przeprowadzić na nim zadanie szkoleniowe na małą skalę CIFAR10
korzystając z trybu lokalnego, wdróż model lokalnie i wykonaj wnioskowanie.
Skonfiguruj swój notatnik
Aby skonfigurować notatnik, wykonaj następujące kroki:
- Otwórz SageMaker Studio Classic i sklonuj poniższy plik GitHub repo.
- Otwórz
pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10
.
- W razie zamówieenia projektu Obrazwybierz
PyTorch 2.1.0 Python 3.10 CPU Optimized
.
Upewnij się, że Twój notatnik wyświetla prawidłową instancję i wybór jądra.
- Otwórz terminal, wybierając Uruchom terminal w bieżącym obrazie SageMaker.
- Zainstaluj wtyczkę Docker CLI i Docker Compose, postępując zgodnie z poniższymi instrukcjami GitHub repo.
Ponieważ używasz Dockera z SageMaker Studio Classic, usuń sudo podczas uruchamiania poleceń, ponieważ terminal działa już pod kontrolą superużytkownika. W przypadku SageMaker Studio Classic polecenia instalacyjne zależą od systemu operacyjnego obrazu aplikacji SageMaker Studio. Na przykład obrazy frameworku oparte na DLC są oparte na systemie Ubuntu i w przypadku których poniższe instrukcje będą działać. Jednakże w przypadku obrazu opartego na Debianie, takiego jak obrazy DataScience, należy postępować zgodnie z poniższymi instrukcjami GitHub repo. Jeśli polecenia połączone zawiodą, uruchom je pojedynczo. Powinna zostać wyświetlona wersja Dockera.
- Pozostaw okno terminala otwarte, wróć do notatnika i zacznij go uruchamiać komórka po komórce.
Upewnij się, że uruchomiłeś komórkę za pomocą pip install -U sagemaker
więc używasz najnowszej wersji pakietu SageMaker Python SDK.
Szkolenie lokalne
Kiedy zaczniesz uruchamiać lokalne zadanie szkoleniowe SageMaker, zobaczysz następujące wiersze dziennika:
Oznacza to, że szkolenie było prowadzone lokalnie przy użyciu platformy Docker.
Bądź cierpliwy podczas pytorch-training:2.1-cpu-py310
Obraz platformy Docker jest ściągany. Ze względu na duży rozmiar (5.2 GB) może to zająć kilka minut.
Obrazy Dockera będą przechowywane w woluminie głównym instancji aplikacji SageMaker Studio, który nie jest dostępny dla użytkowników końcowych. Jedynym sposobem uzyskania dostępu do obrazów platformy Docker i interakcji z nią są udostępnione operacje interfejsu API platformy Docker.
Z punktu widzenia poufności użytkownika platforma SageMaker Studio nigdy nie uzyskuje dostępu do obrazów specyficznych dla użytkownika ani ich nie przechowuje.
Po zakończeniu szkolenia zobaczysz następujące wiersze dziennika sukcesów:
Wnioskowanie lokalne
Wykonaj następujące kroki:
- Wdróż punkt końcowy SageMaker przy użyciu trybu lokalnego SageMaker.
Bądź cierpliwy podczas pytorch-inference:2.1-cpu-py310
Obraz platformy Docker jest ściągany. Ze względu na duży rozmiar (4.32 GB) może to zająć kilka minut.
- Wywołaj punkt końcowy SageMaker wdrożony lokalnie, korzystając z obrazów testowych.
Będziesz mógł zobaczyć przewidywane klasy: żaba, statek, samochód i samolot:
- Ponieważ lokalny punkt końcowy SageMaker nadal działa, wróć do otwartego okna terminala i wyświetl listę uruchomionych kontenerów:
docker ps
Będziesz mógł zobaczyć bieg pytorch-inference:2.1-cpu-py310
kontener obsługujący punkt końcowy SageMaker.
- Aby zamknąć lokalny punkt końcowy SageMaker i zatrzymać działający kontener, ponieważ jednocześnie można uruchomić tylko jeden lokalny punkt końcowy, uruchom kod czyszczący.
- Aby upewnić się, że kontener Docker jest wyłączony, możesz przejść do otwartego okna terminala, uruchomić docker ps i upewnić się, że nie ma uruchomionych kontenerów.
- Jeśli widzisz uruchomiony kontener, uruchom go
docker stop <CONTAINER_ID>
zatrzymać to.
Wskazówki dotyczące korzystania z trybu lokalnego programu SageMaker
Jeżeli używasz SageMakera po raz pierwszy, zapoznaj się z sekcją Trenuj modele uczenia maszynowego. Aby dowiedzieć się więcej na temat wdrażania modeli na potrzeby wnioskowania za pomocą SageMaker, zobacz Wdrażaj modele na potrzeby wnioskowania.
Należy pamiętać o następujących zaleceniach:
- Drukuj pliki wejściowe i wyjściowe oraz foldery, aby zrozumieć ładowanie zestawu danych i modelu
- Do szybkiego testowania użyj 1–2 epok i małych zbiorów danych
- Wstępnie zainstaluj zależności w pliku Dockerfile, aby zoptymalizować konfigurację środowiska
- Izoluj kod serializacji w punktach końcowych na potrzeby debugowania
Skonfiguruj instalację Dockera jako konfigurację cyklu życia
Możesz zdefiniować proces instalacji Dockera jako skrypt konfiguracji cyklu życia (LCC), aby uprościć konfigurację za każdym razem, gdy uruchamiana jest nowa przestrzeń SageMaker Studio. LCC to skrypty uruchamiane przez SageMaker podczas zdarzeń takich jak tworzenie przestrzeni. Patrz laboratorium jupytera, Edytor kodulub Klasyczny program SageMaker Studio Konfiguracja LCC (przy użyciu instalacja dokowana cli jako odniesienie), aby dowiedzieć się więcej.
Twórz i testuj niestandardowe obrazy Dockera w przestrzeniach SageMaker Studio
Na tym etapie instalujesz Docker w przestrzeni aplikacji JupyterLab (lub Code Editor) i używasz Dockera do tworzenia, testowania i publikowania niestandardowych obrazów Dockera w przestrzeniach SageMaker Studio. Przestrzenie służą do zarządzania zapotrzebowaniem na pamięć i zasoby niektórych aplikacji SageMaker Studio. Każda przestrzeń ma relację 1:1 z instancją aplikacji. Każda utworzona obsługiwana aplikacja otrzymuje własną przestrzeń. Aby dowiedzieć się więcej o przestrzeniach SageMaker, zobacz Zwiększ produktywność w Amazon SageMaker Studio: Przedstawiamy JupyterLab Spaces i generatywne narzędzia AI. Upewnij się, że udostępniono nowe miejsce o pojemności co najmniej 30 GB, aby zapewnić wystarczającą ilość miejsca na obrazy i artefakty platformy Docker.
Zainstaluj Dockera w przestrzeni
Aby zainstalować wtyczkę Docker CLI i Docker Compose w przestrzeni JupyterLab, uruchom następujące polecenia GitHub repo. Studio SageMaker obsługuje tylko wersję Dockera 20.10.X.
Twórz obrazy Dockera
Aby potwierdzić, że Docker jest zainstalowany i działa w przestrzeni JupyterLab, uruchom następujący kod:
Aby zbudować niestandardowy obraz Dockera w przestrzeni JupyterLab (lub edytorze kodu), wykonaj następujące kroki:
- Utwórz pusty plik Dockerfile:
touch Dockerfile
- Edytuj plik Dockerfile za pomocą następujących poleceń, które tworzą prosty obraz serwera WWW Flask z podstawowego języka Python: Obraz 3.10.13-bullseye hostowany na Centrum Dockera:
Poniższy kod przedstawia zawartość przykładowego pliku aplikacji Flask app.py
:
Ponadto można zaktualizować referencyjne polecenia pliku Dockerfile, aby uwzględnić wybrane pakiety i artefakty.
- Zbuduj obraz Dockera, korzystając z referencyjnego pliku Dockerfile:
docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .
Zawierać --network
sagemaker w poleceniu budowania okna dokowanego, w przeciwnym razie kompilacja zakończy się niepowodzeniem. Kontenerów nie można uruchamiać w domyślnym moście platformy Docker ani w niestandardowych sieciach platformy Docker. Kontenery działają w tej samej sieci, co kontener aplikacji SageMaker Studio. Użytkownicy mogą używać tylko sagemaker jako nazwy sieci.
- Po zakończeniu kompilacji sprawdź, czy obraz istnieje. Ponownie oznacz kompilację jako obraz ECR i naciśnij. Jeśli napotkasz problemy z uprawnieniami, uruchom polecenie aws ecr get-login-password… i spróbuj ponownie uruchomić funkcję push/pull Dockera:
Przetestuj obrazy Dockera
Zainstalowanie Dockera w przestrzeni JupyterLab (lub edytora kodu) SageMaker Studio umożliwia testowanie gotowych lub niestandardowych obrazów Dockera jako kontenerów (lub aplikacji kontenerowych). W tej sekcji używamy polecenia docker run, aby udostępnić kontenery Docker w przestrzeni SageMaker Studio w celu testowania konteneryzowanych obciążeń, takich jak usługi internetowe REST i skrypty Python. Wykonaj następujące kroki:
- Jeśli obraz testowy nie istnieje, uruchom polecenie docker pull, aby pobrać obraz na komputer lokalny:
sagemaker-user@default:~$ docker pull 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
- Jeśli napotkasz problemy z uwierzytelnianiem, uruchom następujące polecenia:
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
- Utwórz kontener, aby przetestować obciążenie:
docker run --network sagemaker 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
Spowoduje to uruchomienie nowej instancji kontenera i uruchomienie aplikacji zdefiniowanej za pomocą ENTRYPOINT Dockera:
- Aby sprawdzić, czy punkt końcowy sieci jest aktywny, przejdź do adresu URL
https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/
.
Powinieneś zobaczyć odpowiedź JSON podobną do poniższego zrzutu ekranu.
Sprzątać
Aby uniknąć niepotrzebnych opłat, usuń zasoby utworzone podczas uruchamiania przykładów w tym poście:
- W swojej domenie SageMaker Studio wybierz Studio Klasyczne w okienku nawigacji, a następnie wybierz Stop.
- W swojej domenie SageMaker Studio wybierz laboratorium jupytera or Edytor kodu w okienku nawigacji wybierz aplikację, a następnie wybierz Stop.
Wnioski
Obsługa trybu lokalnego i platformy Docker w SageMaker Studio umożliwia programistom szybsze tworzenie, testowanie i iterowanie wdrożeń ML bez konieczności opuszczania obszaru roboczego. Zapewniając natychmiastowy dostęp do środowisk testowych i wyników, funkcje te optymalizują przepływ pracy i zwiększają produktywność. Wypróbuj obsługę lokalnego modelu i platformy Docker w SageMaker Studio, korzystając z naszego szybka funkcja pokładowa, co pozwala na uruchomienie nowej domeny dla pojedynczych użytkowników w ciągu kilku minut. Podziel się swoimi przemyśleniami w sekcji komentarzy!
O autorach
Shweta Singh jest starszym menedżerem produktu w zespole platformy Amazon SageMaker Machine Learning (ML) w AWS, kierującym pakietem SDK SageMaker Python. Przez ponad 5 lat pracowała na kilku stanowiskach produktowych w Amazon. Uzyskała tytuł licencjata w dziedzinie inżynierii komputerowej oraz tytuł magistra w dziedzinie inżynierii finansowej na Uniwersytecie Nowojorskim
Eitana Seli jest architektem rozwiązań generatywnej sztucznej inteligencji i uczenia maszynowego w AWS. Współpracuje z klientami AWS, zapewniając wskazówki i pomoc techniczną, pomagając im budować i obsługiwać rozwiązania generatywnej sztucznej inteligencji i uczenia maszynowego w AWS. W wolnym czasie Eitan lubi jogging i czytanie najnowszych artykułów na temat uczenia maszynowego.
Pranava Murthy’ego jest architektem rozwiązań specjalistycznych AI/ML w AWS. Koncentruje się na pomaganiu klientom w budowaniu, szkoleniu, wdrażaniu i migracji obciążeń uczenia maszynowego (ML) do SageMaker. Wcześniej pracował w branży półprzewodników, opracowując duże modele widzenia komputerowego (CV) i przetwarzania języka naturalnego (NLP) w celu ulepszenia procesów półprzewodnikowych przy użyciu najnowocześniejszych technik ML. W wolnym czasie lubi grać w szachy i podróżować. Możesz znaleźć Pranav na LinkedIn.
Mufaddal Rohawala jest inżynierem oprogramowania w AWS. Pracuje nad biblioteką SageMaker Python SDK dla Amazon SageMaker. W wolnym czasie podróżuje, aktywnie spędza czas na świeżym powietrzu i jest fanem piłki nożnej.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoData.Network Pionowe generatywne AI. Wzmocnij się. Dostęp tutaj.
- PlatoAiStream. Inteligencja Web3. Wiedza wzmocniona. Dostęp tutaj.
- PlatonESG. Węgiel Czysta technologia, Energia, Środowisko, Słoneczny, Gospodarowanie odpadami. Dostęp tutaj.
- Platon Zdrowie. Inteligencja w zakresie biotechnologii i badań klinicznych. Dostęp tutaj.
- Źródło: https://aws.amazon.com/blogs/machine-learning/accelerate-ml-workflows-with-amazon-sagemaker-studio-local-mode-and-docker-support/