Transfer nauki dla modeli klasyfikacji tekstu TensorFlow w Amazon SageMaker

Amazon Sage Maker zapewnia pakiet wbudowane algorytmy, wstępnie wytrenowane modele, gotowe szablony rozwiązań aby pomóc naukowcom danych i praktykom uczenia maszynowego (ML) w szybkim rozpoczęciu szkolenia i wdrażania modeli ML. Możesz używać tych algorytmów i modeli zarówno do uczenia nadzorowanego, jak i nienadzorowanego. Mogą przetwarzać różne typy danych wejściowych, w tym tabelaryczne, graficzne i tekstowe.

Ten post jest trzecim z serii na temat nowych wbudowanych algorytmów w SageMakerze. w pierwszy post, pokazaliśmy, jak SageMaker zapewnia wbudowany algorytm klasyfikacji obrazów. w drugi post, pokazaliśmy, jak SageMaker zapewnia wbudowany algorytm wykrywania obiektów. Dziś ogłaszamy, że SageMaker udostępnia nowy wbudowany algorytm klasyfikacji tekstu przy użyciu TensorFlow. Ten nadzorowany algorytm uczenia obsługuje uczenie transferu dla wielu wstępnie wytrenowanych modeli dostępnych w Piasta TensorFlow. Pobiera fragment tekstu jako dane wejściowe i wyprowadza prawdopodobieństwo dla każdej z etykiet klas. Możesz dostroić te wstępnie wytrenowane modele za pomocą uczenia transferu, nawet jeśli duży korpus tekstu nie jest dostępny. Jest dostępny przez SageMaker wbudowane algorytmy, a także poprzez Interfejs programu SageMaker JumpStart in Studio Amazon SageMaker. Aby uzyskać więcej informacji, zobacz Klasyfikacja tekstu i przykładowy notatnik Wprowadzenie do JumpStart – klasyfikacja tekstu.

Klasyfikacja tekstu za pomocą TensorFlow w programie SageMaker zapewnia naukę transferu na wielu wstępnie wytrenowanych modelach dostępnych w TensorFlow Hub. Zgodnie z liczbą etykiet klas w danych uczących do wstępnie wytrenowanego modelu centrum TensorFlow dołączana jest warstwa klasyfikacji. Warstwa klasyfikacyjna składa się z warstwy przerywanej i warstwy gęstej, w pełni połączonej warstwy, z 2-normowym regulatorem, który jest inicjowany losowymi wagami. Trening modelu ma hiperparametry dla szybkości porzucania warstwy porzucania i współczynnik regularyzacji L2 dla warstwy gęstej. Następnie można dostroić całą sieć, w tym wstępnie wytrenowany model, lub tylko najwyższą warstwę klasyfikacji na nowych danych uczących. W tym trybie uczenia transferu można przeprowadzić szkolenie nawet przy mniejszym zbiorze danych.

Jak korzystać z nowego algorytmu klasyfikacji tekstu TensorFlow

W tej sekcji opisano, jak używać algorytmu klasyfikacji tekstu TensorFlow w połączeniu z SageMaker SDK dla Pythona. Aby uzyskać informacje o tym, jak z niego korzystać w interfejsie użytkownika Studio, zobacz SageMaker Szybki start.

Algorytm obsługuje uczenie transferu dla wstępnie wytrenowanych modeli wymienionych w Modele Tensorflow. Każdy model jest oznaczony unikalnym model_id. Poniższy kod pokazuje, jak dostroić model bazowy BERT identyfikowany przez model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 na niestandardowym zestawie danych treningowych. Dla każdego model_id, aby uruchomić zadanie szkoleniowe SageMaker poprzez Taksator klasy SageMaker Python SDK, musisz pobrać identyfikator URI obrazu platformy Docker, identyfikator URI skryptu szkoleniowego i wstępnie wytrenowany identyfikator URI modelu za pomocą funkcji narzędziowych dostępnych w programie SageMaker. Identyfikator URI skryptu szkoleniowego zawiera cały kod niezbędny do przetwarzania danych, ładowania wstępnie wytrenowanego modelu, trenowania modelu i zapisywania przeszkolonego modelu do wnioskowania. Wstępnie wytrenowany identyfikator URI modelu zawiera wstępnie wytrenowaną definicję architektury modelu i parametry modelu. Wstępnie wytrenowany identyfikator URI modelu jest specyficzny dla konkretnego modelu. Wstępnie wytrenowane archiwum modeli zostały wstępnie pobrane z TensorFlow i zapisane z odpowiednią sygnaturą modelu w Usługa Amazon Simple Storage (Amazon S3), dzięki czemu zadanie szkoleniowe działa w izolacji sieciowej. Zobacz następujący kod:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# 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 for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Dzięki tym artefaktom treningowym specyficznym dla modelu można skonstruować obiekt Taksator klasa:

