L'addestramento con algoritmi integrati in AI Platform Training ti consente di inviare il tuo set di dati e addestrare un modello senza scrivere codice di addestramento. In questa pagina viene spiegato come funziona l'algoritmo Wide and Deep integrato e come utilizzarlo.
Panoramica
Questo algoritmo integrato esegue la pre-elaborazione e l'addestramento:
- Pre-elaborazione: l'addestramento con AI Platform elabora la tua combinazione di dati categorici e numerici in un set di dati interamente numerico al fine di prepararla per l'addestramento.
- Addestramento: utilizzando il set di dati e i parametri del modello forniti, AI Platform Training esegue l'addestramento con lo strumento Wide and Deep Planner di TensorFlow.
Limitazioni
Le seguenti funzionalità non sono supportate per l'addestramento con l'algoritmo Wide and Deep integrato:
- Addestramento con più GPU. Gli algoritmi integrati utilizzano solo una GPU alla volta. Per sfruttare appieno l'addestramento con più GPU su un'unica macchina, devi creare un'applicazione di addestramento. Consulta ulteriori informazioni sui tipi di macchina.
- Addestramento con TPU. Per l'addestramento con TPU, devi creare un'applicazione di addestramento. Scopri come eseguire un job di addestramento con le TPU.
- Formazione distribuita. Per eseguire un job di addestramento distribuito su AI Platform Training, devi creare un'applicazione di addestramento.
Tipi di macchine supportati
Sono supportati i seguenti livelli e tipi di macchine di AI Platform Training:
BASIC
livello di scalabilità- Livello di scalabilità
CUSTOM
con uno qualsiasi dei tipi di macchine di Compute Engine supportati da AI Platform Training. CUSTOM
del livello di scalabilità con uno dei seguenti tipi di macchina legacy:standard
large_model
complex_model_s
complex_model_m
complex_model_l
standard_gpu
standard_p100
standard_v100
large_model_v100
Formatta i dati di input
Ogni riga di un set di dati rappresenta un'istanza e ogni colonna di un set di dati rappresenta un valore della funzionalità. La colonna target rappresenta il valore da prevedere.
Prepara il file CSV
I dati di input devono essere un file CSV con codifica UTF-8. Se i dati di addestramento sono composti solo da valori numerici e categorici, puoi utilizzare il nostro modulo di pre-elaborazione per inserire valori numerici mancanti, suddividere il set di dati e rimuovere le righe con più del 10% dei valori mancanti. In caso contrario, puoi eseguire l'addestramento senza attivare automaticamente la pre-elaborazione.
Devi preparare il file CSV di input per soddisfare i seguenti requisiti:
- Rimuovi la riga di intestazione. La riga di intestazione contiene le etichette per ogni colonna. Rimuovi la riga di intestazione per evitare di inviarla con le altre istanze di dati come parte dei dati di addestramento.
- Assicurati che la colonna di destinazione sia la prima colonna. La colonna target contiene il valore che stai cercando di prevedere. Per un algoritmo di classificazione, tutti i valori nella colonna di destinazione sono una classe o una categoria. Per un algoritmo di regressione, tutti i valori nella colonna di destinazione sono un valore numerico.
Gestire i valori interi
Il significato dei valori interi può essere ambiguo, il che rende le colonne di valori interi problematici nella pre-elaborazione automatica. AI Platform Training determina automaticamente come gestire i valori interi. Per impostazione predefinita:
- Se ogni valore intero è univoco, la colonna viene trattata come chiavi di istanza.
- Se ci sono solo alcuni valori interi univoci, la colonna viene considerata come categoria.
- In caso contrario, i valori nella colonna vengono convertiti in floating e trattati come valori numerici.
Per eseguire l'override di queste determinazioni predefinite:
- Se i dati devono essere considerati come numerici, converti tutti i valori interi nella colonna in virgola mobile, ad esempio {101.0, 102.0, 103.0}
- Se i dati devono essere trattati come categorici, anteponi un prefisso non numerico a tutti i valori interi nella colonna, ad esempio {code_101, codice_102, code_103}
Verifica le autorizzazioni dei bucket Cloud Storage
Per archiviare i dati, utilizza un bucket Cloud Storage nello stesso progetto Google Cloud che stai utilizzando per eseguire job di AI Platform Training. In caso contrario, concedi l'accesso AI Platform Training al bucket Cloud Storage in cui sono archiviati i tuoi dati.
Invia un job di addestramento ampio e profondo
Questa sezione spiega come inviare un job di addestramento utilizzando l'algoritmo integrato di Wide and Deep.
Puoi trovare brevi spiegazioni di ogni iperparametro nella console Google Cloud e una spiegazione più completa nel riferimento per l'algoritmo Wide and Deep integrato.
Console
Vai alla pagina AI Platform Training Jobs di AI Platform nella console Google Cloud:
Fai clic sul pulsante Nuovo job di addestramento. Fai clic su Addestramento con algoritmo integrato tra le opzioni visualizzate di seguito.
Nella pagina Crea un nuovo job di addestramento, seleziona Wide and deep integrato e fai clic su Avanti.
Per scoprire di più su tutti i parametri disponibili, segui i link nella console Google Cloud e consulta la pagina Riferimento ampio e profondo integrato per maggiori dettagli.
gcloud
Imposta le variabili di ambiente per il job, inserendo
[VALUES-IN-BRACKETS]
con i tuoi valori:# Specify the name of the Cloud Storage bucket where you want your # training outputs to be stored, and the Docker container for # your built-in algorithm selection. BUCKET_NAME='[YOUR-BUCKET-NAME]' IMAGE_URI='gcr.io/cloud-ml-algos/wide_deep_learner_cpu:latest' # Specify the Cloud Storage path to your training input data. TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv' DATASET_NAME='census' ALGORITHM='wide_deep' MODEL_TYPE='classification' DATE='date '+%Y%m%d_%H%M%S'' MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}" JOB_ID="${MODEL_NAME}_${DATE}" JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
Invia il job di addestramento con
gcloud ai-platform jobs training submit
:gcloud ai-platform jobs submit training $JOB_ID \ --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \ -- \ --preprocess --model_type=$MODEL_TYPE --batch_size=250 --learning_rate=0.1 \ --dnn_learning_rate=0.005 --dnn_dropout=0.1 --hidden_units=10,10,10 \ --use_wide --embed_categories \ --max_steps=1000 --training_data_path=$TRAINING_DATA
Monitora lo stato del job di addestramento visualizzando i log con
gcloud
. Fai riferimento agcloud 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}
Come funziona la pre-elaborazione
La pre-elaborazione automatica funziona per dati categorici e numerici. La routine di pre-elaborazione innanzitutto analizza e poi trasforma i dati.
Analisi
Innanzitutto, AI Platform Training rileva automaticamente il tipo di dati di ogni colonna, identifica in che modo deve essere trattato ogni colonna e calcola alcune statistiche dei dati al suo interno. Queste informazioni vengono acquisite nel file metadata.json
.
AI Platform Training analizza il tipo della colonna di destinazione per identificare se il set di dati specificato è destinato alla regressione o alla classificazione. Se questa analisi è in conflitto con la tua selezione per model_type
, viene restituito un errore. Descrivi in modo esplicito la modalità di trattamento della colonna di destinazione formattando in modo chiaro i dati in casi ambigui.
Tipo: la colonna può essere numerica o categorica.
Trattamento: AI Platform Training identifica come trattare ogni colonna nel seguente modo:
- Se la colonna include un singolo valore in tutte le righe, viene trattata come una costante.
- Se la colonna è categorica e include valori univoci in tutte le righe, viene trattata come row_identifier.
- Se la colonna è numerica con valori decimali o se è numerica con valori interi e contiene molti valori unici, la colonna viene trattata come numerica.
- Se la colonna è numerica con valori interi e contiene pochi valori unici sufficienti, viene trattata come colonna categorica in cui i valori interi sono identity o vocabulary.
- Si considera che una colonna abbia alcuni valori univoci se il numero di valori univoci nella colonna è inferiore al 20% del numero di righe nel set di dati di input.
- Se la colonna è categorica con un'alta cardinalità, la colonna viene trattata con hashing, dove il numero di bucket hash è uguale alla radice quadrata del numero di valori unici nella colonna.
- Una colonna categorica ha una cardinalità elevata se il numero di valori unici è maggiore della radice quadrata del numero di righe nel set di dati.
- Se la colonna è categorica e il numero di valori unici è inferiore o uguale alla radice quadrata del numero di righe nel set di dati, la colonna viene trattata come una normale colonna categorica con vocabolario.
Statistiche: AI Platform Training calcola le seguenti statistiche, in base al tipo e alla modalità di trattamento delle colonne identificate, da utilizzare per trasformare la colonna in una fase successiva.
- Se la colonna è numerica, vengono calcolati i valori medi e di varianza.
- Se la colonna è di tipo categorico e il trattamento è rappresentato da identità o vocabolario, i valori distinti vengono estratti dalla colonna.
- Se la colonna è di tipo categorico e il trattamento prevede l'hashing, il numero di bucket di hash viene calcolato in base alla cardinalità della colonna.
Trasformazione
Dopo che l'analisi iniziale del set di dati è stata completata, AI Platform Training trasforma i tuoi dati in base ai tipi, ai trattamenti e alle statistiche applicati al set di dati. AI Platform Training esegue trasformazioni nel seguente ordine:
- Suddividi il set di dati di addestramento in set di dati di convalida e test se specifichi le percentuali.
- Rimuove le righe che contengono più del 10% delle caratteristiche mancanti.
- Riempie i valori numerici mancanti utilizzando la media della colonna.
Esempi di trasformazioni
Le righe con il 10% dei valori mancanti vengono rimosse. Negli esempi seguenti, supponiamo che la riga abbia 10 valori. Ogni riga di esempio è troncata per semplicità.
Problema di riga | Valori originali | Valori trasformati | Spiegazione |
---|---|---|---|
Riga di esempio senza valori mancanti | [3, 0,45, ..., 'frutta', 0, 1] |
[3, 0,45, ..., 1, 0, 0, 0, 1] |
La stringa "frutta", viene trasformata nei valori "1, 0, 0" nella codifica one-hot. Questo avviene più tardi nel grafico TensorFlow. |
Troppi valori mancanti | [3, 0,45, ..., 'frutta', __, __] |
Riga rimossa | Più del 10% dei valori nella riga risulta mancante. |
Valore numerico mancante | [3, 0,45, ..., 'frutta), 0, __] |
[3, 0,45, ..., 1, 0, 0, 0, 0,54] |
|
Valore categorico mancante | [3, 0,45, ..., __, 0, 1] |
[3, 0,45, ..., 0, 0, 0, 0, 1] |
|
Colonne funzionalità
Durante la trasformazione, le colonne non vengono elaborate. I metadati prodotti durante l'analisi vengono invece trasferiti ad AI Platform Training per creare le colonne delle funzionalità di conseguenza:
Tipo di colonna | Trattamento colonne | Colonna della funzionalità risultante |
---|---|---|
Numerico | (Tutti i tipi di trattamento a colonne) |
tf.feature_column.numeric_column
I valori medi e di varianza vengono utilizzati per standardizzare i valori: |
Categorico | Identità |
tf.feature_column.categorical_column_with_identity
|
Categorico | Vocabolario |
tf.feature_column.categorical_column_with_vocabulary_list
|
Categorico | Hashing |
tf.feature_column.categorical_column_with_hash_bucket
|
Categorico | Identificatore costante o di riga | Ignorato. Nessuna colonna funzione creata. |
Colonne di funzionalità aggiuntive
Puoi utilizzare le colonne categoriche nell'ampia parte del modello DNN
(use_wide
) o incorporarle nella parte profonda del modello
(embed_categories
). A seconda delle selezioni, vengono aggiunte le seguenti
colonne di funzionalità aggiuntive:
use_wide attivo |
embed_categories attivo |
Risultato |
---|---|---|
Vero | Vero o falso | La funzionalità riguarda l'ampia parte del modello. |
Vero o falso | Vero | Viene creata una colonna per le funzionalità di incorporamento per la colonna categorica, dove la dimensione di incorporamento è impostata sul soffitto della radice quadrata del numero di categorie nella colonna. Questa colonna della funzionalità di incorporamento va alla parte profonda del modello. |
falso. | falso. | Viene creata una colonna indicatore per la colonna categoriale. La colonna degli indicatori si riferisce alla parte profonda del modello. |
Al termine della pre-elaborazione automatica, AI Platform Training carica il set di dati elaborato nel bucket Cloud Storage nella directory specificata nella richiesta di job.
Passaggi successivi
- Scopri di più su come funziona l'algoritmo Wide and Deep integrato.
- Scopri di più sulle colonne delle funzionalità di TensorFlow.