Iniziare a utilizzare l'algoritmo Wide and Deep integrato

Con gli algoritmi integrati in AI Platform Training, puoi inviare i tuoi dati di addestramento, selezionare un algoritmo e lasciare che AI Platform Training gestisca automaticamente la pre-elaborazione e la formazione senza scrivere alcun codice per un'applicazione di addestramento.

Panoramica

In questo tutorial imparerai ad addestrare un modello ampio e profondo senza scrivere codice. Invia il set di dati relativo al reddito da censimento ad AI Platform Training per la pre-elaborazione e l'addestramento, quindi esegui il deployment del modello su AI Platform Training per ricevere le previsioni. Il modello risultante prevede la probabilità che il reddito annuo di un individuo sia maggiore di 50.000 $.

Prima di iniziare

Per completare questo tutorial dalla riga di comando, utilizza Cloud Shell o qualsiasi ambiente in cui è installato Google Cloud CLI.

Completa i seguenti passaggi per configurare un account GCP, abilitare le API richieste e installare e attivare Google Cloud CLI:

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API AI Platform Training & Prediction and Compute Engine.

    Abilita le API

  5. Installa Google Cloud CLI.
  6. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  7. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  8. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  9. Abilita le API AI Platform Training & Prediction and Compute Engine.

    Abilita le API

  10. Installa Google Cloud CLI.
  11. Per initialize gcloud CLI, esegui questo comando:

    gcloud init

Configurazione

Per utilizzare gli algoritmi tabulari integrati, devi rimuovere la riga di intestazione dal file CSV e spostare i valori di destinazione nella prima colonna. Abbiamo modificato il set di dati originale di Census per utilizzarlo con questo tutorial e lo abbiamo ospitato in un bucket Cloud Storage pubblico, gs://cloud-samples-data/ai-platform/census/algorithms/data/.

Console

Prima di iniziare il job di addestramento, devi copiare i dati dal bucket Cloud Storage pubblico al bucket Cloud Storage.

Copia i dati di esempio nel bucket Cloud Storage

  1. Per prima cosa, scarica i dati di addestramento e test dal nostro bucket Cloud Storage pubblico.

    1. Vai al bucket Cloud Storage pubblico:

      Recupera i dati di esempio

    2. Scarica sia test.csv che train.csv:

      1. Fai clic sul nome del file.

      2. Nella pagina Dettagli oggetto, fai clic su Scarica. Questi file vengono scaricati nel tuo ambiente locale rispettivamente come ai-platform_census_algorithms_data_test.csv e ai-platform_census_algorithms_data_train.csv.

  2. Carica i dati di addestramento e test nel bucket Cloud Storage.

    1. Vai alla pagina Browser del tuo bucket Cloud Storage. Seleziona il progetto dall'elenco a discesa Seleziona un progetto oppure aprilo in una nuova scheda:

      Pagina del browser Cloud Storage

    2. Fai clic sul nome del bucket che vuoi utilizzare o crea un nuovo bucket se non ne hai già uno. Se crei un nuovo bucket, assicurati che sia un bucket a livello di regione e seleziona la stessa regione in cui stai eseguendo il job di addestramento di AI Platform Training.

    3. (Facoltativo) Fai clic su Crea cartella per creare una cartella per i file che carichi. Inserisci un nome per la cartella (ad esempio, "data") e fai clic su Crea. Passa alla nuova cartella facendo clic sul nome.

    4. Fai clic su Carica file per caricare i file di addestramento e test, ai-platform_census_algorithms_data_train.csv e ai-platform_census_algorithms_data_test.csv nel bucket.

Ora che i dati sono stati copiati nel bucket, puoi iniziare un job di addestramento selezionando il tipo di algoritmo da utilizzare.

Seleziona il tuo algoritmo

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

    Pagina AI Platform Trainings di AI Platform

  2. Fai clic sul pulsante Nuovo job di addestramento. Fai clic su Addestramento con algoritmo integrato tra le opzioni visualizzate di seguito. Viene visualizzata la pagina Crea un nuovo job di addestramento.

  3. La creazione del job di addestramento è suddivisa in quattro passaggi. Il primo passaggio è l'algoritmo di addestramento. Seleziona wide e deep e fai clic su Next (Avanti).

gcloud

Configura le variabili di ambiente per l'ID progetto, il bucket Cloud Storage, il percorso di Cloud Storage dei dati di addestramento e la selezione dell'algoritmo.

