View a markdown version of this page

Wie benutzt man SageMaker AI XGBoost - Amazon SageMaker KI

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.

Wie benutzt man SageMaker AI XGBoost

Mit SageMaker KI können Sie XGBoost als integrierten Algorithmus oder Framework verwenden. Wenn Sie XGBoost als Framework verwenden, erhalten Sie mehr Flexibilität und Zugriff auf erweiterte Szenarien, da Sie Ihre eigenen Trainingsskripts anpassen können. In den folgenden Abschnitten wird beschrieben, wie XGBoost mit dem SageMaker Python-SDK und die input/output Schnittstelle für den XGBoost-Algorithmus verwendet wird. Informationen zur Verwendung von XGBoost über die Amazon SageMaker Studio Classic-Benutzeroberfläche finden Sie unter. SageMaker JumpStart vortrainierte Modelle

Verwenden von XGBoost als Framework

Sie können XGBoost als Framework zum Ausführen angepasster Trainingsskripts verwenden, die eine zusätzliche Datenverarbeitung in Ihre Trainingsaufgaben integrieren können. Im folgenden Codebeispiel stellt das SageMaker Python-SDK die XGBoost-API als Framework bereit. Dies funktioniert ähnlich wie SageMaker KI andere Framework-APIs wie TensorFlow MXNet und PyTorch bereitstellt.

import boto3 import sagemaker from sagemaker.xgboost.estimator import XGBoost from sagemaker.session import Session from sagemaker.inputs import TrainingInput # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "verbosity":"1", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-framework' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-framework') # construct a SageMaker AI XGBoost estimator # specify the entry_point to your xgboost training script estimator = XGBoost(entry_point = "your_xgboost_abalone_script.py", framework_version='1.7-1', hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), instance_count=1, instance_type='ml.m5.2xlarge', output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})

Ein umfassendes Beispiel für die Verwendung von SageMaker AI XGBoost als Framework finden Sie unter Regression with Amazon SageMaker AI XGBoost.

Verwenden von XGBoost als integrierten Algorithmus

Sie können den integrierten XGBoost-Algorithmus zur Erstellung eines XGBoost-Trainingscontainers verwenden wie im folgenden Codebeispiel gezeigt. Mithilfe der KI-API können Sie den Bild-URI des integrierten XGBoost-Algorithmus automatisch erkennen. SageMaker image_uris.retrieve Wenn Sie Amazon SageMaker Python SDK Version 1 verwenden, verwenden Sie die get_image_uri API. Um sicherzustellen, dass die image_uris.retrieve API den richtigen URI findet, siehe Allgemeine Parameter für integrierte Algorithmen. Suchen Sie dann in der vollständigen Liste der integrierten Algorithmus-Image-URIs und der verfügbaren Regionen nach xgboost.

Nachdem Sie den XGBoost-Image-URI angegeben haben, verwenden Sie den XGBoost-Container, um mithilfe der SageMaker AI Estimator-API einen Schätzer zu erstellen und einen Trainingsjob zu starten. Dieser integrierte XGBoost-Algorithmusmodus integriert nicht Ihr XGBoost-Trainingsskript und wird direkt auf den Eingabedatensätzen ausgeführt.

Wichtig

Wenn Sie den SageMaker AI XGBoost-Image-URI abrufen, verwenden Sie nicht oder für das Bild-URI-Tag. :latest :1 Sie müssen einen der folgenden angebenUnterstützte Versionen, um den SageMaker AI-managed XGBoost-Container mit der nativen XGBoost-Paketversion auszuwählen, die Sie verwenden möchten. Informationen zur Paketversion, die in die SageMaker AI XGBoost-Container migriert wurde, finden Sie unter Docker-Registrierungspfade und Beispielcode. Wählen Sie dann Ihre AWS-Region aus und navigieren Sie zum Abschnitt XGBoost (Algorithmus).

