

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
<a name="xgboost-how-to-use"></a>

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](studio-jumpstart.md)

**Topics**
+ [Verwenden von XGBoost als Framework](#xgboost-how-to-framework)
+ [Verwenden von XGBoost als integrierten Algorithmus](#xgboost-how-to-built-in)
+ [Input/Output Schnittstelle für den XGBoost-Algorithmus](#InputOutput-XGBoost)

## Verwenden von XGBoost als Framework
<a name="xgboost-how-to-framework"></a>

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 ](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/xgboost_abalone/xgboost_abalone_dist_script_mode.html) AI XGBoost.

## Verwenden von XGBoost als integrierten Algorithmus
<a name="xgboost-how-to-built-in"></a>

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](https://sagemaker.readthedocs.io/en/stable) 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](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html). 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 angeben[Unterstützte Versionen](xgboost.md#xgboost-supported-versions), 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.](https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths.html) 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.
+ [Managed Spot Training für XGBoost](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/xgboost_abalone/xgboost_managed_spot_training.html)
+ [Regression mit Amazon SageMaker AI XGBoost (Parquet-Eingabe)](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/xgboost_abalone/xgboost_parquet_input_training.html)

## Input/Output Schnittstelle für den XGBoost-Algorithmus
<a name="InputOutput-XGBoost"></a>

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](xgboost.md#Instance-XGBoost).

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/libsvm*Eingabe 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/csv*Eingabe 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,...`).