Addestramento con l'impiego dell'algoritmo XGBoost distribuito integrato

L'addestramento con algoritmi integrati su AI Platform Training ti consente di inviare il set di dati e addestra un modello senza scrivere codice di addestramento. Questa pagina spiega come funziona l'algoritmo XGBoost distribuito integrato e come utilizzarlo.

Panoramica

L'algoritmo XGBoost distribuito integrato è un wrapper per XGBoost compatibile con AI Platform Training.

A differenza dell'algoritmo XGBoost integrato con una singola replica, questo algoritmo consente di utilizzare più macchine virtuali in parallelo per l'addestramento su set di dati di grandi dimensioni. Questo algoritmo inoltre consente di utilizzare le GPU per l'addestramento, velocizzando così il processo.

AI Platform Training esegue l'addestramento utilizzando l'algoritmo XGBoost distribuito in base al tuo set di dati e ai parametri del modello che hai fornito. L'implementazione attuale si basa sulla versione 0.81 di XGBoost.

Limitazioni

Le seguenti funzionalità non sono supportate per l'addestramento con la algoritmo XGBoost distribuito:

Tipi di macchine supportati

Puoi utilizzare qualsiasi livello di scalabilità di AI Platform Training o una valida combinazione di macchine tipi con questo algoritmo, a condizione che soddisfa i seguenti requisiti:

  • Specifica un worker principale e almeno un worker.
  • Per ottenere le migliori prestazioni, specifica lo stesso tipo di macchina per il worker principale e per i worker.
  • Non specificare alcun server dei parametri.
  • Assicurati che la memoria totale delle macchine virtuali specificate sia almeno del 20% superiore alle dimensioni totali dei file dei dati di addestramento. In questo modo, le macchine virtuali possono caricare tutti i dati di addestramento in memoria e anche utilizzare memoria aggiuntiva per l'addestramento.
  • Se utilizzi GPU, assicurati che ogni macchina virtuale utilizzi una sola GPU. usano lo stesso tipo di GPU per il worker master e per i worker. Accertati che il tipo di macchina specificato supporta la GPU configurazione.
  • Non utilizzare TPU.

Formatta i dati di input

L'algoritmo XGBoost distribuito integrato funziona su dati tabulari numerici. Ogni riga di un set di dati rappresenta un'istanza e ogni colonna di un set di dati rappresenta un valore di caratteristica. La colonna target rappresenta il valore che vuoi prevedere.

Preparare i file CSV

I dati inseriti devono essere uno o più file CSV con codifica UTF-8. Ogni file devono soddisfare i seguenti requisiti:

  • I file CSV non devono avere una riga di intestazione. Se i file CSV hanno righe di intestazione etichettando ogni colonna, rimuovi questa prima riga da ogni file.
  • La colonna di destinazione deve essere la prima colonna.
  • Per i job di addestramento di classificazione, la colonna di destinazione può contenere dati non numerici e i relativi valori. Tutte le altre colonne devono contenere solo dati numerici.
  • Per i job di addestramento della regressione, normalizza i valori target in modo che ciascun valore sia compreso tra 0 e 1. Tutte le altre colonne devono contenere solo come dati numerici.

Suddividi i dati per l'addestramento distribuito

Per fornire dati di più file CSV quando invii un job di addestramento, usa caratteri jolly nel dei percorsi di Cloud Storage da te specificati per training_data_path validation_data_path argomenti. Tutti i I file CSV devono utilizzare lo stesso schema di colonne, soddisfare i requisiti descritti in nella sezione precedente.

