Prima di iniziare la valutazione continua

Prima di poter utilizzare la valutazione continua, devi fare due cose:

  • Addestra ed esegui il deployment di una versione del modello in AI Platform Prediction per la valutazione
  • Abilita le API Google Cloud richieste per la valutazione continua

Esegui il deployment di una versione del modello in AI Platform Prediction

AI Platform Data Labeling Service può eseguire la valutazione continua solo sui modelli di machine learning di cui hai eseguito il deployment in AI Platform Prediction. Quando crei un job di valutazione, lo colleghi a una versione del modello di AI Platform Prediction. A ogni versione del modello può essere associato un solo job di valutazione.

Per un'introduzione all'addestramento di un modello di machine learning e al suo deployment come versione del modello in AI Platform Prediction, consulta la guida introduttiva all'addestramento e alla previsione con Keras.

Requisiti delle versioni del modello

La valutazione continua supporta diversi tipi di modelli di machine learning:

Tipi di modello
Classificazione delle immagini Un modello che prende un'immagine come input e restituisce una o più etichette come output. L'immagine di input può essere fornita come immagine codificata in base64 o come percorso di un file Cloud Storage.
Classificazione del testo Un modello che prende un testo come input e restituisce una o più etichette come output.
Classificazione generale Un modello che prende un array o una stringa arbitraria come input e restituisce una o più etichette come output.

Il Servizio di etichettatura dei dati non può assegnare revisori umani per fornire etichette basate su dati empirici reali per la classificazione generale. Se configuri la valutazione continua per un modello di classificazione generale, devi taggare autonomamente le etichette basate su dati empirici reali.
Rilevamento di oggetti immagine Un modello che prende un'immagine come input e restituisce uno o più riquadri di selezione etichettati come output. Questi riquadri di delimitazione prevedono le posizioni degli oggetti nell'immagine.

A seconda dell'attività svolta dal modello di machine learning, devi addestrarlo in modo che la versione del modello di cui è stato eseguito il deployment accetti l'input di previsione online e produca un output di previsione online in un formato specifico supportato dalla valutazione continua.

Tieni presente che le specifiche nella sezione successiva estendono i requisiti del corpo JSON delle richieste e delle risposte di previsione online a AI Platform Prediction. Al momento, la valutazione continua campiona solo le previsioni online, non quelle batch. Scopri le differenze tra le predizioni online e quelle batch.

I campi evidenziati negli esempi indicano i campi richiesti per la valutazione continua. Puoi includere campi aggiuntivi nell'input e nell'output della previsione, ma Data Labeling Service li ignora quando assegna l'input ai revisori per l'etichettatura dei dati empirici e quando calcola le metriche di valutazione.

Le chiavi dei campi evidenziati (yourDataKey, yourLabelKey, yourScoreKey e yourBoundingBoxKey) possono essere sostituite con qualsiasi stringa che scegli, purché le stringhe non contengano il carattere /. Devi specificare che cosa sono queste stringhe quando crei il job di valutazione.

La sezione seguente descrive i requisiti dei modelli per ciascun tipo di modello:

Classificazione delle immagini

Formato di input

Il modello deve ricevere le richieste di previsione online nel seguente formato:

{
  "instances": [
    {
      "yourDataKey": <image input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

<image input (string)> può essere uno dei seguenti:

  • Un'immagine codificata in base64.
  • L'URI di un'immagine archiviata in Cloud Storage. Per assicurarti che Data Labeling Service abbia l'autorizzazione a leggere l'immagine, il bucket Cloud Storage deve trovarsi nello stesso progetto Google Cloud in cui stai creando il job di valutazione.
Esempio di codifica Base64

Il seguente esempio mostra il corpo di una richiesta di previsione online con un'immagine codificata in base64:

{
  "instances": [
    {
      "image_bytes": {
        "b64": "iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAhUlEQVR4AWOAgZeONnHvHcXiGJDBqyDTXa+dVC888oy51F9+eRdY8NdWwYz/RyT//znEsAjEt277+syt5VMJw989DM/+H2MI/L8tVBQk4d38xcWp7ctLhi97ZCZ0rXV6yLA4b6dH59sjTq3fnji1fp4AsWS5j7PXstRg+/b3gU7N351AQgA8+jkf43sjaQAAAABJRU5ErkJggg=="
      }
    }
  ]
}

Tieni presente che in questo esempio i dati di input sono nidificati nel campo image_bytes. Se il tuo modello accetta input di previsione come questo, assicurati di specificare questa struttura nidificata quando crei il job di valutazione.

Esempio di riferimento Cloud Storage

Il seguente esempio mostra il corpo di una richiesta di previsione online con un riferimento a un'immagine in Cloud Storage:

{
  "instances": [
    {
      "image_path": "gs://cloud-samples-data/datalabeling/image/flower_1.jpeg"
    }
  ]
}

Formato di output

Il modello deve restituire le previsioni online nel seguente formato:

{
  "predictions": [
    {
      "YOUR_LABEL_KEY": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

L'array di etichette e l'array di punteggi devono avere la stessa lunghezza. Se il tuo modello esegue la classificazione con etichetta singola, devono essere presenti un'etichetta e un voto. Se il modello esegue la classificazione multietichetta, ogni etichetta nell'array di etichette deve corrispondere al punteggio nello stesso indice nell'array di punteggi.

I punteggi sono obbligatori. Rappresentano l'affidabilità o la probabilità assegnata dal tuo modello di machine learning alle sue previsioni. In genere, i modelli selezionano un'etichetta confrontando il punteggio calcolato per un determinato input con una soglia di classificazione.

Esempio di output della classificazione

L'esempio seguente mostra il corpo di una risposta di previsione online per la classificazione:

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

Classificazione del testo

Formato di input

Il modello deve ricevere le richieste di previsione online nel seguente formato:

{
  "instances": [
    {
      "yourDataKey": <text input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
Esempio di inserimento di testo

L'esempio seguente mostra il corpo di una richiesta di previsione online con dati di testo:

{
  "instances": [
    {
      "text": "If music be the food of love, play on;"
    }
  ]
}

Formato di output

Il modello deve restituire le previsioni online nel seguente formato:

{
  "predictions": [
    {
      "YOUR_LABEL_KEY": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

L'array di etichette e l'array di punteggi devono avere la stessa lunghezza. Se il tuo modello esegue la classificazione con etichetta singola, devono essere presenti un'etichetta e un voto. Se il modello esegue la classificazione multietichetta, ogni etichetta nell'array di etichette deve corrispondere al punteggio nello stesso indice nell'array di punteggi.

I punteggi sono obbligatori. Rappresentano l'affidabilità o la probabilità assegnata dal tuo modello di machine learning alle sue previsioni. In genere, i modelli selezionano un'etichetta confrontando il punteggio calcolato per un determinato input con una soglia di classificazione.

Esempio di output della classificazione

L'esempio seguente mostra il corpo di una risposta di previsione online per la classificazione:

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

Classificazione generale

Formato di input

Il modello deve ricevere le richieste di previsione online nel seguente formato:

{
  "instances": [
    {
      "yourDataKey": <input data (string or array)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
Esempio di input generale

L'esempio seguente mostra il corpo di una richiesta di previsione online con un array di dati di input contenenti stringhe e numeri:

{
  "instances": [
    {
      "weather": [
        "sunny",
        72,
        0.22
      ]
    }
  ]
}

Formato di output

Il modello deve restituire le previsioni online nel seguente formato:

{
  "predictions": [
    {
      "YOUR_LABEL_KEY": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

L'array di etichette e l'array di punteggi devono avere la stessa lunghezza. Se il tuo modello esegue la classificazione con etichetta singola, devono essere presenti un'etichetta e un voto. Se il modello esegue la classificazione multietichetta, ogni etichetta nell'array di etichette deve corrispondere al punteggio nello stesso indice nell'array di punteggi.

I punteggi sono obbligatori. Rappresentano l'affidabilità o la probabilità assegnata dal tuo modello di machine learning alle sue previsioni. In genere, i modelli selezionano un'etichetta confrontando il punteggio calcolato per un determinato input con una soglia di classificazione.

Esempio di output della classificazione

L'esempio seguente mostra il corpo di una risposta di previsione online per la classificazione:

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

Rilevamento di oggetti immagine

Formato di input

Il modello deve ricevere le richieste di previsione online nel seguente formato:

{
  "instances": [
    {
      "yourDataKey": <image input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

<image input (string)> può essere uno dei seguenti:

  • Un'immagine codificata in base64.
  • L'URI di un'immagine archiviata in Cloud Storage. Per assicurarti che Data Labeling Service abbia l'autorizzazione a leggere l'immagine, il bucket Cloud Storage deve trovarsi nello stesso progetto Google Cloud in cui stai creando il job di valutazione.
Esempio di codifica Base64

Il seguente esempio mostra il corpo di una richiesta di previsione online con un'immagine codificata in base64:

{
  "instances": [
    {
      "image_bytes": {
        "b64": "iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAhUlEQVR4AWOAgZeONnHvHcXiGJDBqyDTXa+dVC888oy51F9+eRdY8NdWwYz/RyT//znEsAjEt277+syt5VMJw989DM/+H2MI/L8tVBQk4d38xcWp7ctLhi97ZCZ0rXV6yLA4b6dH59sjTq3fnji1fp4AsWS5j7PXstRg+/b3gU7N351AQgA8+jkf43sjaQAAAABJRU5ErkJggg=="
      }
    }
  ]
}

Tieni presente che in questo esempio i dati di input sono nidificati nel campo image_bytes. Se il tuo modello accetta input di previsione come questo, assicurati di specificare questa struttura nidificata quando crei il job di valutazione.

Esempio di riferimento Cloud Storage

Il seguente esempio mostra il corpo di una richiesta di previsione online con un riferimento a un'immagine in Cloud Storage:

{
  "instances": [
    {
      "image_path": "gs://cloud-samples-data/datalabeling/image/flower_1.jpeg"
    }
  ]
}

Formato di output

Il modello deve restituire le previsioni online nel seguente formato:

{
  "predictions": [
    {
      "yourBoundingBoxKey": [
        {
          "top_left": {
            "x": <left coordinate for first box>,
            "y": <top coordinate for first box>
          },
          "bottom_right": {
            "x": <right coordinate for first box>,
            "y": <bottom coordinate for first box>
          },
        },
        ...
      ],
      "YOUR_LABEL_KEY": [
        <label for first box>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score for first box,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

L'array di caselle delimitanti, l'array di etichette e l'array di punteggi devono avere tutti la stessa lunghezza. Ogni voce nell'array dei riquadro di delimitazione deve essere etichettata da un'etichetta nello stesso indice nell'array di etichette e corrispondere a un punteggio nello stesso indice nell'array di punteggi. Ad esempio, yourBoundingBoxKey[0] è etichettato da yourLabelKey[0] e ha un punteggio yourScoreKey[0].

I punteggi sono obbligatori. Rappresentano l'affidabilità o la probabilità assegnata dal tuo modello di machine learning alle sue previsioni. In genere, i modelli selezionano un'etichetta confrontando il punteggio calcolato per un determinato input con una soglia di classificazione.

Formato di output alternativo

Se utilizzi la stringa detection_boxes per yourBoundingBoxKey, la stringa detection_classes per yourLabelKey e la stringa detection_scores per yourScoreKey, puoi utilizzare il seguente formato per l'output della previsione anziché il formato standard:

{
  "predictions": [
    {
      "detection_boxes": [
        {
          "x_min": <left coordinate for first box>,
          "y_min": <top coordinate for first box>,
          "x_max": <right coordinate for first box>,
          "y_max": <bottom coordinate for first box>
        },
        ...
      ],
      "detection_classes": [
        <label for first box>,
        ...
      ],
      "detection_scores": [
        <score for first box,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
Esempio di output del rilevamento di oggetti

L'esempio seguente mostra il corpo di una risposta di previsione online per il rilevamento di oggetti:

{
  "predictions": [
    {
      "bird_locations": [
        {
          "top_left": {
            "x": 53,
            "y": 22
          },
          "bottom_right": {
            "x": 98,
            "y": 150
          }
        }
      ],
      "species": [
        "rufous hummingbird"
      ],
      "probability": [
        0.77
      ]
    }
  ]
}

Abilita API

Devi abilitare diverse API Google Cloud prima di poter utilizzare la valutazione continua. I passaggi che seguono presuppongono che tu abbia già attivato l'API AI Platform Training & Prediction nello stesso progetto quando hai eseguito il deployment di una versione del modello in AI Platform Prediction.

  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 Data Labeling Service and BigQuery APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  7. Enable the Data Labeling Service and BigQuery APIs.

    Enable the APIs

Passaggi successivi

Leggi la guida alla creazione di un job di valutazione per iniziare a utilizzare la valutazione continua.