# Create SageMaker Estimator instance
tf_tc_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,)

Następnie, w celu przeniesienia uczenia się na niestandardowym zestawie danych, może być konieczna zmiana domyślnych wartości hiperparametrów uczenia, które są wymienione w Hiperparametry. Możesz pobrać słownik Pythona tych hiperparametrów z ich domyślnymi wartościami, wywołując hyperparameters.retrieve_default, zaktualizuj je w razie potrzeby, a następnie przekaż je do klasy Estimator. Zauważ, że wartości domyślne niektórych hiperparametrów są różne dla różnych modeli. W przypadku dużych modeli domyślny rozmiar partii jest mniejszy, a train_only_top_layer hiperparametr jest ustawiony na True. Hiperparametr Train_only_top_layer definiuje, które parametry modelu zmieniają się podczas procesu dostrajania. Jeśli train_only_top_layer is True, wówczas parametry warstw klasyfikacyjnych zmieniają się, a reszta parametrów pozostaje stała podczas procesu dostrajania. Z drugiej strony, jeśli train_only_top_layer is False, wtedy wszystkie parametry modelu są dostrajane. Zobacz następujący kod:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Zapewniamy SST2 jako domyślny zestaw danych do dostrajania modeli. Zestaw danych zawiera pozytywne i negatywne recenzje filmów. Został pobrany z TensorFlow dla Licencja Apache 2.0. Poniższy kod zawiera domyślny treningowy zestaw danych hostowany w zasobnikach S3.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/SST2/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Na koniec, aby uruchomić zadanie szkoleniowe SageMaker w celu dostrojenia modelu, wywołaj .fit na obiekcie klasy Estimator, jednocześnie przekazując lokalizację zestawu danych szkoleniowych Amazon S3:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Aby uzyskać więcej informacji o tym, jak używać nowego algorytmu klasyfikacji tekstu SageMaker TensorFlow do uczenia transferu w niestandardowym zestawie danych, wdrażać model dostrojony, uruchamiać wnioskowanie na wdrożonym modelu i wdrażać wstępnie wytrenowany model bez uprzedniego dostrajania w niestandardowym zestawie danych zobacz następujący przykładowy notatnik: Wprowadzenie do JumpStart – klasyfikacja tekstu.

Interfejs wejścia/wyjścia dla algorytmu klasyfikacji tekstu TensorFlow

Możesz dostroić każdy z przeszkolonych modeli wymienionych w Modele TensorFlow do dowolnego zestawu danych składającego się ze zdań tekstowych o dowolnej liczbie klas. Wstępnie wytrenowany model dołącza warstwę klasyfikacji do modelu osadzania tekstu i inicjuje parametry warstwy do wartości losowych. Wyjściowy wymiar warstwy klasyfikacji jest określany na podstawie liczby klas wykrytych w danych wejściowych. Celem jest zminimalizowanie błędów klasyfikacji w danych wejściowych. Model zwrócony przez dostrajanie może być dalej wdrażany do celów wnioskowania.

Poniższe instrukcje opisują sposób formatowania danych uczących w celu wprowadzenia do modelu:

  • Dane wejściowe — katalog zawierający plik data.csv. Każdy wiersz pierwszej kolumny powinien mieć etykiety klas w postaci liczb całkowitych z zakresu od 0 do liczby klas. Każdy wiersz drugiej kolumny powinien mieć odpowiednie dane tekstowe.
  • Dane wyjściowe — dostrojony model, który można wdrożyć do wnioskowania lub dalej trenować przy użyciu szkolenia przyrostowego. Wraz z modelami zapisywany jest plik mapujący indeksy klas do etykiet klas.

Poniżej znajduje się przykład wejściowego pliku CSV. Zauważ, że plik nie powinien mieć żadnego nagłówka. Plik powinien znajdować się w zasobniku S3 o ścieżce podobnej do następującej: s3://bucket_name/input_directory/. Zauważ, że końcowe / jest wymagane.

