Trening przyrostowy z Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Trening przyrostowy z Amazon SageMaker JumpStart

W grudniu 2020, AWS ogłosiło ogólną dostępność Amazon SageMaker JumpStart, zdolność Amazon Sage Maker który pomaga szybko i łatwo rozpocząć pracę z uczeniem maszynowym (ML). SageMaker Szybki start zapewnia dostrajanie jednym kliknięciem i wdrażanie szerokiej gamy wstępnie przeszkolonych modeli w popularnych zadaniach ML, a także wybór kompleksowych rozwiązań, które rozwiązują typowe problemy biznesowe. Te funkcje eliminują konieczność podnoszenia ciężarów na każdym etapie procesu ML, ułatwiając opracowywanie modeli wysokiej jakości i skracając czas wdrażania.

Cała zawartość JumpStart była wcześniej dostępna tylko przez Studio Amazon SageMaker, który zapewnia przyjazny dla użytkownika interfejs graficzny do interakcji z funkcją. Ostatnio my również ogłosił rozpoczęcie łatwy w obsłudze Interfejsy API JumpStart jako rozszerzenie pakietu SDK SageMaker Python, umożliwiające programowe wdrażanie i dostrajanie szerokiej gamy wstępnie wytrenowanych modeli obsługiwanych przez JumpStart we własnych zestawach danych. To uruchomienie odblokowuje wykorzystanie funkcji JumpStart w przepływach pracy kodu, potokach MLOps i wszędzie tam, gdzie komunikujesz się z SageMaker za pośrednictwem SDK.

W tym poście z przyjemnością informujemy, że wszystkie możliwe do trenowania modele JumpStart obsługują teraz szkolenie przyrostowe. Uczenie przyrostowe umożliwia trenowanie modelu, który został już dostrojony, przy użyciu rozszerzonego zestawu danych, który zawiera podstawowy wzorzec, który nie został uwzględniony w poprzednich przebiegach dostrajania, co skutkowało niską wydajnością modelu. Szkolenie przyrostowe oszczędza czas i zasoby, ponieważ nie trzeba ponownie trenować modelu od podstaw. Jeśli chcesz przejść od razu do kodu API JumpStart, który wyjaśniamy w tym poście, możesz zapoznać się z przykładowy notatnik.

Przegląd programu JumpStart

JumpStart to wieloaspektowy produkt, który oferuje różne możliwości, które ułatwiają szybkie rozpoczęcie pracy z ML w programie SageMaker. W chwili pisania tego tekstu JumpStart umożliwia wykonanie następujących czynności:

  • Wdrażaj wstępnie wytrenowane modele do typowych zadań ML – JumpStart umożliwia rozwiązywanie typowych zadań ML bez wysiłku programistycznego, zapewniając łatwe wdrażanie modeli wstępnie wytrenowanych na dużych, publicznie dostępnych zestawach danych. Społeczność naukowa zajmująca się ML włożyła wiele wysiłku w publiczne udostępnienie do użytku większości niedawno opracowanych modeli; JumpStart zawiera kolekcję ponad 300 modeli, obejmującą 15 najpopularniejszych zadań ML, takich jak wykrywanie obiektów, klasyfikacja tekstu i generowanie tekstu, dzięki czemu korzystanie z nich jest łatwe dla początkujących. Modele te pochodzą z popularnych koncentratorów modeli, takich jak TensorFlow, PyTorch, Hugging Face i MXNet Hub.
  • Dostosuj wstępnie wytrenowane modele – JumpStart umożliwia precyzyjne dostrojenie wstępnie wytrenowanych modeli bez konieczności pisania własnego algorytmu treningowego. W ML umiejętność transferu wiedzy wyuczonej w jednej dziedzinie do drugiej nazywa się przenieś naukę. Możesz użyć uczenia transferu do tworzenia dokładnych modeli na mniejszych zestawach danych, przy znacznie niższych kosztach uczenia niż te związane z trenowaniem oryginalnego modelu. JumpStart zawiera również popularne algorytmy szkoleniowe oparte na LightGBM, CatBoost, XGBoost i Scikit-learn, które można trenować od podstaw pod kątem regresji tabelarycznej i klasyfikacji.
  • Korzystaj z gotowych rozwiązań – JumpStart zapewnia zestaw 17 rozwiązań dla typowych przypadków użycia ML, takich jak prognozowanie popytu oraz aplikacje przemysłowe i finansowe, które można wdrożyć za pomocą kilku kliknięć. Rozwiązania to kompleksowe aplikacje ML, które łączą różne usługi AWS w celu rozwiązania określonego biznesowego przypadku użycia. Oni używają Tworzenie chmury AWS szablony i architektury referencyjne do szybkiego wdrażania, co oznacza, że ​​można je w pełni dostosować.
  • Użyj przykładów z notatników dla algorytmów SageMaker – SageMaker zapewnia zestaw wbudowanych algorytmów, które pomagają naukowcom danych i praktykom ML w szybkim rozpoczęciu szkolenia i wdrażania modeli ML. JumpStart udostępnia przykładowe notesy, których można użyć do szybkiego zastosowania tych algorytmów.
  • Przejrzyj filmy szkoleniowe i blogi – JumpStart udostępnia również liczne posty na blogu i filmy, które uczą, jak korzystać z różnych funkcji w SageMaker.

