Introduzione all'algoritmo di Linear Learner integrato

Con gli algoritmi integrati in AI Platform Training, puoi inviare i dati di addestramento, selezionare un algoritmo e lasciare che AI Platform Training gestisca la preelaborazione e l'addestramento per te, senza scrivere codice per un'applicazione di addestramento.

Panoramica

In questo tutorial, addestri un modello di Linear Learner senza scrivere alcun codice. Invii il set di dati Census Income ad AI Platform Training per il pretrattamento e l'addestramento, quindi esegui il deployment del modello su AI Platform Training per ottenere le previsioni. Il modello risultante prevede la probabilità che il reddito annuo di un individuo sia superiore a 50.000 $.

Prima di iniziare

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

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

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Configurazione

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

Console

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

Copia i dati di esempio nel bucket Cloud Storage

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

    1. Vai al nostro bucket Cloud Storage pubblico:

      Ottieni 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 come ai-platform_census_algorithms_data_test.csv e ai-platform_census_algorithms_data_train.csv rispettivamente.

  2. Poi carica i dati di addestramento e test nel tuo bucket Cloud Storage.

    1. Vai alla pagina Browser per il tuo bucket Cloud Storage. Seleziona il progetto dall'elenco a discesa Seleziona un progetto o apri una nuova scheda:

      Pagina Browser Cloud Storage

    2. Fai clic sul nome del bucket che vuoi utilizzare o creane uno nuovo se non ne hai uno. Se crei un nuovo bucket, assicurati che sia un bucket regionale 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 es. "data") e fai clic su Crea. Poi, vai alla nuova cartella facendo clic sul nome della cartella.

    4. Fai clic su Carica file per caricare i file di addestramento e di 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 avviare un job di addestramento selezionando il tipo di algoritmo che vuoi utilizzare.

Selezionare l'algoritmo

  1. Vai alla pagina Job di addestramento della piattaforma AI 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 algoritmi integrati. Viene visualizzata la pagina Crea un nuovo job di addestramento.

  3. La creazione del job di addestramento è suddivisa in quattro passaggi. Il primo passaggio è Algoritmo di addestramento. Seleziona Apprendente lineare e fai clic su Avanti.

gcloud

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

Gli algoritmi integrati di AI Platform Training si trovano 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
gcloud storage cp $TRAINING_DATA_SOURCE $TRAINING_DATA_PATH

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

Invia un job di addestramento

Per inviare un job, devi specificare alcuni argomenti di addestramento di base e alcuni argomenti di base correlati all'algoritmo di Linear Learner.

Argomenti generali per il job di addestramento:

Argomenti dei job di addestramento
Argomento Descrizione
job-id ID univoco per il tuo job di addestramento. Puoi utilizzarlo per trovare i log relativi allo stato del job di addestramento dopo l'invio.
job-dir Percorso di 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 macchine per l'addestramento. Utilizza BASIC per selezionare una configurazione di una sola macchina.
master-image-uri URI di Container Registry utilizzato per specificare il container Docker da usare per il job di addestramento. Utilizza il contenitore per l'algoritmo di Linear Learner integrato definito in precedenza come IMAGE_URI.
region Specifica la regione disponibile in cui eseguire il job di addestramento. Per questo tutorial, puoi utilizzare la regione us-central1.

Argomenti specifici per l'algoritmo Linear Learner integrato:

Argomenti degli algoritmi
Argomento Descrizione
preprocess Argomento booleano che indica se AI Platform Training deve pre-elaborare o meno i dati.
model_type Indica il tipo di modello da addestrare: classificazione o regressione.
training_data_path Posizione Cloud Storage dei dati di addestramento, che devono essere un file CSV.
learning_rate Il tasso di apprendimento utilizzato dall'ottimizzatore lineare.
max_steps Numero di passaggi per i quali eseguire l'addestramento.
batch_size Numero di esempi da utilizzare per passaggio di addestramento.

Per un elenco dettagliato di tutti gli altri flag dell'algoritmo di Linear Learner, consulta il riferimento all'Linear Learner integrato.