Gli algoritmi integrati di AI Platform Training sono in container Docker ospitati in Container Registry.

PROJECT_ID=YOUR_PROJECT_ID
BUCKET_NAME=YOUR_BUCKET_NAME
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION

# Copy the training data into your Cloud Storage bucket, and set the path
# to your copy of the training data.
TRAINING_DATA_SOURCE=gs://cloud-samples-data/ai-platform/census/algorithms/data/train.csv
TRAINING_DATA_PATH=gs://$BUCKET_NAME/algorithms-demo/data/train.csv
gsutil cp $TRAINING_DATA_SOURCE $TRAINING_DATA_PATH

# Specify the Docker container URI specific to the algorithm.
IMAGE_URI="gcr.io/cloud-ml-algos/wide_deep_learner_cpu:latest"

Inviare un job di addestramento

Per inviare un job, devi specificare alcuni argomenti di addestramento di base e alcuni argomenti di base relativi all'algoritmo Wide and Deep.

Argomenti generali per il job di addestramento:

Argomenti del job di addestramento
Argomento Descrizione
job-id ID univoco per il job di addestramento. Puoi utilizzarlo per trovare i log per lo stato del job di addestramento dopo l'invio.
job-dir Percorso Cloud Storage in cui AI Platform Training salva i file di addestramento dopo aver completato un job di addestramento riuscito.
scale-tier Specifica i tipi di macchina per l'addestramento. Utilizza BASIC per selezionare una configurazione di una sola macchina.
master-image-uri URI Container Registry utilizzato per specificare il container Docker da utilizzare per il job di addestramento. Utilizza il container per l'algoritmo wide e deep integrato definito in precedenza come IMAGE_URI.
region Specificare la regione in cui eseguire il job di addestramento. Per questo tutorial, puoi utilizzare la regione us-central1.

Argomenti specifici per l'algoritmo Wide and Deep integrato:

Argomenti degli algoritmi
Argomento Descrizione
preprocess Argomento booleano che indica se AI Platform Training deve pre-elaborare i dati o meno.
model_type Indica il tipo di modello da addestrare: classificazione o regressione.
training_data_path Posizione di Cloud Storage ai dati di addestramento, che deve essere un file CSV.
learning_rate Il tasso di apprendimento utilizzato dallo strumento per ottimizzare lineare.
max_steps Numero di passaggi da eseguire per l'addestramento.
batch_size Numero di esempi da utilizzare per ogni passaggio dell'addestramento.
dnn_learning_rate Tasso di apprendimento che deve essere utilizzato dalla parte DNN del modello.
dnn_dropout Probabilità di abbandono.
hidden_units Una stringa separata da virgole che fa riferimento al numero di unità nascoste in ogni livello.
use_wide Se impostate, le colonne categoriche verranno utilizzate nella maggior parte del modello DNN.
embed_categories Se impostate, le colonne categoriche verranno utilizzate incorporate e utilizzate nella parte profonda del modello.

Per un elenco dettagliato di tutti gli altri flag di algoritmo wide e deep, consulta il riferimento ampio e profondo integrato.

Console

  1. Lascia selezionata l'opzione Attiva pre-elaborazione automatica dei dati.

  2. In Percorso dati di addestramento, fai clic su Sfoglia. Nel riquadro a destra, fai clic sul nome del bucket in cui hai caricato i dati di addestramento e vai al tuo file ai-platform_census_algorithms_data_train.csv.

  3. Lascia i campi per Dati di convalida e Dati di test alle impostazioni predefinite.

  4. In Directory di output, inserisci il percorso per il bucket Cloud Storage in cui vuoi che AI Platform Training archivi gli output del job di addestramento. Puoi inserire direttamente il percorso del bucket Cloud Storage oppure fare clic sul pulsante Sfoglia per selezionarlo.

    Per mantenere tutto organizzato, crea una nuova directory all'interno del tuo bucket Cloud Storage per questo job di addestramento. Puoi eseguire questa operazione nel riquadro Sfoglia.

    Tocca Next (Avanti).

  5. In Tipo di modello, seleziona Classificazione.

  6. Lascia invariate le impostazioni predefinite in tutti gli altri campi e fai clic su Avanti.

  7. Nella pagina Impostazioni job:

    1. Inserisci un ID job univoco (ad esempio "wide_deep_example").
    2. Inserisci una regione disponibile (ad es. "us-central1").
    3. Seleziona "BASE" per il livello di scalabilità.

    Fai clic su Fine per inviare il job di addestramento.

