Come usare SageMaker XGBoost - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Come usare SageMaker XGBoost

Con SageMaker, puoi usarlo XGBoost come algoritmo o framework integrato. In XGBoost quanto framework, hai più flessibilità e accesso a scenari più avanzati perché puoi personalizzare i tuoi script di formazione. Le sezioni seguenti descrivono come usare XGBoost con SageMaker Python SDK e l'interfaccia di input/output per l'algoritmo. XGBoost Per informazioni su come utilizzare XGBoost dall'interfaccia utente di Amazon SageMaker Studio Classic, consultaSageMaker JumpStart modelli preaddestrati.

Usa XGBoost come framework

Utilizzalo XGBoost come framework per eseguire script di formazione personalizzati in grado di incorporare un'ulteriore elaborazione dei dati nei tuoi lavori di formazione. Nel seguente esempio di codice, SageMaker Python SDK fornisce XGBoost API come framework. Funziona in modo simile a come SageMaker fornisce altri frameworkAPIs, come TensorFlowMXNet, e 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.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})

Per un end-to-end esempio di utilizzo SageMaker XGBoost come framework, consulta Regression with Amazon. SageMaker XGBoost

Utilizza XGBoost come algoritmo integrato

Utilizzate l'algoritmo XGBoost integrato per creare un contenitore di XGBoost addestramento, come mostrato nel seguente esempio di codice. È possibile individuare automaticamente l'immagine dell'algoritmo XGBoost integrato URI utilizzando il SageMaker image_uris.retrieveAPI. Se usi Amazon SageMaker Python SDK versione 1, usa la. get_image_uri API Per assicurarti che i image_uris.retrieve API risultati siano correttiURI, consulta Parametri comuni per gli algoritmi integrati. Quindi cerca xgboost dall'elenco completo delle immagini dell'algoritmo integrato URIs e delle regioni disponibili.

Dopo aver specificato l'XGBoostimmagineURI, usa il XGBoost contenitore per costruire uno stimatore utilizzando lo SageMaker Estimator API e avvia un processo di formazione. Questa modalità XGBoost algoritmica integrata non incorpora uno script di XGBoost addestramento personale e viene eseguita direttamente sui set di dati di input.

Importante

Quando recuperate l' SageMaker XGBoostimmagineURI, non utilizzate :latest o come tag :1 di immagineURI. È necessario specificare uno di questi Versioni supportate per scegliere il XGBoost contenitore SageMaker -managed con la versione del XGBoost pacchetto nativo che si desidera utilizzare. Per trovare la versione del pacchetto migrata nei SageMaker XGBoost contenitori, consulta Docker Registry Paths and Example Code. Quindi scegli il tuo Regione AWS e vai alla sezione XGBoost(algoritmo).

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 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})

Per ulteriori informazioni su come configurarlo XGBoost come algoritmo integrato, consulta i seguenti esempi di notebook.

Interfaccia di input/output per l'algoritmo XGBoost

Il gradient boosting agisce sui dati tabulari, con le righe che rappresentano le osservazioni, una colonna che rappresenta la variabile o l'etichetta di destinazione e le colonne rimanenti che rappresentano le caratteristiche.

L' SageMaker implementazione di XGBoost supporta i seguenti formati di dati per l'addestramento e l'inferenza:

  • text/libsvm (impostazione predefinita)

  • text/csv

  • application/x-parquet

  • applicazione/ x-recordio-protobuf

Nota

Ci sono alcune considerazioni da tenere a mente per quanto riguarda l’addestramento e l'input inferenziale:

  • Per migliorare le prestazioni, consigliamo di utilizzare XGBoost la modalità File, in cui i dati di Amazon S3 vengono archiviati nei volumi delle istanze di formazione.

  • Per l'addestramento con input colonnare, l'algoritmo presuppone che la variabile target (etichetta) sia la prima colonna. Per l'interferenza, l'algoritmo presuppone che l'input non disponga della colonna di etichette.

  • Per quanto riguarda CSV i dati, l'input non deve avere un record di intestazione.

  • Per l'LIBSVMaddestramento, l'algoritmo presuppone che le colonne successive alla colonna label contengano le coppie di valori dell'indice a base zero per le funzionalità. Quindi, ogni riga ha il formato: <label> <index0>:<value0> <index1>:<value1>.

  • Per informazioni sui tipi di istanze e sull’addestramento distribuito, vedere EC2raccomandazione di istanza per l'algoritmo XGBoost.

Per la modalità di input di CSV addestramento, la memoria totale disponibile per l'algoritmo deve essere in grado di contenere il set di dati di addestramento. La memoria totale disponibile viene calcolata comeInstance Count * the memory available in the InstanceType. Per la modalità di input dell’addestramento libsvm non è richiesto, sebbene lo consigliamo.

Per la versione 1.3-1 e successive, SageMaker XGBoost salva il modello nel formato binario XGBoost interno, utilizzando. Booster.save_model Le versioni precedenti utilizzavano il modulo pickle Python per serializzare/deserializzare il modello.

Nota

Fai attenzione alle versioni quando usi un SageMaker XGBoost modello in open source. XGBoost Le versioni 1.3-1 e successive utilizzano il formato binario XGBoost interno mentre le versioni precedenti utilizzano il modulo Python pickle.

Per utilizzare un modello addestrato con la versione SageMaker XGBoost 1.3-1 o successiva in open source XGBoost
  • Utilizza il seguente codice Python:

    import xgboost as xgb xgb_model = xgb.Booster() xgb_model.load_model(model_file_path) xgb_model.predict(dtest)
Per utilizzare un modello addestrato con versioni precedenti di SageMaker XGBoost in open source XGBoost
  • Utilizza il seguente codice Python:

    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)
Per differenziare l'importanza di punti dati contrassegnati utilizza Instance Weight Support
  • SageMaker XGBoostconsente ai clienti di differenziare l'importanza dei punti dati etichettati assegnando a ciascuna istanza un valore di peso. Per l'input text/libsvm, i clienti possono assegnare valori di peso alle istanze dati collegandoli dopo le etichette. Ad esempio label:weight idx_0:val_0 idx_1:val_1.... Per l'input text/csv, i clienti devono attivare il contrassegno csv_weights nei parametri e collegare i valori di peso nella colonna dopo le etichette. Ad esempio: label,weight,val_0,val_1,...).