LightGBM - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

LightGBM

LightGBM ist eine beliebte und effiziente Open-Source-Implementierung eines Baumalgorithmus mit Gradient Boosting. GBDT ist ein überwachter Lernalgorithmus, der versucht, eine Zielvariable genau vorherzusagen, indem Schätzungen aus einer Menge einfacherer und schwächerer Modelle kombiniert werden. LightGBM verwendet zusätzliche Techniken, um die Effizienz und Skalierbarkeit herkömmlicher GBDT erheblich zu verbessern.

So verwenden Sie SageMaker LightGBM

Sie können LightGBM als integrierten Amazon SageMaker -Algorithmus verwenden. Im folgenden Abschnitt wird beschrieben, wie Sie LightGBM mit dem SageMaker Python SDK verwenden. Informationen zur Verwendung von LightGBM über die Amazon SageMaker Studio Classic-Benutzeroberfläche finden Sie unter SageMaker JumpStart.

  • Verwenden von LightGBM als integrierten Algorithmus

    Sie können den integrierten LightGBM-Algorithmus zur Erstellung eines LightGBM-Trainingscontainers verwenden wie im folgenden Codebeispiel gezeigt. Sie können den Image-URI des integrierten LightGBM-Algorithmus automatisch mithilfe der SageMaker image_uris.retrieve -API (oder der -get_image_uriAPI bei Verwendung von Amazon SageMaker Python SDK Version 2) erkennen.

    Nachdem Sie den LightGBM-Image-URI angegeben haben, können Sie den LightGBM-Container verwenden, um mithilfe der SageMaker Schätzer-API einen Schätzer zu erstellen und einen Schulungsauftrag zu initiieren. Der integrierte LightGBM-Algorithmus wird im Skriptmodus ausgeführt, aber das Trainingsskript wird für Sie bereitgestellt und muss nicht ersetzt werden. Wenn Sie umfangreiche Erfahrung mit der Verwendung des Skriptmodus haben, um einen SageMaker Trainingsauftrag zu erstellen, können Sie Ihre eigenen LightGBM-Trainingsskripte integrieren.

    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 ) train_model_uri = model_uris.retrieve( model_id=train_model_id, model_version=train_model_version, model_scope=train_scope ) # Sample training data is available in this bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/tabular_multiclass/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/train" validation_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/validation" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-tabular-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" from sagemaker import hyperparameters # Retrieve the default hyperparameters for training the model 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" print(hyperparameters) from sagemaker.estimator import Estimator from sagemaker.utils import name_from_base training_job_name = name_from_base(f"built-in-algo-{train_model_id}-training") # Create SageMaker Estimator instance tabular_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, # for distributed training, specify an instance_count greater than 1 instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location ) # Launch a SageMaker Training job by passing the S3 path of the training data tabular_estimator.fit( { "train": training_dataset_s3_path, "validation": validation_dataset_s3_path, }, logs=True, job_name=training_job_name )

    Weitere Informationen zum Einrichten von LightGBM als integriertem Algorithmus finden Sie in den folgenden Notebook-Beispielen.

Eingabe- und Ausgabeschnittstelle für den LightGBM-Algorithmus

Gradient Boosting arbeitet mit tabellarischen Daten, wobei die Zeilen die Beobachtungen repräsentieren, eine Spalte die Zielvariable oder die Kennzeichnung darstellt und die verbleibenden Spalten die Funktionen.

Die SageMaker Implementierung von LightGBM unterstützt CSV für Training und Inferenz:

  • Für Training ContentType müssen gültige Eingaben text/csv sein.

  • Für Inferenz ContentType müssen gültige Eingaben text/csv sein.

Anmerkung

Bei der CSV-Schulung geht der Algorithmus davon aus, dass die Zielvariable in der ersten Spalte zu finden ist und CSV keinen Header-Datensatz aufweist.

Bei der CSV-Inferenz geht der Algorithmus davon aus, dass die CSV-Eingabe keine Kennzeichnungsspalte hat.

Eingabeformat für Trainingsdaten, Validierungsdaten und kategoriale Features

Achten Sie darauf, wie Sie Ihre Trainingsdaten für die Eingabe in das LightGBM-Modell formatieren. Sie müssen den Pfad zu einem Amazon-S3-Bucket angeben, der Ihre Trainings- und Validierungsdaten enthält. Sie können auch eine Liste von kategorialen Features einschließen. Verwenden Sie sowohl den train als auch den validation Kanal, um Ihre Eingabedaten bereitzustellen. Alternativ können Sie auch nur den train Kanal verwenden.

Anmerkung

Beide train und training sind gültige Kanalnamen für LightGBM-Trainings.

Verwenden Sie sowohl den train als such den validation Kanal

Sie können Ihre Eingabedaten über zwei S3-Pfade bereitstellen, einen für den train Kanal und einen für den validation Kanal. Jeder S3-Pfad kann entweder ein S3-Präfix sein, das auf eine oder mehrere CSV-Dateien verweist, oder ein vollständiger S3-Pfad, der auf eine bestimmte CSV-Datei verweist. Die Zielvariablen sollten sich in der ersten Spalte Ihrer CSV-Datei befinden. Die Prädiktorvariablen (Features) sollten sich in den verbleibenden Spalten befinden. Wenn mehrere CSV-Dateien für die train oder validation Kanäle bereitgestellt werden, verkettet der LightGBM-Algorithmus die Dateien. Die Validierungsdaten werden verwendet, um am Ende jeder Boosting-Iteration einen Validierungsscore zu berechnen. Ein vorzeitiger Stopp wird angewendet, wenn sich der Validierungsscore nicht mehr verbessert.

