Nowe wbudowane algorytmy Amazon SageMaker do modelowania danych tabelarycznych: LightGBM, CatBoost, AutoGluon-Tabular i TabTransformer

Węzeł źródłowy: 1541386

Amazon Sage Maker zapewnia pakiet wbudowane algorytmy, wstępnie wytrenowane modele, gotowe szablony rozwiązań aby pomóc naukowcom zajmującym się danymi i praktykom uczenia maszynowego (ML) rozpocząć szybkie szkolenie i wdrażanie 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.

Od dzisiaj SageMaker udostępnia cztery nowe wbudowane algorytmy modelowania danych tabelarycznych: LightGBM, CatBoost, AutoGluon-Tabular i TabTransformer. Możesz używać tych popularnych, najnowocześniejszych algorytmów zarówno do zadań klasyfikacji tabelarycznej, jak i regresji. Są dostępne za pośrednictwem wbudowane algorytmy na konsoli SageMaker, a także przez Amazon SageMaker JumpStart Interfejs użytkownika wewnątrz Studio Amazon SageMaker.

Poniżej znajduje się lista czterech nowych wbudowanych algorytmów wraz z linkami do ich dokumentacji, przykładowych notatników i źródła.

Dokumenty Przykładowe notebooki Źródło
Algorytm LightGBM Regresja, Klasyfikacja LekkiGBM
Algorytm CatBoost Regresja, Klasyfikacja KotBoost
Algorytm tabelaryczny AutoGluon Regresja, Klasyfikacja AutoGluon-Tabela
Algorytm TabTransformer Regresja, Klasyfikacja Karta Transformator

W kolejnych sekcjach przedstawiamy krótki opis techniczny każdego algorytmu oraz przykłady uczenia modelu za pomocą pakietu SageMaker SDK lub SageMaker Jumpstart.

LekkiGBM

LekkiGBM to popularna i wydajna implementacja open-source algorytmu Gradient Boosting Decision Tree (GBDT). GBDT to nadzorowany algorytm uczenia, który próbuje dokładnie przewidzieć zmienną docelową, łącząc zestaw oszacowań z zestawu prostszych i słabszych modeli. LightGBM wykorzystuje dodatkowe techniki, aby znacznie poprawić wydajność i skalowalność konwencjonalnego GBDT.

KotBoost

KotBoost to popularna i wydajna implementacja open source algorytmu GBDT. W CatBoost wprowadzono dwa krytyczne postępy algorytmiczne: implementację zwiększania uporządkowanego, alternatywę dla klasycznego algorytmu sterowaną permutacją oraz innowacyjny algorytm przetwarzania cech kategorycznych. Obie techniki zostały stworzone w celu zwalczania przesunięcia predykcyjnego spowodowanego przez specjalny rodzaj wycieku docelowego obecnego we wszystkich obecnie istniejących implementacjach algorytmów zwiększania gradientu.

AutoGluon-Tabela

AutoGluon-Tabela to projekt AutoML o otwartym kodzie źródłowym opracowany i utrzymywany przez Amazon, który wykonuje zaawansowane przetwarzanie danych, głębokie uczenie i wielowarstwowe składanie stosów. Automatycznie rozpoznaje typ danych w każdej kolumnie, zapewniając solidne wstępne przetwarzanie danych, w tym specjalną obsługę pól tekstowych. AutoGluon pasuje do różnych modeli, od gotowych, wzmocnionych drzew po niestandardowe modele sieci neuronowych. Modele te są zestawiane w nowatorski sposób: modele są układane w wiele warstw i trenowane w sposób warstwowy, co gwarantuje, że nieprzetworzone dane można przełożyć na wysokiej jakości predykcje w określonym czasie. Nadmierne dopasowanie jest łagodzone w trakcie tego procesu, dzieląc dane na różne sposoby z uważnym śledzeniem przykładów, które nie są złożone. AutoGluon jest zoptymalizowany pod kątem wydajności, a jego gotowe użycie osiągnęło kilka pozycji w pierwszej trójce i pierwszej dziesiątce w konkursach data science.

Karta Transformator