JumpStart akceptuje niestandardowe ustawienia VPC i Usługa zarządzania kluczami AWS (AWS KMS) klucze szyfrowania, dzięki którym możesz bezpiecznie korzystać z dostępnych modeli i rozwiązań w swoim środowisku korporacyjnym. Możesz przekazać swoje ustawienia bezpieczeństwa do JumpStart w Studio lub za pomocą pakietu SDK SageMaker Python.

Klasyfikacja obrazu

Klasyfikacja obrazu odnosi się do klasyfikowania obrazu do jednej z etykiet klas w uczącym zestawie danych. Możesz dostosować model do dowolnego zestawu danych zawierającego obrazy należące do dowolnej liczby klas. Model dostępny do dostrajania w programie JumpStart dołącza warstwę klasyfikacji do odpowiedniego modelu ekstraktora cech i inicjalizuje parametry warstwy do wartości losowych. Wyjściowy wymiar warstwy klasyfikacyjnej jest określany na podstawie liczby klas w danych wejściowych. Krok dostrajania dostraja parametry warstwy klasyfikacji, zachowując zamrożone parametry modelu ekstraktora cech i zwraca model dostrojony. Celem jest zminimalizowanie błędu predykcji w danych wejściowych.

W przypadku naszego zbioru danych dane wejściowe to katalog z tyloma podkatalogami, ile jest klas. Każdy podkatalog powinien zawierać obrazy należące do tej klasy w formacie .jpg. Katalog wejściowy powinien wyglądać jak poniższa hierarchia, jeśli dane szkoleniowe zawierają obrazy z dwóch klas: roses i dandelion:

input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg

Nazwy folderów, klas i plików .jpg mogą być dowolne.

Zapewniamy tf_flowers1 dataset jako domyślny zestaw danych do dostrajania modelu. Ten zbiór danych zawiera obrazy pięciu rodzajów kwiatów. Zbiór danych został pobrany z TensorFlow.

Przegląd instruktażowy

Poniższe sekcje zawierają demonstrację krok po kroku, jak przeprowadzić klasyfikację obrazów za pomocą JumpStart, zarówno za pośrednictwem interfejsu użytkownika Studio, jak i interfejsów API JumpStart.

Przechodzimy przez następujące kroki:

  1. Uzyskaj dostęp do JumpStart za pośrednictwem interfejsu użytkownika Studio:
    1. Dostosuj wstępnie wytrenowany model.
    2. Wdróż dostosowany model.
    3. Stopniowo trenuj dopracowany model i wdrażaj ponownie.
  2. Używaj JumpStart programowo z pakietem SDK SageMaker Python:
    1. Dostosuj wstępnie wytrenowany model.
    2. Wdróż dostosowany model.
    3. Stopniowo trenuj dopracowany model i wdrażaj ponownie.

Uzyskaj dostęp do JumpStart przez interfejs użytkownika Studio

W tej sekcji pokazujemy, jak dostrajać i wdrażać modele JumpStart za pomocą interfejsu użytkownika Studio. Dodatkowo pokazujemy, jak przyrostowo trenować model, który wcześniej dopracowałeś.

Dostosuj wstępnie wytrenowany model

Poniższy film pokazuje, jak znaleźć wstępnie wytrenowany model klasyfikacji obrazów w programie JumpStart i dostroić go. Strona modelu zawiera cenne informacje o modelu, sposobie jego używania, oczekiwanym formacie danych i niektórych szczegółach dostrajania.

