Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Avec SageMaker l'IA, vous pouvez l'utiliser XGBoost comme algorithme ou framework intégré. En XGBoost tant que framework, vous bénéficiez d'une plus grande flexibilité et d'un accès à des scénarios plus avancés, car vous pouvez personnaliser vos propres scripts d'entraînement. Les sections suivantes décrivent comment utiliser XGBoost le SDK SageMaker Python et l'interface d'entrée/sortie de l'algorithme. XGBoost Pour plus d'informations sur l'utilisation XGBoost depuis l'interface utilisateur Amazon SageMaker Studio Classic, consultezSageMaker JumpStart modèles préentraînés.
Rubriques
Utiliser XGBoost comme cadre
XGBoost Utilisez-le comme framework pour exécuter vos scripts de formation personnalisés qui peuvent intégrer un traitement de données supplémentaire dans vos tâches de formation. Dans l'exemple de code suivant, le SDK SageMaker Python fournit l' XGBoost API sous forme de framework. Cela fonctionne de la même manière que l' SageMaker IA fournit d'autres cadres APIs TensorFlow, tels que MXNet, et 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})
Pour un end-to-end exemple d'utilisation de l' SageMaker IA XGBoost comme framework, consultez Régression avec Amazon SageMaker AI XGBoost
Utilisation XGBoost en tant qu'algorithme intégré
Utilisez l'algorithme XGBoost intégré pour créer un conteneur d' XGBoost entraînement, comme indiqué dans l'exemple de code suivant. Vous pouvez détecter automatiquement l'URI de l'image de l'algorithme XGBoost intégré à l'aide de l'image_uris.retrieve
API SageMaker AI. Si vous utilisez le SDK Amazon SageMaker Pythonget_image_uri
API. Pour vous assurer que l'image_uris.retrieve
API trouve l'URI correct, consultez la section Paramètres communs pour les algorithmes intégrés. Recherchez ensuite dans la xgboost
liste complète des images de l'algorithme intégré URIs et des régions disponibles.
Après avoir spécifié l'URI de XGBoost l'image, utilisez le XGBoost conteneur pour créer un estimateur à l'aide de l'API SageMaker AI Estimator et lancez une tâche de formation. Ce mode d'algorithme XGBoost intégré n'intègre pas votre propre script d' XGBoost entraînement et s'exécute directement sur les ensembles de données d'entrée.
Important
Lorsque vous récupérez l'URI de XGBoost l'image SageMaker AI, n'utilisez pas :latest
ou :1
pour la balise URI de l'image. Vous devez spécifier l'un des Versions prises en charge pour choisir le XGBoost conteneur SageMaker géré par l'IA avec la version de XGBoost package native que vous souhaitez utiliser. Pour trouver la version du package migrée vers les XGBoost conteneurs SageMaker AI, consultez les chemins de registre Docker et les exemples de code. Choisissez ensuite votre Région AWS et accédez à la section XGBoost(algorithme).
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})
Pour plus d'informations sur la configuration de l' XGBoost algorithme intégré, consultez les exemples de blocs-notes suivants.
Interface d'entrée/sortie pour l'algorithme XGBoost
Le boosting de gradient fonctionne sur les données tabulaires, avec les lignes représentant les observations, une colonne représentant la variable ou l'étiquette cible, et les autres colonnes représentant les fonctions.
La mise en œuvre de l' SageMaker IA XGBoost prend en charge les formats de données suivants pour la formation et l'inférence :
-
text/libsvm (par défaut)
-
text/csv
-
application/x-parquet
-
demande/ x-recordio-protobuf
Note
Il y a quelques points à prendre en compte concernant l'entrée d'entraînement et d'inférence :
-
Pour des performances accrues, nous vous recommandons XGBoost d'utiliser le mode Fichier, dans lequel vos données d'Amazon S3 sont stockées sur les volumes de l'instance d'entraînement.
-
Pour l'entraînement avec une entrée sous forme de colonnes, l'algorithme suppose que la variable cible (étiquette) correspond à la première colonne. Pour l'inférence, l'algorithme suppose que l'entrée n'a pas de colonne d'étiquettes.
-
Pour des données CSV, l'entrée ne doit pas comporter d'enregistrement d'en-tête.
-
Pour l'entraînement LIBSVM, l'algorithme suppose que les colonnes suivantes, après la colonne d'étiquettes, contiennent les paires de valeurs d'index basé sur zéro pour les fonctionnalités. Par conséquent, chaque ligne a le format suivant : <label> <index0>:<value0> <index1>:<value1>.
-
Pour en savoir plus sur les types d'instance et l'entraînement distribué, consultez EC2 recommandation d'instance pour l' XGBoostalgorithme.
Pour le mode de saisie d'entraînement CSV, la mémoire totale disponible pour l'algorithme doit être capable de contenir le jeu de données d'entraînement. La mémoire totale disponible est calculée comme suitInstance Count * the memory available in the InstanceType
. Pour le mode d'entrée de l'entraînement libsvm, ce n'est pas obligatoire, mais nous le recommandons.
Pour la version v1.3-1 et les versions ultérieures, SageMaker AI XGBoost enregistre le modèle dans le format binaire XGBoost interne, en utilisantBooster.save_model
. Les versions précédentes utilisaient le module pickle Python pour sérialiser/désérialiser le modèle.
Note
Faites attention aux versions lorsque vous utilisez un XGBoost modèle d' SageMaker IA en open source XGBoost. Les versions 1.3-1 et ultérieures utilisent le format binaire XGBoost interne tandis que les versions précédentes utilisent le module Python pickle.
Pour utiliser un modèle entraîné avec SageMaker AI XGBoost v1.3-1 ou version ultérieure en open source XGBoost
-
Utilisez le code Python suivant :
import xgboost as xgb xgb_model = xgb.Booster() xgb_model.load_model(
model_file_path
) xgb_model.predict(dtest
)
Pour utiliser un modèle formé avec les versions précédentes de l' SageMaker IA XGBoost en open source XGBoost
-
Utilisez le code Python suivant :
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
)
Pour différencier l'importance des points de données étiquetés, utilisez Instance Weight Supports
-
SageMaker L'IA XGBoost permet aux clients de différencier l'importance des points de données étiquetés en attribuant une valeur de pondération à chaque instance. Pour l'entrée text/libsvm, les clients peuvent attribuer des valeurs de pondération aux instances de données en les attachant après les étiquettes. Par exemple,
label:weight idx_0:val_0 idx_1:val_1...
. Pour l'entrée text/csv, les clients doivent activer l'indicateurcsv_weights
dans les paramètres et attacher les valeurs de pondération dans la colonne après les étiquettes. Par exemple :label,weight,val_0,val_1,...
).