Introduzione all'addestramento personalizzato: erogazione di previsioni da un modello di classificazione delle immagini personalizzato

Questa pagina illustra come generare previsioni dal modello di classificazione delle immagini e visualizzarle in un'app web.

Questo tutorial è composto da diverse pagine:

  1. Configurazione del progetto e dell'ambiente.

  2. Addestramento di un modello di classificazione delle immagini personalizzato.

  3. Generazione di previsioni da un modello di classificazione delle immagini personalizzato.

  4. Pulizia del progetto.

Ogni pagina presuppone che tu abbia già eseguito le istruzioni delle pagine precedenti del tutorial.

Il resto di questo documento presuppone che tu stia utilizzando lo stesso ambiente Cloud Shell che hai creato seguendo la prima pagina di questo tutorial. Se la sessione originale di Cloud Shell non è più aperta, puoi tornare all'ambiente nel seguente modo:

  1. Nella console Google Cloud , attiva Cloud Shell.

    Attiva Cloud Shell

  2. Nella sessione di Cloud Shell, esegui questo comando:

    cd hello-custom-sample

Creazione di un endpoint

Per ottenere previsioni online dal modello ML che hai addestrato seguendo la pagina precedente di questo tutorial, crea un endpoint di Agent Platform. Gli endpoint forniscono previsioni online da uno o più modelli.

  1. Nella console Google Cloud , nella sezione Agent Platform, vai alla pagina Modelli.

    Vai a Modelli

  2. Trova la riga del modello che hai addestrato nel passaggio precedente di questo tutorial, hello_custom, e fai clic sul nome del modello per aprire la pagina dei dettagli del modello.

  3. Nella scheda Deployment e test, fai clic su Deployment su endpoint per aprire il riquadro Deployment su endpoint.

  4. Nel passaggio Definisci l'endpoint, aggiungi alcune informazioni di base per l'endpoint:

    1. Seleziona Crea nuovo endpoint.

    2. Nel campo Nome endpoint, inserisci hello_custom.

    3. Nella sezione Impostazioni del modello, assicurati di visualizzare il nome del tuo modello, chiamato anche hello_custom. Specifica le seguenti impostazioni del modello:

      1. Nel campo Suddivisione del traffico, inserisci 100. Agent Platform supporta la suddivisione del traffico per un endpoint su più modelli, ma questo tutorial non utilizza questa funzionalità.

      2. Nel campo Numero minimo di nodi di computing, inserisci 1.

      3. Nell'elenco a discesa Tipo di macchina, seleziona n1-standard-2 dalla sezione Standard.

      4. Fai clic su Fine.

    4. Nella sezione Logging, assicurati che entrambi i tipi di logging delle previsioni siano abilitati.

    Fai clic su Continua.

  5. Nel passaggio Dettagli endpoint, verifica che il deployment dell'endpoint venga eseguito in us-central1 (Iowa).

    Non selezionare la casella di controllo Utilizza una chiave di crittografia gestita dal cliente (CMEK). Questo tutorial non utilizza CMEK.

  6. Fai clic su Esegui il deployment per creare l'endpoint ed eseguire il deployment del modello nell'endpoint.

Dopo qualche minuto, accanto al nuovo endpoint nella tabella Endpoint viene visualizzato . Allo stesso tempo, riceverai anche un'email che ti informa che hai creato l'endpoint ed eseguito il deployment del modello nell'endpoint.

Esegui il deployment di una funzione Cloud Run

Puoi ottenere previsioni dall'endpoint di Agent Platform appena creato inviando richieste all'interfaccia REST dell'API Agent Platform. Tuttavia, solo le entità con l'autorizzazione aiplatform.endpoints.predict possono inviare richieste di previsione online. Non puoi rendere pubblico l'endpoint per consentire a chiunque di inviare richieste, ad esempio tramite un'app web.

In questa sezione, esegui il deployment del codice in Cloud Run Functions per gestire le richieste non autenticate. Il codice campione che hai scaricato quando hai letto la prima pagina di questo tutorial contiene il codice per questa funzione Cloud Run nella directory function/. Facoltativamente, esegui questo comando per esplorare il codice della funzione Cloud Run:

less function/main.py

