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

Questa pagina illustra le previsioni di pubblicazione dal modello di classificazione delle immagini e le visualizza in un'app web.

Questo documento fa parte del tutorial "Ciao addestramento personalizzato", che ti guiderà attraverso l'utilizzo di Vertex AI per addestrare un modello di classificazione di immagini e fornire previsioni utilizzando il modello. In questo tutorial, utilizzerai la funzionalità di addestramento personalizzato di Vertex AI per eseguire un'applicazione di addestramento TensorFlow Keras in uno degli ambienti container predefiniti di Vertex AI. Questo job di addestramento personalizzato addestra un modello di machine learning (ML) per classificare le immagini dei fiori per tipo. Dopo aver addestrato il modello di machine learning, il tutorial mostra come creare un endpoint e fornire previsioni da tale endpoint a una semplice app web.


Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud, fai clic su Procedura guidata:

Procedura guidata


Questo tutorial è composto da diverse pagine:

  1. Configurazione del progetto e dell'ambiente.

  2. Addestra un modello di classificazione delle immagini personalizzato.

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

  4. Pulizia del progetto.

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

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

  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 di machine learning che hai addestrato seguendo la pagina precedente di questo tutorial, crea un endpoint Vertex AI. Gli endpoint forniscono previsioni online da uno o più modelli.

  1. Nella console Google Cloud, nella sezione Vertex AI, vai alla pagina Modelli.

    Vai a Modelli

  2. Trova la riga del modello 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 Esegui il deployment nell'endpoint per aprire il riquadro Deployment sull'endpoint.

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

    1. Seleziona Crea nuovo endpoint.

    2. Nel campo Nome endpoint, inserisci hello_custom.

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

      1. Nel campo Suddivisione traffico, inserisci 100. Vertex AI supporta la suddivisione del traffico per un endpoint a 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 siano abilitati entrambi i tipi di logging della previsione.

    Fai clic su Continua.

  5. Nel passaggio Dettagli endpoint, verifica che il deployment dell'endpoint sia stato 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 alcuni minuti, viene visualizzato accanto al nuovo endpoint nella tabella Endpoint. Allo stesso tempo, riceverai anche un'email che indica che hai creato correttamente l'endpoint e ne hai eseguito il deployment.

Esegui il deployment di una funzione Cloud Functions

Puoi ottenere previsioni dall'endpoint di Vertex AI appena creato inviando richieste all'interfaccia REST dell'API Vertex AI. Tuttavia, solo i provider con l'autorizzazione aiplatform.endpoints.predict possono inviare richieste di previsione online. Non puoi rendere pubblico l'endpoint perché chiunque invii richieste, ad esempio tramite un'app web.

In questa sezione, esegui il deployment del codice in Cloud 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 Cloud Function nella directory function/. Facoltativamente, esegui questo comando per esplorare il codice della funzione Cloud Function:

less function/main.py

Il deployment della funzione ha i seguenti scopi:

  • Puoi configurare una Cloud Function 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 Vertex AI.

  • Questa funzione esegue anche un'utile pre-elaborazione delle richieste. L'endpoint Vertex AI prevede richieste di previsione nel formato del primo livello del grafico addestrato TensorFlow Keras: un tensore di floating normale con dimensioni fisse. La funzione acquisisce l'URL di un'immagine come input e pre-elabora l'immagine in questo formato prima di richiedere una previsione dall'endpoint Vertex AI.

Per eseguire il deployment della Cloud Function, procedi nel seguente modo:

  1. Nella sezione Vertex AI di Google Cloud Console, vai alla pagina Endpoint.

    Vai a Endpoint

  2. Trova la riga dell'endpoint che hai creato nella sezione precedente, denominata 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 della shell che corrisponde al seguente pattern:

    ENDPOINT_ID="ENDPOINT_ID"
    

    ENDPOINT_ID è un numero che identifica questo specifico endpoint.

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

  4. Esegui il comando seguente nella sessione Cloud Shell per eseguire il deployment della Cloud Function:

    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}
    

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

Infine, ospita un'app web statica su Cloud Storage per ottenere previsioni dal modello di ML addestrato. L'app web invia richieste alla tua Cloud Function, che le pre-elabora e riceve le previsioni dall'endpoint Vertex AI.

La directory webapp del codice campione che hai 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 shell per i comandi da utilizzare nei seguenti passaggi:

    PROJECT_ID=PROJECT_ID
    BUCKET_NAME=BUCKET_NAME
    

    Sostituisci quanto segue:

  2. Modifica l'app per fornirla all'URL di attivazione della Cloud Function:

    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:

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

    gsutil -m acl ch -u AllUsers:R gs://${BUCKET_NAME}/webapp/**
    
  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 per il tuo modello di machine learning. L'app web presenta la previsione sotto forma di elenco di tipi di fiori e la probabilità che l'immagine contenga ogni tipo di fiore.

Nel seguente screenshot, l'app web ha già ricevuto una previsione e sta inviando un'altra richiesta di previsione.

App web con quattro immagini etichettate di fiori. Uno ha la probabilità di etichette previste al di sotto. mentre sotto c'è una barra di caricamento.

Passaggi successivi

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