XGBoost-Algorithmus - 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.

XGBoost-Algorithmus

XGBoost (eXtreme Gradient Boosting) ist eine beliebte und effiziente Open-Source-Implementierung eines Baumalgorithmus mit Gradient Boosting. Gradient Boosting ist ein überwachter Lernalgorithmus, der versucht, eine Zielvariable genau vorherzusagen, indem Schätzungen aus einer Menge einfacherer und schwächerer Modelle kombiniert werden. Der XGBoost-Algorithmus ist aufgrund seiner robusten Verarbeitung zahlreicher Datentypen, Beziehungen und Verteilungen und der Vielzahl von optimierbaren Hyperparametern gut für Machine Learning-Wettbewerbe geeignet. Sie können XGBoost für Regressions-, Binär- und Multiclass-Klassifizierungs- und Ranglistenprobleme verwenden.

Sie können die neue Version des XGBoost-Algorithmus entweder als Amazon verwenden SageMaker integrierter Algorithmus oder als Framework zum Ausführen von Trainingsskripten in Ihren lokalen Umgebungen. Diese Implementierung bietet einen kleineren Speicherbedarf, eine bessere Protokollierung, eine verbesserte Hyperparameter-Validierung und einen größeren Satz von Metriken als die ursprünglichen Versionen. Sie bietet auch einen XGBoost estimator, der ein Trainingsskript in einer verwalteten XGBoost-Umgebung ausführt. Die aktuelle Version von SageMaker XGBoost basiert auf den ursprünglichen XGBoost-Versionen 1.0, 1.2 und 1.5

Unterstützte Versionen

  • Framework-Modus (Open Source): 1,0-1, 1.2-1, 1.2-2, 1.3-1, 1.5-1

  • Algorithmusmodus: 1,0-1, 1.2-1, 1.2-2, 1.3-1, 1.5-1

Wichtig

Beim Abrufen der SageMaker XGBoost-Bild-URI, nicht verwenden:latestoder:1für das Image-URI-Tag. Sie müssen eine der folgenden Eigenschaften angebenUnterstützte Versionenum das zu wählen SageMaker-verwalteter XGBoost-Container mit der nativen XGBoost-Paketversion, die Sie verwenden möchten. Um die in die Datei migrierte Paketversion zu finden SageMaker XGBoost-Container, sieheDocker-Registrierungspfade und Beispielcode, wählen Sie IhreAWS-Region, und navigiere zumXGBoost (Algorithmus)Abschnitt.

Warnung

Die XGBoost 0.90-Versionen sind veraltet. Die Unterstützung für Sicherheitsupdates oder Fehlerbehebungen für XGBoost 0.90 wurde eingestellt. Es wird dringend empfohlen, die XGBoost-Version auf eine der neueren Versionen zu aktualisieren.

Anmerkung

XGBoost v1.1 wird nicht unterstützt SageMaker weil XGBoost 1.1 eine fehlerhafte Fähigkeit hat, Vorhersagen auszuführen, wenn die Testeingabe weniger Funktionen hat als die Trainingsdaten in LIBSVM-Eingängen. Diese Fähigkeit wurde in XGBoost v1.2 wiederhergestellt. Beispielsweise Beispielsweise SageMakerXGBoost 1.2-2 oder höher.

Funktionsweise von SageMaker XG-Boost