|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|

Wnioskowanie z algorytmem klasyfikacji tekstu TensorFlow

Wygenerowane modele mogą być hostowane w celu wnioskowania i wsparcia tekstu jako application/x-text Typ zawartości. Dane wyjściowe zawierają wartości prawdopodobieństwa, etykiety klas dla wszystkich klas oraz przewidywaną etykietę odpowiadającą indeksowi klasy o najwyższym prawdopodobieństwie zakodowanym w formacie JSON. Model przetwarza jeden ciąg na żądanie i wyświetla tylko jeden wiersz. Poniżej znajduje się przykład odpowiedzi w formacie JSON:

accept: application/json;verbose
{"probabilities": [prob_0, prob_1, prob_2, ...],
 "labels": [label_0, label_1, label_2, ...],
 "predicted_label": predicted_label}

If accept jest ustawione na application/json, wtedy model wyprowadza tylko prawdopodobieństwa. Więcej informacji na temat szkolenia i wnioskowania można znaleźć w przykładowym notatniku Wprowadzenie do Wprowadzenie do JumpStart – klasyfikacja tekstu.

Korzystaj z wbudowanych algorytmów programu SageMaker w interfejsie użytkownika JumpStart

Możesz także użyć klasyfikacji tekstu SageMaker TensorFlow i dowolnego innego wbudowanego algorytmu za pomocą kilku kliknięć za pośrednictwem interfejsu użytkownika JumpStart. JumpStart to funkcja programu SageMaker, która umożliwia trenowanie i wdrażanie wbudowanych algorytmów i wstępnie wytrenowanych modeli z różnych platform ML i centrów modeli za pośrednictwem interfejsu graficznego. Co więcej, umożliwia wdrażanie pełnoprawnych rozwiązań ML, które łączą modele ML i różne inne usługi AWS w celu rozwiązania docelowego przypadku użycia.

Poniżej znajdują się dwa filmy wideo, które pokazują, jak można odtworzyć ten sam proces dostrajania i wdrażania, który właśnie przeszliśmy, za pomocą kilku kliknięć za pomocą interfejsu użytkownika JumpStart.

Dostosuj wstępnie wytrenowany model

Oto proces dostrajania tego samego wstępnie wytrenowanego modelu klasyfikacji tekstu.

Wdróż dopracowany model

Po zakończeniu trenowania modelu można jednym kliknięciem bezpośrednio wdrożyć model w trwałym punkcie końcowym w czasie rzeczywistym.

Wnioski

W tym poście ogłosiliśmy uruchomienie wbudowanego algorytmu klasyfikacji tekstu SageMaker TensorFlow. Dostarczyliśmy przykładowy kod, jak wykonać uczenie transferu na niestandardowym zestawie danych przy użyciu wstępnie wytrenowanego modelu z koncentratora TensorFlow przy użyciu tego algorytmu.

Aby uzyskać więcej informacji, sprawdź dokumentacja i przykładowy notatnik Wprowadzenie do JumpStart – klasyfikacja tekstu.


O autorach

Transfer uczenia się dla modeli klasyfikacji tekstu TensorFlow w Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Dr Vivek Madan jest naukowcem z Zespół Amazon SageMaker JumpStart. Uzyskał doktorat na Uniwersytecie Illinois w Urbana-Champaign i był badaczem podoktoranckim w Georgia Tech. Jest aktywnym badaczem w dziedzinie uczenia maszynowego i projektowania algorytmów, publikował artykuły na konferencjach EMNLP, ICLR, COLT, FOCS i SODA.

Transfer uczenia się dla modeli klasyfikacji tekstu TensorFlow w Amazon SageMaker 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.

Transfer uczenia się dla modeli klasyfikacji tekstu TensorFlow w Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Dr Ashish Khetan jest Starszym Naukowcem Stosowanym z Wbudowane algorytmy Amazon SageMaker i pomaga rozwijać algorytmy uczenia maszynowego. Doktoryzował się na University of Illinois Urbana Champaign. Jest aktywnym badaczem uczenia maszynowego i wnioskowania statystycznego. Opublikował wiele artykułów na konferencjach NeurIPS, ICML, ICLR, JMLR, ACL i EMNLP.

Znak czasu:

Więcej z Uczenie maszynowe AWS