Il deployment della funzione ha i seguenti scopi:

  • Puoi configurare una funzione Cloud Run per ricevere richieste non autenticate. Inoltre, le funzioni vengono eseguite utilizzando un account di servizio con il ruolo Editor per impostazione predefinita, che include l'autorizzazione aiplatform.endpoints.predict necessaria per ottenere previsioni dall'endpoint della piattaforma dell'agente.

  • Questa funzione esegue anche una pre-elaborazione utile sulle richieste. L'endpoint di Agent Platform prevede che le richieste di previsione abbiano il formato del primo livello del grafico TensorFlow Keras addestrato: un tensore di float normalizzati con dimensioni fisse. La funzione prende l'URL di un'immagine come input e pre-elabora l'immagine in questo formato prima di richiedere una previsione all'endpoint di Agent Platform.

Per eseguire il deployment della funzione Cloud Run, segui questi passaggi:

  1. Nella console Google Cloud , nella sezione Agent Platform, vai alla pagina Endpoint.

    Vai a Endpoint

  2. Trova la riga dell'endpoint che hai creato nella sezione precedente, denominato hello_custom. In questa riga, fai clic su Richiesta di esempio per aprire il riquadro Richiesta di esempio.

  3. Nel riquadro Richiesta di esempio, individua la riga di codice shell che corrisponde al seguente pattern:

    ENDPOINT_ID="ENDPOINT_ID"

    ENDPOINT_ID è un numero che identifica questo particolare endpoint.

    Copia questa riga di codice ed eseguila nella sessione di Cloud Shell per impostare la variabile ENDPOINT_ID.

  4. Esegui questo comando nella sessione di Cloud Shell per eseguire il deployment della funzione Cloud Run:

    gcloud functions deploy classify_flower \
      --region=us-central1 \
      --source=function \
      --runtime=python37 \
      --memory=2048MB \
      --trigger-http \
      --allow-unauthenticated \
      --set-env-vars=ENDPOINT_ID=${ENDPOINT_ID}
    

Esegui il deployment di un'app web per inviare richieste di previsione

Infine, ospita un'app web statica su Cloud Storage per ricevere previsioni dal modello ML addestrato. L'app web invia richieste alla tua funzione Cloud Run, che le pre-elabora e ottiene previsioni dall'endpoint della piattaforma agente.

La directory webapp del codice campione scaricato contiene un'app web di esempio. Nella sessione di Cloud Shell, esegui questi comandi per preparare ed eseguire il deployment dell'app web:

  1. Imposta un paio di variabili di shell da utilizzare per i comandi nei passaggi successivi:

    PROJECT_ID=PROJECT_ID
    BUCKET_NAME=BUCKET_NAME
    

    Sostituisci quanto segue:

  2. Modifica l'app per fornirle l'URL di attivazione della tua funzione Cloud Run:

    echo "export const CLOUD_FUNCTION_URL = 'https://us-central1-${PROJECT_ID}.cloudfunctions.net/classify_flower';" \
      > webapp/function-url.js
    
  3. Carica la directory webapp nel bucket Cloud Storage:

    gcloud storage cp webapp gs://${BUCKET_NAME}/ --recursive
    
  4. Rendi pubblicamente leggibili i file dell'app web che hai appena caricato:

    gcloud storage objects update gs://${BUCKET_NAME}/webapp/** --add-acl-grant=entity=allUsers,role=READER
    
  5. Ora puoi andare al seguente URL per aprire l'app web e ricevere previsioni:

    https://storage.googleapis.com/BUCKET_NAME/webapp/index.html
    

    Apri l'app web e fai clic sull'immagine di un fiore per vedere la classificazione del tipo di fiore nel modello ML. L'app web mostra la previsione sotto forma di elenco di tipi di fiori e la probabilità che l'immagine contenga ciascun tipo di fiore.

Nella seguente schermata, l'app web ha già ricevuto una previsione ed è in procinto di inviare un'altra richiesta di previsione.

App web con quattro immagini di fiori etichettate. Uno ha le probabilità delle etichette previste sotto. Un'altra ha una barra di caricamento sotto.

Passaggi successivi

Segui l'ultima pagina del tutorial per eseguire la pulizia delle risorse che hai creato.