Analitycy danych często szkolą swoje modele lokalnie i szukają odpowiedniej usługi hostingowej, aby wdrożyć swoje modele. Niestety, nie ma jednego ustalonego mechanizmu ani przewodnika po wdrażaniu wstępnie wytrenowanych modeli w chmurze. W tym poście przyjrzymy się wdrażaniu przeszkolonych modeli do Amazon Sage Maker hosting w celu skrócenia czasu wdrożenia.
SageMaker to w pełni zarządzana usługa uczenia maszynowego (ML). Dzięki SageMaker możesz szybko budować i trenować modele ML oraz bezpośrednio wdrażać je w hostowanym środowisku gotowym do produkcji. Dodatkowo nie musisz zarządzać serwerami. Otrzymujesz zintegrowane środowisko notatników Jupyter z łatwym dostępem do źródeł danych. Możesz przeprowadzać analizę danych, trenować modele i testować je przy użyciu własnych algorytmów lub korzystać z algorytmów ML dostarczonych przez firmę SageMaker, które są zoptymalizowane pod kątem wydajnej pracy z dużymi zestawami danych rozmieszczonymi na wielu komputerach. Szkolenie i hosting są rozliczane według minut użytkowania, bez opłat minimalnych i bez zobowiązań z góry.
Omówienie rozwiązania
Naukowcy zajmujący się danymi czasami szkolą modele lokalnie przy użyciu swojego środowiska IDE i albo wysyłają te modele do zespołu inżynierów ML w celu wdrożenia, albo po prostu uruchamiają prognozy lokalnie na potężnych maszynach. W tym poście przedstawiamy bibliotekę Pythona, która upraszcza proces wdrażania modeli w SageMaker for Hosting na punktach końcowych w czasie rzeczywistym lub bezserwerowych.
Ta biblioteka Pythona zapewnia naukowcom zajmującym się danymi prosty interfejs umożliwiający szybkie rozpoczęcie pracy z SageMakerem bez konieczności znajomości jakiejkolwiek niskopoziomowej funkcjonalności SageMaker.
Jeśli masz modele przeszkolone lokalnie przy użyciu preferowanego środowiska IDE i chcesz skorzystać ze skali chmury, możesz użyć tej biblioteki do wdrożenia modelu w programie SageMaker. Dzięki SageMaker, oprócz wszystkich korzyści związanych ze skalowaniem platformy ML opartej na chmurze, masz dostęp do specjalnie zaprojektowanych narzędzi szkoleniowych (szkolenie rozproszone, dostrajanie hiperparametrów), zarządzanie eksperymentami, zarządzanie modelami, wykrywanie stronniczości, wyjaśnianie modelu i wiele innych możliwości, które mogą pomóc w dowolnym aspekcie cyklu życia ML. Możesz wybierać spośród trzech najpopularniejszych frameworków dla ML: Scikit-learn, PyTorch i TensorFlow, i możesz wybrać żądany typ obliczeń. Po drodze dostępne są ustawienia domyślne, dzięki czemu użytkownicy tej biblioteki mogą wdrażać swoje modele bez konieczności podejmowania złożonych decyzji lub uczenia się nowych koncepcji. W tym poście pokazujemy, jak zacząć korzystać z tej biblioteki i zoptymalizować wdrażanie modeli ML na hostingu SageMaker.
Bibliotekę można znaleźć w Repozytorium GitHub.
Zestaw narzędzi do migracji SageMaker
Połączenia SageMakerMigration
klasa jest dostępna za pośrednictwem biblioteki Pythona opublikowanej na GitHub. Instrukcje instalacji tej biblioteki znajdują się w repozytorium; upewnij się, że postępujesz zgodnie z README, aby poprawnie skonfigurować swoje środowisko. Po zainstalowaniu tej biblioteki pozostała część tego postu mówi o tym, jak z niej korzystać.
Połączenia SageMakerMigration
Klasa składa się z abstrakcji wysokiego poziomu nad interfejsami API SageMaker, które znacznie zmniejszają liczbę kroków potrzebnych do wdrożenia modelu w programie SageMaker, jak pokazano na poniższym rysunku. Jest to przeznaczone do eksperymentowania, dzięki czemu programiści mogą szybko rozpocząć i przetestować SageMaker. Nie jest przeznaczony do migracji produkcyjnych.
W przypadku modeli Scikit-learn, PyTorch i TensorFlow ta biblioteka obsługuje wdrażanie przeszkolonych modeli do punktu końcowego czasu rzeczywistego SageMaker lub punktu końcowego bezserwerowego. Aby dowiedzieć się więcej o opcjach wnioskowania w programie SageMaker, zobacz Wdrażaj modele do wnioskowania.
Punkty końcowe w czasie rzeczywistym a bezserwerowe
Wnioskowanie w czasie rzeczywistym jest idealne w przypadku obciążeń wnioskowania, w których występują wymagania w czasie rzeczywistym, interaktywne i o niskim opóźnieniu. Możesz wdrożyć swój model w usługach hostingowych SageMaker i uzyskać punkt końcowy, którego można użyć do wnioskowania. Te punkty końcowe są w pełni zarządzane i obsługują automatyczne skalowanie.
SageMaker Serverless Inference to specjalnie opracowana opcja wnioskowania, która ułatwia wdrażanie i skalowanie modeli ML. Wnioskowanie bezserwerowe jest idealne w przypadku obciążeń, które mają okresy bezczynności między nagłymi wzrostami ruchu i mogą tolerować zimne rozruchy. Bezserwerowe punkty końcowe automatycznie uruchamiają zasoby obliczeniowe i skalują je w zależności od ruchu, eliminując potrzebę wybierania typów wystąpień lub zarządzania zasadami skalowania. Eliminuje to niezróżnicowany ciężar związany z wyborem serwerów i zarządzaniem nimi.
W zależności od przypadku użycia możesz chcieć szybko hostować swój model w programie SageMaker bez faktycznego posiadania instancji i ponoszenia kosztów, w takim przypadku bezserwerowy punkt końcowy jest doskonałym rozwiązaniem.
Przygotuj wyszkolony model i skrypt wnioskowania
Po zidentyfikowaniu modelu, który chcesz wdrożyć w programie SageMaker, musisz upewnić się, że model zostanie przedstawiony firmie SageMaker we właściwym formacie. Punkty końcowe programu SageMaker zazwyczaj składają się z dwóch składników: wytrenowanego artefaktu modelu (.pth, .pkl itd.) oraz skryptu wnioskowania. Skrypt wnioskowania nie zawsze jest obowiązkowy, ale jeśli nie zostanie podany, zostaną zastosowane domyślne procedury obsługi dla używanego kontenera udostępniania. Niezbędne jest dostarczenie tego skryptu, jeśli chcesz dostosować funkcje wejścia/wyjścia do wnioskowania.
Wytrenowany artefakt modelu to po prostu zapisany model Scikit-learn, PyTorch lub TensorFlow. Dla Scikit-learn jest to zazwyczaj plik pickle, dla PyTorch jest to plik .pt lub .pth, a dla TensorFlow jest to folder z zasobami, plikami .pb i innymi zmiennymi.
Ogólnie rzecz biorąc, musisz mieć możliwość kontrolowania sposobu, w jaki model przetwarza dane wejściowe i wykonuje wnioskowanie, a także kontrolować format wyjściowy odpowiedzi. Dzięki SageMaker możesz zapewnić skrypt wnioskowania aby dodać to dostosowanie. Każdy skrypt wnioskowania używany przez SageMaker musi mieć co najmniej jedną z następujących czterech funkcji obsługi: model_fn
, input_fn
, predict_fn
, output_fn
.
Zwróć uwagę, że te cztery funkcje dotyczą PyTorch i Nauka scikitu konkretnie pojemniki. TensorFlow ma nieco inne funkcje obsługi, ponieważ jest zintegrowany z Obsługa TensorFlow. W przypadku skryptu wnioskowania z TensorFlow masz dwa obsługa modeli: input_handler i output_handler. Ponownie, mają one ten sam cel przetwarzania wstępnego i końcowego, z którym można pracować, ale są nieco inaczej skonfigurowane pod kątem integracji z Obsługa TensorFlow. W przypadku modeli PyTorch model_fn jest obowiązkową funkcją w skrypcie wnioskowania.
model_fn
Jest to funkcja, która jest wywoływana po raz pierwszy podczas wywoływania punktu końcowego programu SageMaker. Tutaj piszesz swój kod, aby załadować model. Na przykład:
W zależności od struktury i typu modelu ten kod może ulec zmianie, ale funkcja musi zwrócić zainicjowany model.
wejście_fn
Jest to druga funkcja, która jest wywoływana po wywołaniu punktu końcowego. Ta funkcja pobiera dane wysyłane do punktu końcowego w celu wnioskowania i analizuje je w formacie wymaganym do wygenerowania prognozy przez model. Na przykład:
Połączenia request_body
zawiera dane, które mają być użyte do generowania wnioskowania z modelu i są analizowane w tej funkcji, tak aby były w wymaganym formacie.
przewidywać_fn
Jest to trzecia funkcja, która jest wywoływana podczas wywoływania modelu. Ta funkcja pobiera wstępnie przetworzone dane wejściowe zwrócone z input_fn
i używa modelu zwróconego z model_fn
dokonać prognozy. Na przykład:
Możesz opcjonalnie dodać output_fn
przeanalizować wynik predict_fn
przed zwróceniem go klientowi. Sygnatura funkcji to def output_fn(prediction, content_type)
.
Przenieś swój wytrenowany model do SageMaker
Po uzyskaniu wytrenowanego pliku modelu i skryptu wnioskowania należy umieścić te pliki w folderze w następujący sposób:
Po przygotowaniu i zapisaniu modelu i skryptu wnioskowania w tej strukturze folderów model jest gotowy do wdrożenia w programie SageMaker. Zobacz następujący kod:
Po wdrożeniu punktu końcowego upewnij się, że wszystkie zasoby, z których nie będziesz korzystać, wyczyść za pomocą konsoli SageMaker lub usuń_punkt końcowy Wywołanie Boto3 API.
Wnioski
Celem projektu SageMaker Migration Toolkit jest ułatwienie analitykom danych dołączania ich modeli do programu SageMaker w celu korzystania z wnioskowania opartego na chmurze. Repozytorium będzie nadal ewoluować i obsługiwać więcej opcji migracji obciążeń do SageMaker. Kod jest open source i zapraszamy do wkładu społeczności poprzez prośby i problemy.
Zapoznaj się z Repozytorium GitHub aby dowiedzieć się więcej na temat korzystania z zestawu narzędzi migracji SageMaker, a także przekaż przykłady lub prośby o dodanie funkcji do projektu!
O autorach
Kirita Thadaki jest architektem ML Solutions pracującym w zespole Amazon SageMaker Service SA. Przed dołączeniem do AWS Kirit spędził trochę czasu pracując we wczesnych etapach start-upów AI, a następnie konsultując się na różnych stanowiskach w badaniach AI, MLOps i przywództwie technicznym.
Ram Vegiraju jest architektem ML w zespole SageMaker Service. Koncentruje się na pomaganiu klientom w budowaniu i optymalizowaniu ich rozwiązań AI/ML w Amazon SageMaker. W wolnym czasie uwielbia podróżować i pisać.
- 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
- Średni (200)
- uczenie maszynowe
- plato
- Platon Ai
- Analiza danych Platona
- Gra Platona
- PlatoDane
- platogaming
- skala ai
- składnia
- zefirnet