import sagemaker import boto3 from sagemaker import image_uris from sagemaker.session import Session from sagemaker.inputs import TrainingInput # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-built-in-algo' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-built-in-algo') # this line automatically looks for the XGBoost image URI and builds an XGBoost container. # specify the repo_version depending on your preference. xgboost_container = sagemaker.image_uris.retrieve("xgboost", region, "1.7-1") # construct a SageMaker AI estimator that calls the xgboost-container estimator = sagemaker.estimator.Estimator(image_uri=xgboost_container, hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), instance_count=1, instance_type='ml.m5.2xlarge', volume_size=5, # 5 GB output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})

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

Input/Output Schnittstelle für den XGBoost-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 KI-Implementierung von XGBoost unterstützt die folgenden Datenformate für Training und Inferenz:

  • text/libsvm (Standard)

  • text/csv

  • application/x-Parkett

  • application/x-Recordio-Protobuf

Anmerkung

In Bezug auf Training und Inferenz sind einige Überlegungen zu beachten:

  • Für eine höhere Leistung empfehlen wir die Verwendung von XGBoost im Dateimodus, in dem Ihre Daten aus Amazon S3 auf den Volumes der Trainings-Instance gespeichert werden.

  • Für Trainings mit spaltenförmiger Eingabe geht der Algorithmus davon aus, dass es sich bei der Zielvariablen (Label) um die erste Spalte handelt. Bei der Inferenz geht der Algorithmus davon aus, dass die Eingabe keine Kennzeichnungsspalte hat.

  • Bei CSV-Daten sollte die Eingabe keinen Header-Datensatz enthalten.

  • Für das LIBSVM-Training geht der Algorithmus davon aus, dass die nachfolgenden Spalten nach der Labelspalte die auf Null basierenden Indexwertpaare für Features enthalten. Folglich hat jede Zeile das Format: : <label> <index0>:<value0> <index1>:<value1>.

  • Informationen zu Instance-Typen und verteiltem Training finden Sie unter EC2-Instance-Empfehlung für den XGBoost-Algorithmus.

Beim CSV-Eingabemodus für Trainings muss der für den Algorithmus verfügbare Gesamtspeicher in der Lage sein, den Trainingsdatensatz aufzunehmen. Der insgesamt verfügbare Speicher wird als Instance Count * the memory available in the InstanceType berechnet. Für den libsvm-Trainingseingabemodus ist dies nicht erforderlich, aber empfehlenswert.

Für v1.3-1 und höher speichert SageMaker AI XGBoost das Modell im internen XGBoost-Binärformat unter Verwendung von. Booster.save_model Frühere Versionen verwenden das Python-Pickle-Modul für serialize/deserialize das Modell.

Anmerkung

Achten Sie bei der Verwendung eines SageMaker KI-XGBoost-Modells in Open-Source-XGBoost auf Versionen. Versionen 1.3-1 und höher verwenden das interne XGBoost-Binärformat, während frühere Versionen das Python-Pickle-Modul verwenden.

Um ein mit SageMaker AI XGBoost v1.3-1 oder höher trainiertes Modell in Open-Source-XGBoost zu verwenden
  • Verwenden Sie den folgenden Python-Code:

    import xgboost as xgb xgb_model = xgb.Booster() xgb_model.load_model(model_file_path) xgb_model.predict(dtest)
Um ein Modell zu verwenden, das mit früheren Versionen von SageMaker AI XGBoost trainiert wurde, in Open-Source-XGBoost
  • Verwenden Sie den folgenden Python-Code:

    import pickle as pkl import tarfile t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = pkl.load(open(model_file_path, 'rb')) # prediction with test data pred = model.predict(dtest)
Zur Differenzierung der Bedeutung von markierten Datenpunkten verwenden Sie die Instance-Gewichtungsunterstützung.
  • SageMaker AI XGBoost ermöglicht es Kunden, die Bedeutung von markierten Datenpunkten zu unterscheiden, indem sie jeder Instanz einen Gewichtungswert zuweisen. Zur text/libsvmEingabe können Kunden Dateninstanzen Gewichtswerte zuweisen, indem sie sie hinter den Labels anhängen. Beispiel, label:weight idx_0:val_0 idx_1:val_1.... Für die text/csvEingabe müssen Kunden die csv_weights Markierung in den Parametern aktivieren und in der Spalte hinter den Beschriftungen Gewichtswerte anhängen. Zum Beispiel: label,weight,val_0,val_1,...).