Wenn Ihre Prädiktoren kategoriale Features enthalten, können Sie eine JSON-Datei mit dem Namen categorical_index.json am gleichen Speicherort wie Ihre Trainingsdatendatei(en) bereitstellen. Wenn du eine JSON-Datei für kategoriale Features bereitstellst, muss dein train Kanal auf ein S3-Präfix verweisen und nicht auf eine bestimmte CSV-Datei. Diese Datei sollte ein Python-Wörterbuch enthalten, in dem der Schlüssel der String "cat_index_list" und der Wert eine Liste eindeutiger Ganzzahlen ist. Jede Ganzzahl in der Werteliste sollte den Spaltenindex der entsprechenden kategorialen Features in Ihrer CSV-Datei mit Trainingsdaten angeben. Jeder Wert sollte eine positive Ganzzahl (größer als Null, weil Null den Zielwert darstellt), kleiner als Int32.MaxValue (2147483647) und kleiner als die Gesamtzahl der Spalten sein. Es sollte nur eine JSON-Datei mit dem kategorialen Index geben.

Benutze nur den train Kanal:

Sie können Ihre Eingabedaten alternativ über einen einzigen S3-Pfad für den train Kanal bereitstellen. Dieser S3-Pfad sollte auf ein Verzeichnis mit einem Unterverzeichnis mit dem Namen train/ verweisen, das eine oder mehrere CSV-Dateien enthält. Sie können optional ein weiteres Unterverzeichnis mit dem Namen validation/ am gleichen Ort einfügen, das ebenfalls eine oder mehrere CSV-Dateien enthält. Wenn die Validierungsdaten nicht bereitgestellt werden, werden 20% Ihrer Trainingsdaten nach dem Zufallsprinzip als Validierungsdaten ausgewählt. Wenn Ihre Prädiktoren kategoriale Features enthalten, können Sie eine JSON-Datei mit dem Namen categorical_index.json an demselben Ort wie Ihre Datenunterverzeichnisse bereitstellen.

Anmerkung

Beim CSV-Eingabemodus für Trainings muss der für den Algorithmus verfügbare Gesamtspeicher (Instance-Zählung multipliziert mit verfügbarem Speicher im InstanceType) in der Lage sein, den Trainingsdatensatz aufzunehmen.

SageMaker LightGBM verwendet das Python-Joblib-Modul, um das Modell zu serialisieren oder zu deserialisieren, das zum Speichern oder Laden des Modells verwendet werden kann.

So verwenden Sie ein mit SageMaker LightGBM trainiertes Modell mit dem - JobLib Modul
  • Verwenden Sie den folgenden Python-Code:

    import joblib import tarfile t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = joblib.load(model_file_path) # prediction with test data # dtest should be a pandas DataFrame with column names feature_0, feature_1, ..., feature_d pred = model.predict(dtest)

Amazon EC2-Instance-Empfehlung für den LightGBM-Algorithmus

SageMaker LightGBM unterstützt derzeit Single-Instance- und Multi-Instance-CPU-Training. Geben Sie für CPU-Training mit mehreren Instanzen (verteiltes Training) einen instance_count größer als 1 an, wenn Sie Ihren Schätzer definieren. Weitere Informationen zum verteilten Training mit LightGBM finden Sie unter Amazon SageMaker LightGBM Distributed Training mit Dask .

LightGBM ist ein speichergebundenes Algorithmus (im Gegensatz zu einem rechnergebundenen). Daher ist eine Allzweck-Datenverarbeitungs-Instance (z. B. M5) die bessere Wahl gegenüber einer rechneroptimierten Instance (z. B. C5). Des Weiteren empfehlen wir, dass Sie in ausgewählten Instances genügend Gesamtspeicher zur Verfügung haben, um die Trainingsdaten aufzunehmen.

LightGBM-Beispiel-Notebooks

Die folgende Tabelle beschreibt eine Vielzahl von Beispiel-Notebooks, die sich mit verschiedenen Anwendungsfällen des Amazon- SageMaker LightGBM-Algorithmus befassen.

Titel des Notebooks Beschreibung

Tabellarische Klassifizierung mit Amazon SageMaker LightGBM und CatBoost Algorithmus

Dieses Notebook zeigt die Verwendung des Amazon- SageMaker LightGBM-Algorithmus zum Trainieren und Hosten eines tabellarischen Klassifikationsmodells.

Tabellarische Regression mit Amazon SageMaker LightGBM und CatBoost Algorithmus

Dieses Notebook zeigt die Verwendung des Amazon- SageMaker LightGBM-Algorithmus zum Trainieren und Hosten eines tabellarischen Regressionsmodells.

Verteiltes Training von Amazon SageMaker LightGBM mit Dask

Dieses Notebook demonstriert verteiltes Training mit dem Amazon- SageMaker LightGBM-Algorithmus unter Verwendung des Dask-Frameworks.

Anweisungen zum Erstellen und Zugreifen auf Jupyter-Notebook-Instances, mit denen Sie das Beispiel in ausführen können SageMaker, finden Sie unter Amazon- SageMaker Notebook-Instances. Nachdem Sie eine Notebook-Instance erstellt und geöffnet haben, wählen Sie die Registerkarte SageMaker Beispiele, um eine Liste aller SageMaker Beispiele anzuzeigen. Zum Öffnen eines Notebooks wählen Sie die Registerkarte Verwenden und dann Kopie erstellen aus.