W celach demonstracyjnych dostrajamy model, korzystając z zestawu danych dostarczonego domyślnie, którym jest tf_flowers zbiór danych składający się z różnych odmian kwiatów. Dostrajanie własnego zestawu danych polega na prawidłowym formatowaniu danych (jak wyjaśniono na stronie modelu), przesłaniu ich do Usługa Amazon Simple Storage (Amazon S3) i określenie jego lokalizacji w konfiguracji źródła danych.

Używamy tych samych wartości hiperparametrów ustawionych domyślnie (liczba epok, szybkość uczenia się i wielkość partii). Używamy również instancji ml.p3.2xlarge wspieranej przez GPU jako naszej instancji szkoleniowej SageMaker.

Możesz monitorować swoje zadanie szkoleniowe bezpośrednio w konsoli Studio i otrzymywać powiadomienia o jego zakończeniu.

Wdróż dostrojony model

Po zakończeniu szkolenia możesz wdrożyć dostrojony model z tej samej strony, na której znajdują się szczegóły zadania szkoleniowego. Aby wdrożyć nasz model, wybieramy inny typ instancji, ml.p2.xlarge. Nadal zapewnia akcelerację GPU niezbędną do niskich opóźnień wnioskowania, ale za niższą cenę. Po skonfigurowaniu instancji hostingu SageMaker wybierz Rozmieścić. Uruchomienie trwałego punktu końcowego może zająć 5–10 minut.

Wtedy twój punkt końcowy jest gotowy do działania i gotowy do odpowiedzi na żądania wnioskowania!

Aby przyspieszyć Twój czas na wnioskowanie, JumpStart udostępnia przykładowy notes, który pokazuje, jak uruchomić wnioskowanie na świeżo wdrożonym punkcie końcowym. Wybierać Otwórz notatnik dla Użyj punktu końcowego od Studio.

Stopniowo trenuj dopracowany model i wdrażaj

Po zakończeniu dostrajania możesz dalej trenować model, aby zwiększyć wydajność. Ten krok jest bardzo podobny do początkowego procesu dostrajania, z tą różnicą, że jako punkt wyjścia używamy już dostrojonego modelu. Możesz użyć nowych danych, ale format zestawu danych musi być taki sam (ten sam zestaw klas).

Używaj programu JumpStart z pakietem SDK SageMaker

W poprzednich sekcjach pokazaliśmy, w jaki sposób można użyć interfejsu użytkownika JumpStart do dostrojenia, wdrożenia i przyrostowego interaktywnego trenowania modelu za pomocą kilku kliknięć. Możesz także używać modeli JumpStart i łatwego dostrajania programowo za pomocą interfejsów API zintegrowanych z pakietem SDK SageMaker. Omówimy teraz krótki przykład, w jaki sposób można zreplikować poprzedni proces. Wszystkie kroki w tym demo są dostępne w dołączonych notatnikach Wprowadzenie do programu JumpStart — klasyfikacja obrazów.

Dostosuj wstępnie wytrenowany model

Aby dostroić wybrany model, musimy uzyskać identyfikator URI tego modelu, a także skrypt uczący i obraz kontenera używany do uczenia. Na szczęście te trzy dane wejściowe zależą wyłącznie od nazwy modelu, wersji (lista dostępnych modeli znajduje się w Tabela dostępnych modeli JumpStart) i typ instancji, na której chcesz trenować. Widać to w następującym fragmencie kodu:

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=model_id, model_version=model_version, image_scope="training", instance_type=training_instance_type,
) # Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

Odzyskujemy model_id odpowiadający temu samemu modelowi, którego używaliśmy wcześniej. IC w identyfikatorze odpowiada klasyfikacji obrazu.

Możesz teraz dostroić ten model JumpStart we własnym, niestandardowym zestawie danych, korzystając z pakietu SageMaker SDK. Używamy tego samego tf_flowers zbiór danych, który jest publicznie hostowany na Amazon S3, dogodnie skoncentrowany na analizie nastrojów. Twój zbiór danych powinien być ustrukturyzowany w celu dostrojenia, jak wyjaśniono w poprzedniej sekcji. Zobacz następujący przykładowy kod:

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
ic_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Otrzymujemy te same domyślne hiperparametry dla naszego wybranego modelu, co te, które widzieliśmy w poprzedniej sekcji, używając sagemaker.hyperparameters.retrieve_default(). Następnie tworzymy instancję estymatora SageMaker i wywołujemy metodę .fit, aby rozpocząć dostrajanie naszego modelu, przekazując mu identyfikator URI Amazon S3 dla naszych danych treningowych. Jak widać, entry_point podany skrypt ma nazwę transfer_learning.py (tak samo dla innych zadań i modeli), a kanał danych wejściowych przekazywany do .fit musi być nazwany training.