Karta Transformator to nowatorska, głęboka architektura modelowania danych tabelarycznych do nadzorowanego uczenia się. TabTransformer jest zbudowany na transformatorach opartych na samouważności. Warstwy Transformer przekształcają osadzenia cech kategorialnych w solidne osadzenia kontekstowe, aby osiągnąć wyższą dokładność przewidywania. Ponadto osadzania kontekstowe, których nauczył się od TabTransformer, są wysoce odporne na brakujące i zaszumione funkcje danych oraz zapewniają lepszą interpretację. Ten model jest produktem najnowszych Nauka o Amazonii Badania (papier i urzędnik blogu tutaj) i został szeroko przyjęty przez społeczność ML, z różnymi implementacjami innych firm (KerasAutoGluon,) oraz funkcje mediów społecznościowych, takie jak tweetyw kierunku nauki o danych, średnie i Kaggle.

Korzyści z wbudowanych algorytmów SageMaker

Podczas wybierania algorytmu dla konkretnego typu problemu i danych, najłatwiej jest użyć wbudowanego algorytmu programu SageMaker, ponieważ wiąże się to z następującymi głównymi korzyściami:

  • Wbudowane algorytmy nie wymagają kodowania, aby rozpocząć przeprowadzanie eksperymentów. Jedyne dane wejściowe, które musisz podać, to dane, hiperparametry i zasoby obliczeniowe. Pozwala to na szybsze przeprowadzanie eksperymentów i mniejsze obciążenie związane ze śledzeniem wyników i zmianami w kodzie.
  • Wbudowane algorytmy są dostarczane z równoległością w wielu instancjach obliczeniowych i wsparciem GPU od razu dla wszystkich odpowiednich algorytmów (niektóre algorytmy mogą nie być uwzględnione ze względu na nieodłączne ograniczenia). Jeśli masz dużo danych do trenowania swojego modelu, większość wbudowanych algorytmów można łatwo skalować w celu zaspokojenia zapotrzebowania. Nawet jeśli masz już wstępnie wytrenowany model, nadal może być łatwiej użyć jego odpowiednika w programie SageMaker i wprowadzić hiperparametry, które już znasz, niż przenieść go i samodzielnie napisać skrypt szkoleniowy.
  • Jesteś właścicielem powstałych artefaktów modelu. Możesz wziąć ten model i wdrożyć go w SageMaker dla kilku różnych wzorców wnioskowania (sprawdź wszystkie dostępne typy wdrożeń) oraz łatwe skalowanie i zarządzanie punktami końcowymi. Możesz też wdrożyć go w dowolnym innym miejscu.

Zobaczmy teraz, jak wytrenować jeden z tych wbudowanych algorytmów.

Trenuj wbudowany algorytm za pomocą pakietu SageMaker SDK

Aby wytrenować wybrany model, musimy uzyskać identyfikator URI tego modelu, a także skrypt szkoleniowy i obraz kontenera używany do trenowania. 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) oraz typ instancji, na której chcesz trenować. Widać to w następującym fragmencie kodu:

from sagemaker import image_uris, model_uris, script_uris train_model_id, train_model_version, train_scope = "lightgbm-classification-model", "*", "training"
training_instance_type = "ml.m5.xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=train_model_id, model_version=train_model_version, image_scope=train_scope, instance_type=training_instance_type
)
# Retrieve the training script
train_source_uri = script_uris.retrieve( model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
)
# Retrieve the model artifact; in the tabular case, the model is not pre-trained train_model_uri = model_uris.retrieve( model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

Połączenia train_model_id zmiany w lightgbm-regression-model jeśli mamy do czynienia z problemem regresji. Identyfikatory dla wszystkich innych modeli przedstawionych w tym poście są wymienione w poniższej tabeli.

Model Rodzaj problemu ID modelu
LekkiGBM Klasyfikacja lightgbm-classification-model
. Regresja lightgbm-regression-model
KotBoost Klasyfikacja catboost-classification-model
. Regresja catboost-regression-model
AutoGluon-Tabela Klasyfikacja autogluon-classification-ensemble
. Regresja autogluon-regression-ensemble
Karta Transformator Klasyfikacja pytorch-tabtransformerclassification-model
. Regresja pytorch-tabtransformerregression-model