Console

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

  2. In Percorso dei 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 file ai-platform_census_algorithms_data_train.csv.

  3. Lascia i campi per i dati di convalida e i dati di test con le impostazioni predefinite.

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

    Per mantenere tutto in ordine, crea una nuova directory all'interno del tuo bucket Cloud Storage per questo job di addestramento. Puoi farlo nel riquadro Sfoglia.

    Fai clic su Avanti.

  5. Per Tipo di modello, seleziona Classificazione.

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

  7. Nella pagina Impostazioni job:

    1. Inserisci un ID job univoco (ad esempio "linear_example").
    2. Inserisci una regione disponibile (ad esempio "us-central1").
    3. Seleziona "BASE" per il livello della scala.

    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="linear"
    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 --max_steps=1000 --training_data_path=$TRAINING_DATA_PATH

  3. Dopo che il job è stato inviato correttamente, 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

Al termine di un job di addestramento, AI Platform Training crea un modello addestrato nel tuo bucket Cloud Storage, insieme ad alcuni altri gli artefatti. All'interno di JOB_DIR puoi trovare la seguente struttura di directory:

  • artifacts/
    • metadata.json
  • model/ (una directory SavedModel di TensorFlow che contiene anche un file deployment_config.yaml)
    • saved_model.pb
    • deployment_config.yaml
  • processed_data/
    • test.csv
    • training.csv
    • validation.csv

La directory del job contiene anche vari file di checkpoint del modello in una directory "experiment".

Verifica che la struttura della directory in JOB_DIR corrisponda a:

gcloud storage ls $JOB_DIR/* --all-versions

Esegui il deployment del modello addestrato

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

Per eseguire il deployment di un modello, crea una risorsa modello in AI Platform Prediction, crea una versione del modello e poi utilizza il modello e la versione per richiedere le 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 tuoi job di addestramento. Fai clic sul nome del job di addestramento che hai appena inviato ("linear_example" o il 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 una visualizzazione più dettagliata dell'avanzamento.

  3. Se il job ha esito positivo, nella parte superiore viene visualizzato 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 del modello, ad esempio "modello_lineare". Poi, fai clic su Conferma.

  5. Nella pagina Crea versione, inserisci un nome per la versione, ad esempio "v1", e lascia invariate le impostazioni predefinite di 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 viene visualizzata un'icona con un segno di spunta.

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

gcloud

Il processo di addestramento con l'algoritmo di Linear Learner 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 tua directory locale e visualizzane i contenuti:

    gcloud storage cp $JOB_DIR/model/deployment_config.yaml .
    cat deployment_config.yaml
    

    Il file deployment_config.yaml dovrebbe avere il seguente aspetto:

    deploymentUri: gs://YOUR_BUCKET_NAME/algorithms_training/census_linear_classification/20190227060114/model
    framework: TENSORFLOW
    labels:
      global_step: '1000'
      job_id: census_linear_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 nello stesso modo dei dati di addestramento. Prima dell'addestramento, AI Platform Training esegue la preelaborazione dei dati trasformandoli nel corpus mostrato in metadata.json.

Il modello di Linear Learner applica una preelaborazione simile ai dati di input prima di fare previsioni.

Console

  1. Nella pagina Dettagli versione per "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 ha 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 di cui hai fornito le informazioni guadagni uno stipendio superiore a 50.000 $. Poiché l'addestramento non è deterministico, il modello potrebbe essere diverso.

gcloud

  1. Esamina le ultime righe di metadata.json:

    gcloud storage 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 di 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. Questa operazione funge da chiave istanza che viene visualizzata nell'output della previsione, in modo da poter associare ogni previsione all'istanza di input corrispondente.

      Questo è necessario per le previsioni batch, perché le previsioni batch elaborano l'input e salvano 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 importanti. Questo esempio esegue la previsione solo su una singola istanza, pertanto 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 di un file JSON delimitato da interruzioni di riga.

    Esegui i seguenti comandi nel terminale per creare un input per una singola istanza che puoi inviare ad 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 di questa previsione viene filtrato per mostrare solo la classe prevista:

    >50K
    

Molto probabilmente, l'output della previsione è >50K. Il modello di cui è stato eseguito il deployment prevede che la persona di cui hai fornito le informazioni guadagni uno stipendio superiore a 50.000 $. Poiché l'addestramento non è deterministico, il modello potrebbe essere diverso.

Informazioni sui dati

Il set di dati Census Income utilizzato da questo esempio per l'addestramento è ospitato dal UC Irvine Machine Learning Repository.

Dati del censimento forniti da: Lichman, M. (2013). UCI Machine Learning Repository http://archive.ics.uci.edu/ml. Irvine, CA: University of California, School of Information and Computer Science.

Passaggi successivi