gcloud

  1. Configura tutti gli argomenti per il job di addestramento e l'algoritmo, prima di utilizzare gcloud per inviare il job:

    DATASET_NAME="census"
    ALGORITHM="wide_deep"
    MODEL_TYPE="classification"
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    
    # Give a unique name to your training job.
    DATE="$(date '+%Y%m%d_%H%M%S')"
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    # Make sure you have access to this Cloud Storage bucket.
    JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
    
  2. Invia il job:

    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_PATH
    

  3. Una volta inviato il job, puoi visualizzare i log utilizzando i seguenti comandi gcloud:

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

Informazioni sulla directory dei job

Dopo il completamento di un job di addestramento, AI Platform Training crea un modello addestrato nel bucket Cloud Storage, insieme ad altri elementi. All'interno di JOB_DIR puoi trovare la seguente struttura di directory:

  • artefatti/
    • metadata.json
  • model/ (una directory SaveModelModel che contiene anche un file deployment_config.yaml)
    • saved_model.pb
    • deployment_config.yaml
  • dati_elaborati/
    • test.csv
    • addestramento.csv
    • convalida.csv

La directory del job contiene anche diversi file di checkpoint di modelli in una directory "experiment".

Verifica che la struttura di directory in JOB_DIR corrisponda:

gsutil ls -a $JOB_DIR/*

Esegui il deployment del modello addestrato

AI Platform Prediction organizza i tuoi modelli addestrati utilizzando le risorse model e version. Un modello di previsione AI Platform è un container per le versioni del tuo modello di machine learning.

Per eseguire il deployment di un modello, devi creare una risorsa del modello in AI Platform Prediction, creare una versione del modello e utilizzare il modello e la versione per richiedere previsioni online.

Scopri di più su come eseguire il deployment dei modelli in AI Platform Prediction.

Console

  1. Nella pagina Job puoi trovare un elenco di tutti i job di addestramento. Fai clic sul nome del job di addestramento che hai appena inviato ("wide_deep_example" o sul nome del job che hai utilizzato).

  2. Nella pagina Dettagli job puoi visualizzare l'avanzamento generale del job o fare clic su Visualizza log per avere una visualizzazione più dettagliata del relativo stato.

  3. Una volta eseguito correttamente il job, viene visualizzato in alto il pulsante Esegui il deployment del modello. Fai clic su Esegui il deployment del modello.

  4. Seleziona "Esegui il deployment come nuovo modello" e inserisci un nome per il modello, ad esempio "wide_deep_model". Fai clic su Conferma.

  5. Nella pagina Crea versione, inserisci un nome per la versione, ad esempio "v1", e lascia le impostazioni predefinite per tutti gli altri campi. Fai clic su Salva.

  6. Nella pagina Dettagli modello viene visualizzato il nome della versione. La creazione della versione richiede alcuni minuti. Quando la versione è pronta, accanto al nome della versione viene visualizzato un segno di spunta.

  7. Fai clic sul nome della versione ("v1") per passare alla pagina Dettagli versione. Nel passaggio successivo di questo tutorial, invierai una richiesta di previsione

gcloud

Il processo di addestramento con l'algoritmo Wide and Deep integrato produce un file deployment_config.yaml che semplifica il deployment del modello su AI Platform Prediction per le previsioni.

  1. Copia il file nella directory locale e visualizzane il contenuto:

    gsutil cp $JOB_DIR/model/deployment_config.yaml .
    cat deployment_config.yaml
    

    Il file deployment_config.yaml dovrebbe essere simile al seguente:

    deploymentUri: gs://YOUR_BUCKET_NAME/algorithms_training/census_wide_deep_classification/20190227060114/model
    framework: TENSORFLOW
    labels:
      global_step: '1000'
      job_id: census_wide_deep_classification_20190227060114
      accuracy: '86'
    runtimeVersion: '1.14'
    pythonVersion: '2.7'
    
  2. Crea il modello e la versione in AI Platform Training:

    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    gcloud ai-platform models create $MODEL_NAME --regions $REGION
    
    # Create a model and a version using the file above.
    VERSION_NAME="v_${DATE}"
    
    gcloud ai-platform versions create $VERSION_NAME \
      --model $MODEL_NAME \
      --config deployment_config.yaml
    

    La creazione della versione richiede alcuni minuti.

Ricevere previsioni online

Quando richiedi le previsioni, devi assicurarti che i dati di input siano formattati allo stesso modo dei dati di addestramento. Prima dell'addestramento, AI Platform Training preelabora i tuoi dati trasformandoli nel corpus mostrato in metadata.json.

Il modello Wide and Deep applica una pre-elaborazione simile ai dati di input prima di eseguire previsioni.

Console

  1. Nella pagina Dettagli versione di "v1", la versione appena creata puoi inviare una richiesta di previsione di esempio.

    Seleziona la scheda Testa e utilizza.

  2. Copia il seguente esempio nel campo di immissione:

     {
       "instances": [
         {"csv_row": "44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States", "key": "dummy-key"}
       ]
     }
    
  3. Fai clic su Test.

    Il risultato della previsione di esempio include diversi campi. L'elenco classes mostra la classe prevista >50K':

    {
       "predictions": [
         {
           ...
           "classes": [
             ">50K"
           ],
           ...
         }
       ]
     }
    

    In questo caso, il modello di cui è stato eseguito il deployment prevede che la persona le cui informazioni fornite guadagna uno stipendio superiore a 50.000 $. Poiché l'addestramento non è deterministico, il modello potrebbe essere diverso.

gcloud

  1. Rivedi le ultime righe di metadata.json:

    gsutil cat $JOB_DIR/artifacts/metadata.json | tail
    

    L'oggetto target_column.mapping mostra come verranno visualizzate le classi previste nei risultati della previsione:

        "target_algorithm": "TensorFlow",
        "target_column": {
          "mapping": {
            "0": "<=50K",
            "1": ">50K"
          },
        "num_category": 2,
        "type": "classification"
      }
    }
    
  2. Prepara l'input della previsione per un'istanza di dati. Tieni presente che devi fornire ogni istanza di dati come oggetto JSON con i seguenti campi:

    • csv_row, una stringa contenente una riga di funzionalità separate da virgole nello stesso formato delle istanze utilizzate durante l'addestramento.
    • key, un identificatore di stringa univoco per ogni istanza. Questo funziona come una chiave di istanza che appare come parte dell'output della previsione, quindi puoi abbinare ogni previsione all'istanza di input corrispondente.

      Questo è necessario per la previsione batch, perché la previsione batch elabora l'input e salva l'output in un ordine imprevedibile.

      Per la previsione online, che produce output nello stesso ordine dell'input fornito, le chiavi di istanza sono meno cruciali. Questo esempio esegue la previsione solo su una singola istanza, quindi il valore della chiave dell'istanza non è importante.

    Per inviare una richiesta di previsione online utilizzando Google Cloud CLI, come in questo esempio, scrivi ogni istanza in una riga in un file JSON delimitato da nuova riga.

    Esegui questi comandi nel terminale per creare un input per una singola istanza che puoi inviare a AI Platform Prediction:

     # A sample record from census dataset. Ground truth is >50K
    RAW_DATA_POINT='44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States'
    
     # Create a prediction request file
    echo "{\"csv_row\": \"$RAW_DATA_POINT\", \"key\": \"dummy-key\"}" > sample_input.json
    
    # Check the prediction request file.
    cat sample_input.json
    
  3. Invia la richiesta di previsione:

    gcloud ai-platform predict \
      --model $MODEL_NAME \
      --version $VERSION_NAME \
      --json-instances sample_input.json \
      --format "value(predictions[0].classes[0])" \
      --signature-name "predict"
    

    L'output della previsione viene filtrato per mostrare solo la classe prevista:

    >50K
    

Molto probabilmente, il risultato della previsione è >50K. Il modello sottoposto a deployment prevede che la persona le cui informazioni fornite guadagna uno stipendio superiore a 50.000 $. Poiché l'addestramento non è deterministico, il modello potrebbe essere diverso.

Informazioni sui dati

Il set di dati relativo al reddito del censimento utilizzato da questo campione per l'addestramento è ospitato dal repository di machine learning della UC.

Dati del censimento per gentile concessione di: Lichman, M. (2013), Repository di machine learning UCI http://archive.ics.uci.edu/ml. Irvine, CA: Università della California, Scuola dell'informazione e informatica.

Passaggi successivi