Wdrażanie dostrojonego modelu

Po zakończeniu szkolenia możesz wdrożyć swój dostrojony model. Aby to zrobić, wszystko, co musimy uzyskać, to identyfikator URI skryptu wnioskowania (kod, który określa, w jaki sposób model jest używany do wnioskowania po wdrożeniu) oraz identyfikator URI obrazu kontenera wnioskowania, który zawiera odpowiedni serwer modelu do hostowania wybranego przez nas modelu. Zobacz następujący kod:

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve( model_id=model_id, model_version=model_version, script_scope="inference"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

Po kilku minutach nasz model zostaje wdrożony i możemy uzyskać z niego prognozy w czasie rzeczywistym!

Następnie wywołujemy punkt końcowy, aby przewidzieć, jaki rodzaj kwiatów istnieje na przykładowym obrazie. Używamy query_endpoint i parse_response funkcje pomocnicze, które są zdefiniowane w załączonym notatnik.

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

Stopniowo trenuj dopracowany model i wdrażaj ponownie

Możemy zwiększyć wydajność dostrojonego modelu poprzez dalsze szkolenie go na nowych obrazach. Możesz użyć do tego dowolnej liczby nowych lub starych obrazów, jednak format zestawu danych musi pozostać ten sam (ten sam zestaw klas). Etap uczenia przyrostowego jest podobny do procesu dostrajania, z istotną różnicą: w początkowym dostrajaniu zaczynamy od wstępnie wytrenowanego modelu, podczas gdy w uczeniu przyrostowym zaczynamy od istniejącego, dostrojonego modelu. Zobacz następujący kod:

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Po zakończeniu szkolenia możemy wykonać te same kroki, które opisano w poprzedniej sekcji, aby wdrożyć model.

Wnioski

JumpStart to funkcja programu SageMaker, która umożliwia szybkie rozpoczęcie pracy z ML. JumpStart wykorzystuje wstępnie wytrenowane modele typu open source do rozwiązywania typowych problemów związanych z ML, takich jak klasyfikacja obrazów, wykrywanie obiektów, klasyfikacja tekstu, klasyfikacja par zdań i odpowiadanie na pytania.

W tym poście pokazaliśmy, jak dostroić i wdrożyć wstępnie wytrenowany model klasyfikacji obrazów. Pokazaliśmy również, jak stopniowo trenować dostrojony model do klasyfikacji obrazów. Dzięki JumpStart możesz łatwo wykonać ten proces bez konieczności kodowania. Wypróbuj rozwiązanie samodzielnie i daj nam znać w komentarzach. Aby dowiedzieć się więcej o JumpStart, obejrzyj film AWS re:Invent 2020 Rozpocznij pracę z ML w kilka minut dzięki Amazon SageMaker JumpStart.

Referencje

  1. Zespół TensorFlow, 2019

O autorach

Trening przyrostowy z Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Dr Vivek Madan jest naukowcem w zespole Amazon SageMaker JumpStart. Doktoryzował się. z University of Illinois w Urbana-Champaign i był badaczem podoktoranckim w Georgia Tech. Jest aktywnym badaczem uczenia maszynowego i projektowania algorytmów, publikował artykuły na konferencjach EMNLP, ICLR, COLT, FOCS i SODA.

Trening przyrostowy z Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Joao Moura jest specjalistą ds. rozwiązań AI/ML w Amazon Web Services. Koncentruje się głównie na przypadkach użycia NLP i pomaga klientom zoptymalizować szkolenie i wdrażanie modelu uczenia głębokiego. Jest również aktywnym zwolennikiem rozwiązań ML typu low-code oraz sprzętu wyspecjalizowanego w ML.

Trening przyrostowy z Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Dr Ashish Khetan jest Starszym Naukowcem Stosowanym z Amazon SageMaker JumpStart i Wbudowane algorytmy Amazon SageMaker i pomaga rozwijać algorytmy uczenia maszynowego. Jest aktywnym badaczem uczenia maszynowego i wnioskowania statystycznego oraz opublikował wiele artykułów na konferencjach NeurIPS, ICML, ICLR, JMLR, ACL i EMNLP.

Znak czasu:

Więcej z Uczenie maszynowe AWS