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
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_uri
API bei Verwendung von Amazon SageMaker Python SDKVersion 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. |
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.