L'addestramento con gli algoritmi integrati in AI Platform Training ti consente di inviare il tuo set di dati e addestrare un modello senza scrivere alcun 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 l'algoritmo XGBoost compatibile per l'esecuzione in 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 consente inoltre di utilizzare le GPU per l'addestramento, il che può velocizzare il processo di addestramento.
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'attuale implementazione si basa sulla versione 0.81 di XGBoost.
Limitazioni
Le seguenti funzionalità non sono supportate per l'addestramento con l'algoritmo XGBoost distribuito integrato:
- Pre-elaborazione. Questo algoritmo non supporta la preelaborazione automatica. Devi preparare manualmente i dati di addestramento e convalida in gruppi di file separati che soddisfino i requisiti descritti nella sezione seguente sulla formattazione dei dati di input.
- Addestramento di una singola replica. Questo algoritmo è progettato per utilizzare più maschere virtuali per l'addestramento. Utilizza l'algoritmo XGBoost integrato con una singola replica se vuoi eseguire l'addestramento utilizzando una singola macchina virtuale.
Tipi di macchine supportati
Puoi utilizzare qualsiasi livello di scalabilità di AI Platform Training o una combinazione valida di tipi di macchine con questo algoritmo, a condizione che la configurazione soddisfi i seguenti requisiti:
- Specifica un worker master 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 e usa lo stesso tipo di GPU per il worker master e per i worker. Assicurati che il tipo di macchina specificato supporti la configurazione della GPU.
- Non utilizzare TPU.
Formattare i dati di input
L'algoritmo XGBoost distribuito integrato funziona con dati tabulari numerici. Ogni riga di un set di dati rappresenta un'istanza e ogni colonna rappresenta un valore della funzionalità. La colonna target rappresenta il valore che vuoi prevedere.
Preparare i file CSV
I dati di input devono essere costituiti da uno o più file CSV con codifica UTF-8. Ogni file deve soddisfare i seguenti requisiti:
- I file CSV non devono avere una riga di intestazione. Se i file CSV hanno righe di intestazione che etichettano ogni colonna, rimuovi questa prima riga da ogni file.
- La colonna di destinazione deve essere la prima colonna.
- Per i job di addestramento della classificazione, la colonna target può contenere valori non numerici. Tutte le altre colonne devono contenere solo dati numerici.
- Per i job di addestramento della regressione, normalizza i valori target in modo che ogni valore sia compreso tra 0 e 1. Tutte le altre colonne devono contenere solo dati numerici.
Suddividere i dati per l'addestramento distribuito
Per fornire i dati di più file CSV quando invii un job di addestramento, utilizza
sostituzioni nei
percorsi Cloud Storage specificati per gli argomenti training_data_path
e
validation_data_path
. Tutti i
file CSV devono utilizzare lo stesso schema di colonne e soddisfare i requisiti descritti
nella sezione precedente.
L'algoritmo XGBoost distribuito integrato distribuisce i dati di addestramento tra le macchine virtuali in uno dei seguenti modi:
Se il numero di file CSV è maggiore o uguale al numero di macchine virtuali,l'algoritmo distribuisce i dati per file in ordine di round robin. In altre parole, il worker principale carica il primo file CSV, il primo worker carica il secondo file CSV e così via. Questo metodo di assegnazione dei file esegue un ciclo in modo che ogni macchina virtuale carichi 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 round robin. In altre parole, il worker principale carica la prima riga di ogni file CSV, il primo worker carica la seconda riga di ogni file CSV e così via. Questo metodo di assegnazione delle istanze esegue un ciclo in modo che ogni macchina virtuale carichi approssimativamente lo stesso numero di istanze.
Se specifichi l'argomento validation_data_path
, l'algoritmo carica anche i dati di convalida in uno di questi modi. Tuttavia, tieni presente che l'algoritmo carica i dati di addestramento e di convalida in modo indipendente. Ad esempio, se fornisci molti file di dati di addestramento, ma un solo file di dati di convalida, l'algoritmo potrebbe caricare i dati di addestramento per file e i dati di convalida per istanza.
Per ottenere il massimo rendimento, suddividi i dati di addestramento in più file CSV che rispettino le seguenti linee guida:
- Le dimensioni di ogni file non superano 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.
Controllare le autorizzazioni dei bucket Cloud Storage
Per archiviare i dati, utilizza un bucket Cloud Storage nello stesso progetto Google Cloud che utilizzi per eseguire i 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 macchine, l'algoritmo XGBoost distribuito integrato supporta l'utilizzo 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 le GPU.
Invia un job di addestramento XGBoost distribuito
Questa sezione spiega come inviare un job di addestramento XGBoost distribuito integrato. Utilizza la console Google Cloud o Google Cloud CLI per inviare il job.
Puoi trovare descrizioni complete degli iperparametri e di altri argomenti che puoi modificare per questo algoritmo nel riferimento per l'algoritmo XGBoost distribuito integrato.
L'esempio seguente presuppone che tu stia addestrando un classificatore sui dati del censimento che hai 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
Supponiamo che nessuno di questi file abbia righe di intestazione e che tu li abbia caricati
in Cloud Storage. L'esempio crea un job di addestramento che utilizza tre VM, ciascuna delle quali utilizza una GPU NVIDIA Tesla P100. Il job viene eseguito nella regione us-central1
.
Console Google Cloud
Vai alla pagina Job di AI Platform Training nella console Google Cloud:
Fai clic sul pulsante Nuovo job di addestramento. Tra le opzioni visualizzate di seguito, fai clic su Addestramento con algoritmi integrati.
Nella pagina Crea un nuovo job di addestramento, apri l'elenco a discesa Seleziona un algoritmo e seleziona XGBoost distribuito. Fai clic su Avanti.
Nella sezione Dati di addestramento, seleziona Usa più file archiviati in una directory di Cloud Storage dall'elenco a discesa. Utilizza il campo Percorso directory per selezionare la directory Cloud Storage contenente i file di addestramento. Nel campo Nome jolly, inserisci
train-*.csv
.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 la directory Cloud Storage contenente i file di convalida. Nel campo Nome carattere jolly, inserisci
eval-*.csv
.Nella sezione Output dell'addestramento, utilizza il campo Directory di output per selezionare una directory separata nel bucket Cloud Storage in cui archiviare l'output dell'addestramento. Fai clic su Avanti.
Personalizza gli argomenti dell'algoritmo per il job di addestramento o mantieni i valori predefiniti. Per scoprire di più sugli argomenti, segui i link nella console Google Cloud e consulta la documentazione di riferimento di XGBoost distribuito. Fai clic su Avanti.
Inserisci un nome a tua scelta nel campo ID job. Nell'elenco a discesa Regione, seleziona
us-central1
.Nell'elenco a discesa Livello di scalabilità, seleziona
CUSTOM
. Nella sezione Configurazione del cluster personalizzato, selezionastandard_p100
negli elenchi a discesa Tipo master e Tipo di worker. Nel campo Numero di worker, inserisci2
. Fai clic su Fine.Nella pagina Job, fai clic sull'ID del nuovo job per visualizzarne la pagina Dettagli job. Quindi fai clic su Visualizza log per visualizzare i log di addestramento.
Strumento gcloud
Imposta le variabili di ambiente per il job, sostituendo BUCKET con il nome del bucket Cloud Storage e DATA_DIRECTORY con il percorso della directory nel bucket che contiene i 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}"
Invia il job di addestramento utilizzando il comando
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
Monitora lo stato del job di addestramento visualizzando i log con
gcloud
. Consultagcloud ai-platform jobs describe
egcloud ai-platform jobs stream-logs
.gcloud ai-platform jobs describe ${JOB_ID} gcloud ai-platform jobs stream-logs ${JOB_ID}
Passaggi successivi
- Scopri di più su XGBoost.
- Consulta la documentazione di riferimento su XGBoost distribuito integrato per scoprire tutti i diversi parametri.