mit SageMakerkönnen Sie XGBoost als integrierten Algorithmus oder Framework verwenden. Durch die Verwendung von XGBoost als Framework erhalten Sie mehr Flexibilität und Zugriff auf erweiterte Szenarien, z. B. k-fold-Kreuzvalidierung, da Sie Ihre eigenen Trainingsskripts anpassen können. In den folgenden Abschnitten wird die Verwendung von XGBoost mit dem SageMaker Python-SDK Informationen dazu, wie XGBoost von Amazon verwendet wird SageMaker Studio-Benutzeroberfläche, sieheSageMaker JumpStart.

  • 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 finden Sie Informationen zum SageMaker Python SDK stellt die XGBoost-API als Framework bereit, genauso wie es andere Framework-APIs bereitstellt, wie TensorFlow, MXNet und 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 XGBoost estimator # specify the entry_point to your xgboost training script estimator = XGBoost(entry_point = "your_xgboost_abalone_script.py", framework_version='1.5-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})

    Für ein end-to-end -Beispiel für Verwendung von SageMaker XGBoost als Framework, sieheRegression mit Amazon SageMaker XG-Boost

  • Verwenden von XGBoost als integrierten Algorithmus

    Sie können den integrierten XGBoost-Algorithmus zur Erstellung eines XGBoost-Trainingscontainers verwenden wie im folgenden Codebeispiel gezeigt. Sie können den in XGBoost integrierten Algorithmusbild-URI automatisch erkennen, indem Sie SageMaker image_uris.retrieveAPI (oder dieget_image_uriAPI bei Verwendung vonAmazon SageMaker Python-SDKVersion 1). Wenn Sie überprüfen möchten, ob die image_uris.retrieve-API den richtigen URI findet, navigieren Sie zu Allgemeine Parameter für integrierte Algorithmen und suchen in der vollständigen Liste der Image-URIs integrierter Algorithmen und verfügbaren Regionen nach xgboost.

    Nachdem Sie den XGBoost-Image-URI angegeben haben, können Sie den XGBoost-Container verwenden, um einen Schätzer mit dem SageMaker Estimator API und initiieren Sie einen Schulungsauftrag. Dieser integrierte XGBoost-Algorithmusmodus integriert nicht Ihr XGBoost-Trainingsskript und wird direkt auf den Eingabedatensätzen ausgeführt.

    Wichtig

    Beim Abrufen der SageMaker XGBoost-Bild-URI, nicht verwenden:latestoder:1für das Image-URI-Tag. Sie müssen eine der folgenden Eigenschaften angebenUnterstützte Versionenum das zu wählen SageMaker-verwalteter XGBoost-Container mit der nativen XGBoost-Paketversion, die Sie verwenden möchten. Um die in die Datei migrierte Paketversion zu finden SageMaker XGBoost-Container, sieheDocker-Registrierungspfade und Beispielcode, wählen Sie IhreAWS-Region, und navigiere zumXGBoost (Algorithmus)Abschnitt.

    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.5-1") # construct a SageMaker 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.

E/A-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 übrigen Spalten die Merkmale.

Die SageMaker Implementierung von XGBoost unterstützt CSV- und libsvm-Formate für Training und Inferenz:

  • Für Trainingszwecke ContentType, gültige Eingaben sindtext/libsvm(Standard) oderText/CSV.

  • Für Inferenz ContentType, gültige Eingaben sindtext/libsvm(Standard) oderText/CSV.

Anmerkung

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

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

Für libsvm-Schulungen geht der Algorithmus davon aus, dass sich die Bezeichnung in der ersten Spalte befindet. Nachfolgende Spalten enthalten die nullbasierten Index-Wert-Paare für Funktionen. Folglich hat jede Zeile das Format: <label> <index0>:<value0> <index1>:<value1> ... Inferenzanforderungen für libsvm besitzen möglicherweise keine Bezeichnungen im libsvm-Format.

Dies unterscheidet sich von anderen SageMaker Algorithmen, die das Protobuf-Trainingseingabeformat verwenden, um eine größere Konsistenz mit Standard-XGBoost-Datenformaten zu gewährleisten.

Beim CSV-Eingabemodus für Schulungen muss der für den Algorithmus verfügbare Gesamtspeicher (Instance-Zählung *verfügbarer Speicher im InstanceType) in der Lage sein, den Schulungsdatensatz aufzunehmen. Für den libsvm-Schulungseingabemodus ist dies nicht erforderlich, aber empfehlenswert.

Für v1.3-1 und höher SageMaker XGBoost speichert das Modell im internen XGBoost-Binärformat mitBooster.save_model. Frühere Versionen verwenden das Python-Pickle-Modul, um das Modell zu serialisieren/deserialisieren.

Anmerkung

Achten Sie auf Versionen, wenn Sie ein SageMaker XGBoost-Modell in Open Source XGBoost. Versionen 1.3-1 und höher verwenden das interne XGBoost-Binärformat, während frühere Versionen das Python-Pickle-Modul verwenden.

So verwenden Sie ein mit trainiertes Modell SageMaker XGBoost v1.3-1 oder höher in Open Source 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)
So verwenden Sie ein Modell, das mit früheren Versionen von trainiert wurde SageMaker XGBoost im 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 XGBoost ermöglicht es Kunden, die Wichtigkeit beschrifteter Datenpunkte zu unterscheiden, indem jeder Instanz ein Gewichtungswert zugewiesen wird. Für text/libsvm-Eingaben können Kunden Daten-Instances Gewichtungswerte zuweisen, indem Sie sie nach den Bezeichnungen anfügen. Zum 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. Beispiel: label,weight,val_0,val_1,...).

EC2-Instance-Empfehlung für den XGBoost-Algorithmus