L'algoritmo XGBoost distribuito integrato distribuisce i dati di addestramento di macchine virtuali in uno dei seguenti modi:

  • Se il numero di file CSV è maggiore o uguale al numero di file virtuali computer,l'algoritmo distribuisce i dati per file in ordine round robin. In altre parole, il worker master carica il primo file CSV, il primo worker carica il secondo file CSV e così via. Questo metodo di assegnazione dei loop dei file in cui ogni macchina virtuale carica all'incirca lo stesso numero di file.

  • Se il numero di file CSV è inferiore al numero di macchine virtuali, l'algoritmo distribuisce i dati per istanza in ordine di rotazione. In altre parole, il worker master carica la prima riga di ogni file CSV, la prima worker carica la seconda riga di ogni file CSV e così via. Questo metodo assegnando loop delle istanze in modo che ogni macchina virtuale carichi più o meno lo stesso e il numero di istanze.

Se specifichi l'argomento validation_data_path, anche l'algoritmo per caricare i dati di convalida in uno dei seguenti modi. Tuttavia, tieni presente che l'algoritmo carica i dati di addestramento e di convalida in modo indipendente. Ad esempio, se forniscono molti file di dati di addestramento, ma un solo file di dati di convalida, potrebbe caricare i dati di addestramento per file e caricare i dati di convalida in esecuzione in un'istanza Compute Engine.

Per ottenere le migliori prestazioni, suddividi i dati di addestramento in più file CSV che le seguenti linee guida:

  • Ogni file ha una dimensione inferiore a 1 GB.
  • Ogni file contiene all'incirca lo stesso numero di istanze.
  • Il numero di file è divisibile per il numero totale di macchine virtuali. Ad esempio, se esegui l'addestramento con un master e due worker, il numero di file è un múltiplo di 3.

Controlla le autorizzazioni del bucket Cloud Storage

Per archiviare i dati, utilizza un bucket Cloud Storage nello stesso Google Cloud progetto che stai utilizzando per eseguire job di AI Platform Training. In caso contrario, concedi l'accesso ad AI Platform Training al bucket Cloud Storage in cui sono archiviati i tuoi dati.

Utilizzo delle GPU

Come descritto nella sezione precedente sui tipi di macchina, l'algoritmo XGBoost distribuito integrato supporta l'uso di una singola GPU per macchina virtuale per l'addestramento.

Per sfruttare le GPU, imposta l'iperparametro tree_method su gpu_exact o gpu_hist quando invii il job di addestramento.

Scopri di più sul supporto di XGBoost per per GPU.

Invia un job di addestramento XGBoost distribuito

Questa sezione spiega come inviare un job di addestramento XGBoost distribuito integrato. Utilizza le funzionalità di nella console Google Cloud o in Google Cloud CLI per inviare il job.

Qui puoi trovare descrizioni complete degli iperparametri e di altri argomenti che puoi modificare per questo algoritmo nel riferimento per i modelli algoritmo XGBoost distribuito.

L'esempio seguente presuppone che tu stia addestrando un classificatore sui dati del censimento che il sistema operativo è stato suddiviso in tre file di dati di addestramento e tre file di dati di convalida:

  • train-0.csv
  • train-1.csv
  • train-2.csv
  • eval-0.csv
  • eval-1.csv
  • eval-2.csv

Supponi che nessuno di questi file abbia righe di intestazione e che li abbia caricati in Cloud Storage. L'esempio crea un job di addestramento che utilizza di macchine virtuali, ognuna delle quali utilizza un modello NVIDIA Tesla P100 GPU. Il job viene eseguito nel us-central1 regione.

