Wie benutzt man KI SageMaker 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 KI SageMaker XGBoost

Mit SageMaker KI können Sie es XGBoost als integrierten Algorithmus oder Framework verwenden. XGBoost Als Framework haben Sie mehr Flexibilität und Zugriff auf komplexere Szenarien, da Sie Ihre eigenen Trainingsskripte anpassen können. In den folgenden Abschnitten wird die Verwendung XGBoost mit dem SageMaker Python-SDK und der Eingabe-/Ausgabeschnittstelle für den XGBoost Algorithmus beschrieben. Informationen zur Verwendung XGBoost von der Amazon SageMaker Studio Classic-Benutzeroberfläche aus finden Sie unterSageMaker JumpStart vortrainierte Modelle.

XGBoost Als Framework verwenden

Verwenden Sie es XGBoost als Framework, um Ihre benutzerdefinierten Schulungsskripte auszuführen, die 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 Frameworks wie APIs TensorFlow MXNet, und bereitstellt PyTorch.

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 end-to-end Beispiel für die Verwendung von SageMaker KI XGBoost als Framework finden Sie unter Regression with Amazon SageMaker AI XGBoost.

XGBoost Als integrierten Algorithmus verwenden

Verwenden Sie den XGBoost integrierten Algorithmus, um einen XGBoost Trainingscontainer zu erstellen, wie im folgenden Codebeispiel gezeigt. Mithilfe der image_uris.retrieve AI-API können Sie den XGBoost integrierten SageMaker Bild-URI des Algorithmus automatisch erkennen. 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, finden Sie unter Allgemeine Parameter für integrierte Algorithmen. Suchen Sie dann in xgboost der vollständigen Liste der integrierten Algorithmusbilder URIs und der verfügbaren Regionen nach.

Nachdem Sie die XGBoost Bild-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 XGBoost integrierte Algorithmusmodus beinhaltet kein eigenes XGBoost Trainingsskript und wird direkt auf den Eingabedatensätzen ausgeführt.

Wichtig

Verwenden Sie beim Abrufen der SageMaker XGBoost AI-Bild-URI nicht :latest oder :1 für das Bild-URI-Tag. Sie müssen einen der Container angebenUnterstützte Versionen, um den SageMaker KI-verwalteten XGBoost Container mit der nativen XGBoost Paketversion auszuwählen, die Sie verwenden möchten. Informationen zur Paketversion, die in die SageMaker XGBoost AI-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 dazu, wie Sie den XGBoost als integrierten Algorithmus einrichten, finden Sie in den folgenden Notebook-Beispielen.

Eingabe-/Ausgabeschnittstelle für den Algorithmus XGBoost

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-parquet

  • Anwendung/ 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 XGBoost mit dem Dateimodus, in dem Ihre Daten aus Amazon S3 auf den Volumes der Trainingsinstanz 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 Instanzempfehlung für den Algorithmus XGBoost.

Für den CSV-Trainingseingabemodus muss der Gesamtspeicher, der dem Algorithmus zur Verfügung steht, in der Lage sein, den Trainingsdatensatz aufzunehmen. Der insgesamt verfügbare Speicher wird wie folgt berechnetInstance Count * the memory available in the InstanceType. Für den libsvm-Trainingseingabemodus ist dies nicht erforderlich, aber empfehlenswert.

Für Version 1.3-1 und höher XGBoost speichert SageMaker AI das Modell im XGBoost internen Binärformat unter Verwendung vonBooster.save_model. Frühere Versionen verwenden das Python-Pickle-Modul, um das Modell zu serialisieren/deserialisieren.

Anmerkung

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

Um ein Modell zu verwenden, das mit SageMaker KI XGBoost v1.3-1 oder höher in Open Source trainiert wurde XGBoost
  • 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 KI XGBoost in Open Source trainiert wurde 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 KI XGBoost ermöglicht es Kunden, die Bedeutung von markierten Datenpunkten zu unterscheiden, indem sie jeder Instanz einen Gewichtungswert zuweisen. Für text/libsvm-Eingaben können Kunden Daten-Instances Gewichtungswerte zuweisen, indem Sie sie nach den Bezeichnungen anfügen. Beispiel, label:weight idx_0:val_0 idx_1:val_1.... Für text/csv-Eingaben müssen Kunden das csv_weights-Flag in den Parametern aktivieren und Gewichtungswerte in der Spalte nach den Bezeichnungen anfügen. Zum Beispiel: label,weight,val_0,val_1,...).