Następnie określamy, gdzie znajduje się nasz wkład Usługa Amazon Simple Storage (Amazonka S3). W tym przykładzie używamy publicznego przykładowego zestawu danych. Definiujemy również, dokąd chcemy skierować nasze dane wyjściowe, i pobieramy domyślną listę hiperparametrów potrzebnych do trenowania wybranego modelu. Możesz zmienić ich wartość według własnych upodobań.

import sagemaker
from sagemaker import hyperparameters sess = sagemaker.Session()
region = sess.boto_session.region_name # URI of sample training dataset
training_dataset_s3_path = f"s3:///jumpstart-cache-prod-{region}/training-datasets/tabular_multiclass/" # URI for output artifacts output_bucket = sess.default_bucket()
s3_output_location = f"s3://{output_bucket}/jumpstart-example-tabular-training/output" # Retrieve the default hyper-parameters for training
hyperparameters = hyperparameters.retrieve_default( model_id=train_model_id, model_version=train_model_version
) # [Optional] Override default hyperparameters with custom values
hyperparameters[ "num_boost_round"
] = "500" # The same hyperparameter is named as "iterations" for CatBoost

Na koniec tworzymy instancję SageMakera Estimator ze wszystkimi pobranymi danymi wejściowymi i uruchom zadanie szkoleniowe za pomocą .fit, przekazując jej nasz treningowy identyfikator URI zestawu danych. The entry_point podany skrypt ma nazwę transfer_learning.py (tak samo dla innych zadań i algorytmów), a kanał danych wejściowych przekazywany do .fit musi być nazwany training.

from sagemaker.estimator import Estimator
from sagemaker.utils import name_from_base # Unique training job name
training_job_name = name_from_base(f"built-in-example-{model_id}") # Create SageMaker Estimator instance
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,
) # Launch a SageMaker Training job by passing s3 path of the training data
tc_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Pamiętaj, że możesz trenować wbudowane algorytmy za pomocą Automatyczne dostrajanie modelu SageMaker w celu wybrania optymalnych hiperparametrów i dalszej poprawy wydajności modelu.

Trenuj wbudowany algorytm za pomocą programu SageMaker JumpStart

Możesz także trenować dowolne z tych wbudowanych algorytmów za pomocą kilku kliknięć za pomocą interfejsu użytkownika SageMaker 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. Umożliwia także wdrażanie w pełni rozwiniętych rozwiązań ML, które łączą modele ML i różne inne usługi AWS w celu rozwiązania docelowego przypadku użycia.

Aby uzyskać więcej informacji, zobacz Uruchom klasyfikację tekstu za pomocą Amazon SageMaker JumpStart, korzystając z modeli TensorFlow Hub i Hugging Face.

Wnioski

W tym poście ogłosiliśmy wprowadzenie czterech nowych, potężnych wbudowanych algorytmów dla ML dla tabelarycznych zestawów danych, które są teraz dostępne w SageMaker. Dostarczyliśmy opis techniczny tego, czym są te algorytmy, a także przykładowe zadanie szkoleniowe dla LightGBM przy użyciu SDK SageMaker.

Przynieś własny zestaw danych i wypróbuj te nowe algorytmy w SageMaker, a także zapoznaj się z przykładowymi notatnikami, aby korzystać z wbudowanych algorytmów dostępnych w GitHub.


O autorach

Dr Xin Huang jest naukowcem w zakresie wbudowanych algorytmów Amazon SageMaker JumpStart i Amazon SageMaker. Koncentruje się na tworzeniu skalowalnych algorytmów uczenia maszynowego. Jego zainteresowania badawcze dotyczą przetwarzania języka naturalnego, wyjaśnialnego głębokiego uczenia się na danych tabelarycznych oraz solidnej analizy nieparametrycznego klastrowania przestrzenno-czasowego. Opublikował wiele artykułów na konferencjach ACL, ICDM, KDD oraz Royal Statistical Society: Series A.

Dr Ashish Khetan jest starszym naukowcem z wbudowanymi algorytmami Amazon SageMaker JumpStart i Amazon SageMaker i pomaga opracowywać 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.

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 Deep Learning. Jest również aktywnym zwolennikiem rozwiązań ML typu low-code oraz sprzętu wyspecjalizowanego w ML.

Znak czasu:

Więcej z Uczenie maszynowe AWS