Console Google Cloud

  1. Vai alla pagina Job di AI Platform Training nella console Google Cloud:

    Pagina Lavori di AI Platform Training

  2. Fai clic sul pulsante Nuovo job di addestramento. Dalle opzioni visualizzate di seguito, fai clic su Addestramento con l'algoritmo integrato.

  3. Nella pagina Crea un nuovo job di addestramento, apri Seleziona un algoritmo e seleziona Distributed XGBoost. Fai clic su Avanti.

  4. Nella sezione Dati di addestramento, seleziona Utilizza più file archiviati in un file Cloud Storage dall'elenco a discesa. Utilizza la Campo Directory path (Percorso directory) per selezionare la directory Cloud Storage che contiene i file di addestramento. Nel campo Nome carattere jolly, inserisci train-*.csv.

  5. Nella sezione Dati di convalida (facoltativo), seleziona Usa più file archiviati in una directory di Cloud Storage dall'elenco a discesa. Utilizza il campo Percorso directory per selezionare Cloud Storage contenente i file di convalida. Nel campo Nome carattere jolly, inserisci eval-*.csv.

  6. Nella sezione Output addestramento, utilizza il campo Directory di output per seleziona una directory separata nel tuo bucket Cloud Storage da archiviare l'output dell'addestramento. Fai clic su Next (Avanti).

  7. Personalizza gli Argomenti dell'algoritmo per il job di addestramento o mantieni il valore i valori predefiniti. Per scoprire di più sugli argomenti, segui i link nella sezione nella console Google Cloud e consulta la piattaforma XGBoost integrata riferimento. Fai clic su Next (Avanti).

  8. Inserisci un nome a tua scelta nel campo ID job. Dalla regione dall'elenco a discesa, seleziona us-central1.

    Nell'elenco a discesa Livello di scalabilità, seleziona CUSTOM. Nella sezione Configurazione del cluster personalizzato, seleziona standard_p100 negli elenchi a discesa Tipo master e Tipo di worker. Nella sezione Conteggio worker inserisci 2. Fai clic su Fine.

  9. Nella pagina Job, fai clic sull'ID del nuovo job per visualizzarne la pagina Dettagli job. Poi fai clic su Visualizza log per visualizzare i log di addestramento.

strumento gcloud

  1. Imposta le variabili di ambiente per il job, sostituendo BUCKET con il nome del tuo bucket Cloud Storage DATA_DIRECTORY con il percorso della directory nel tuo bucket contenente i tuoi dati:

    # Specify the Docker container for your built-in algorithm selection.
    IMAGE_URI='gcr.io/cloud-ml-algos/xgboost_dist:latest'
    
    # Specify the Cloud Storage wildcard paths to your training and validation data.
    TRAINING_DATA='gs://BUCKET/DATA_DIRECTORY/train-*.csv'
    VALIDATION_DATA='gs://BUCKET/DATA_DIRECTORY/eval-*.csv'
    
    # Variables for constructing descriptive names for JOB_ID and JOB_DIR
    DATASET_NAME='census'
    ALGORITHM='xgboost_dist'
    MODEL_TYPE='classification'
    DATE='date '+%Y%m%d_%H%M%S''
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    
    # Specify an ID for this job
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    # Specify the directory where you want your training outputs to be stored
    JOB_DIR="gs://BUCKET/algorithm_training/${MODEL_NAME}/${DATE}"
    
  2. Invia il job di addestramento utilizzando gcloud ai-platform jobs training submit :

    gcloud ai-platform jobs submit training $JOB_ID \
      --region=us-central1 \
      --master-image-uri=$IMAGE_URI \
      --job-dir=$JOB_DIR \
      --scale-tier=CUSTOM \
      --master-machine-type=n1-standard-4 \
      --master-accelerator count=1,type=nvidia-tesla-p100 \
      --worker-machine-type=n1-standard-4 \
      --worker-count=2 \
      --worker-accelerator count=1,type=nvidia-tesla-p100 \
      -- \
      --training_data_path=$TRAINING_DATA \
      --validation_data_path=$VALIDATION_DATA \
      --objective=binary:logistic \
      --tree_method=gpu_hist
    
  3. Monitora lo stato del job di addestramento visualizzando i log con gcloud. Consulta gcloud ai-platform jobs describe e gcloud ai-platform jobs stream-logs.

    gcloud ai-platform jobs describe ${JOB_ID}
    gcloud ai-platform jobs stream-logs ${JOB_ID}
    

Passaggi successivi