SageMaker XGBoost 1.0-1 oder früher trainiert nur mit CPUs. Es handelt sich um einen speichergebundenen 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. C4). Des Weiteren empfehlen wir, dass Sie in ausgewählten Instances genügend Gesamtspeicher zur Verfügung haben, um die Schulungsdaten aufzunehmen. Es unterstützt zwar die Verwendung von Speicherplatz für die Verarbeitung von Daten, die nicht in den Hauptspeicher passen (der out-of-core Funktion verfügbar mit dem libsvm-Eingabemodus), verlangsamt das Schreiben von Cache-Dateien auf die Festplatte die Verarbeitungszeit des Algorithmus.

SageMaker XGBoost Version 1.2 oder höher unterstützt Single-Instance-GPU-Training. Trotz höherer Kosten pro Instanz trainieren GPUs schneller, wodurch sie kostengünstiger werden. SageMaker XGBoost Version 1.2 oder höher unterstützt P2- und P3-Instanzen.

SageMaker XGBoost Version 1.2-2 oder höher unterstützt P2-, P3-, G4dn- und G5-GPU-Instance-Familien.

Um die Vorteile des GPU-Trainings zu nutzen, geben Sie den Instanztyp als eine der GPU-Instanzen an (z. B. P3) und legen Sietree_methodHyperparameter zugpu_histin Ihrem vorhandenen XGBoost-Skript. SageMaker XGBoost unterstützt derzeit kein Multi-GPU-Training.

SageMaker XGBoost unterstützt CPU- und GPU-Instanzen für Inferenzen. Weitere Informationen zu Instance-Typen für Inferenz finden Sie unterAmazon SageMaker ML Instance-Typen.

XGBoost-Beispiel-Notebooks

In der folgenden Tabelle sind verschiedene Beispiel-Notebooks aufgeführt, die sich mit verschiedenen Anwendungsfällen von Amazon befassen. SageMaker XGBoost-Algorithmus.

Notebook-Titel Beschreibung

Wie erstelle ich einen benutzerdefinierten XGBoost-Container?

Dieses Notizbuch zeigt Ihnen, wie Sie einen benutzerdefinierten XGBoost-Container mit Amazon erstellen SageMaker Batch-Umwandlung

Regression mit XGBoost unter Verwendung von Parquet

Dieses Notizbuch zeigt Ihnen, wie Sie das Abalone-Dataset in Parquet verwenden, um ein XGBoost-Modell zu trainieren.

Wie trainiere und hoste ich ein Klassifizierungsmodell mit mehreren Klassen?

Dieses Notizbuch zeigt, wie das MNIST-Dataset zum Trainieren und Hosten eines Klassifizierungsmodells mit mehreren Klassen verwendet wird

Wie trainiere ich ein Modell für die Vorhersage der Kundenabwanderung?

Dieses Notizbuch zeigt Ihnen, wie Sie ein Modell zur Vorhersage des Abgangs mobiler Kunden trainieren, um unzufriedene Kunden zu identifizieren.

Eine Einführung in Amazon SageMaker Managed Spot-Infrastruktur für XGBoost-Schulungen

Dieses Notizbuch zeigt Ihnen, wie Sie Spot-Instances für das Training mit einem XGBoost-Container verwenden.

Funktionsweise von Amazon SageMaker Debugger zum Debuggen von XGBoost-Schulungsjobs?

Dieses Notizbuch zeigt Ihnen, wie Amazon verwendet wird SageMaker Debugger zur Überwachung von Trainingsaufträgen zur Erkennung von Inkonsistenzen.

Funktionsweise von Amazon SageMaker Debugger zum Debuggen von XGBoost-Trainingsjobs in Echtzeit?

In diesem Notizbuch erhalten Sie Informationen zum Verwenden des MNIST-Datensatzes und Amazon SageMakerDebugger zur Durchführung einer Echtzeitanalyse von XGBoost-Trainingsaufträgen während der Ausführung von Trainingsaufträgen.

Anweisungen zum Erstellen und Zugreifen auf Jupyter-Notebook-Instanzen, mit denen Sie das Beispiel ausführen können, finden Sie in SageMaker, sieheAmazon SageMaker Notebook-Instances verwenden. Nachdem Sie eine Notebook-Instanz erstellt und geöffnet haben, wählen Sie die OptionSageMakerBeispiele-Registerkarte, um eine Liste aller SageMaker Stichproben. Die Beispiel-Notebooks zur Themenmodellierung unter Verwendung des Algorithmus für lineares Lernen finden Sie im Abschnitt Einführung in die Amazon-Algorithmen. Zum Öffnen eines Notebooks wählen Sie die Registerkarte Use (Verwenden) und dann Create copy (Kopie erstellen) aus.