Avant de commencer l'évaluation continue

Avant de pouvoir utiliser l'évaluation continue, vous devez effectuer deux opérations :

  • Entraîner et déployer une version de modèle sur AI Platform Prediction pour l'évaluation
  • Activer les API Google Cloud nécessaires à l'évaluation continue

Déployer une version de modèle sur AI Platform Prediction

Le service d'étiquetage de données AI Platform ne peut effectuer l'évaluation continue que sur les modèles de machine learning que vous avez déployés sur AI Platform Prediction. Lorsque vous créez une tâche d'évaluation, vous l'associez à une version de modèle AI Platform Prediction. Chaque version de modèle ne peut être associée qu'à une seule tâche d'évaluation.

Pour découvrir comment entraîner un modèle de machine learning et le déployer en tant que version de modèle sur AI Platform Prediction, consultez la page Premiers pas : entraînement et prédiction avec Keras.

Exigences concernant la version de modèle

L'évaluation continue est compatible avec plusieurs types de modèles de machine learning :

Types de modèles
Classification d'images Modèle exploitant une image en entrée et renvoyant une ou plusieurs étiquettes en sortie. L'image d'entrée peut être fournie sous la forme d'une image encodée en base64 ou d'un chemin d'accès à un fichier Cloud Storage.
Classifier du texte Modèle exploitant du texte en entrée et renvoyant une ou plusieurs étiquettes en sortie.
Classification générale Modèle exploitant un tableau ou une chaîne arbitraire en entrée et renvoyant une ou plusieurs étiquettes en sortie.

Le service d'étiquetage de données ne peut pas affecter des évaluateurs manuels pour fournir des étiquettes de vérité terrain pour la classification générale. Si vous configurez l'évaluation continue pour un modèle de classification générale, vous devez fournir vous-même des étiquettes de vérité terrain.
Détection d'objets au sein d'images Modèle exploitant une image en entrée et renvoyant un ou plusieurs cadres de délimitation étiquetés en sortie. Ces cadres de délimitation prédisent l'emplacement des objets au sein de l'image.

Selon la tâche exécutée par votre modèle de machine learning, vous devez l'entraîner pour que la version de modèle déployé accepte les entrées de prédiction en ligne et génère des prédictions en ligne dans un format spécifique compatible avec l'évaluation continue.

Notez que les spécifications décrites dans la section suivante étendent les exigences liées au corps JSON des requêtes et réponses de prédiction en ligne à AI Platform Prediction. Actuellement, l'évaluation continue n'échantillonne que les prédictions en ligne. Elle n'échantillonne pas les prédictions par lot. Découvrez les différences entre la prédiction en ligne et la prédiction par lot.

Les champs surlignés dans les exemples sont obligatoires pour l'évaluation continue. Vous pouvez inclure des champs supplémentaires dans vos entrées et sorties de prédiction, mais le service d'étiquetage de données les ignore lorsqu'il assigne votre entrée aux évaluateurs manuels pour l'étiquetage de vérité terrain et lors du calcul des métriques d'évaluation.

Les clés des champs en surbrillance (yourDataKey, yourLabelKey, yourScoreKey et yourBoundingBoxKey) peuvent être remplacées par n'importe quelle chaîne de votre choix, à condition que les chaînes ne contiennent pas le caractère /. Vous devez spécifier ces chaînes lorsque vous créez une tâche d'évaluation.

La section suivante décrit les exigences associées à type de modèle :

Classification d'images

Format d'entrée

Votre modèle doit recevoir des requêtes de prédiction en ligne au format suivant :

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

L'élément <image input (string)> peut avoir l'une des valeurs suivantes :

  • Une image encodée en base64.
  • L'URI d'une image stockée dans Cloud Storage. Pour que le service d'étiquetage des données soit autorisé à lire l'image, le bucket Cloud Storage doit se trouver dans le même projet Google Cloud que celui dans lequel vous créez la tâche d'évaluation.
Exemple d'encodage en base64

L'exemple suivant montre un corps de requête de prédiction en ligne avec une image encodée en base64 :

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

Notez que les données d'entrée sont imbriquées dans le champ image_bytes dans cet exemple. Si votre modèle accepte des entrées de prédiction de ce genre, assurez-vous de spécifier cette structure imbriquée lorsque vous créez la tâche d'évaluation.

Exemple de référence à une image Cloud Storage

L'exemple suivant montre un corps de requête de prédiction en ligne avec une référence à une image dans Cloud Storage :

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

Format de sortie

Votre modèle doit renvoyer des prédictions en ligne au format suivant :

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

Le tableau des étiquettes et le tableau des scores doivent avoir la même longueur. Si votre modèle effectue une classification à étiquette unique, vous devez disposer d'une étiquette et d'un score. Si votre modèle effectue une classification multi-étiquette, chaque étiquette du tableau des étiquettes doit correspondre au score du même index dans le tableau des scores.

Les scores sont obligatoires. Ils représentent la confiance ou la probabilité que le modèle de machine learning attribue à ses prédictions. En règle générale, les modèles sélectionnent une étiquette en comparant le score calculé pour une entrée donnée à un seuil de classification.

Exemple de résultat de classification

L'exemple suivant montre un corps de réponse de prédiction en ligne pour la classification :

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

Classification de texte

Format d'entrée

Votre modèle doit recevoir des requêtes de prédiction en ligne au format suivant :

{
  "instances": [
    {
      "yourDataKey": <text input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
Exemple d'entrée texte

L'exemple suivant illustre un corps de requête de prédiction en ligne avec des données textuelles :

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

Format de sortie

Votre modèle doit renvoyer des prédictions en ligne au format suivant :

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

Le tableau des étiquettes et le tableau des scores doivent avoir la même longueur. Si votre modèle effectue une classification à étiquette unique, vous devez disposer d'une étiquette et d'un score. Si votre modèle effectue une classification multi-étiquette, chaque étiquette du tableau des étiquettes doit correspondre au score du même index dans le tableau des scores.

Les scores sont obligatoires. Ils représentent la confiance ou la probabilité que le modèle de machine learning attribue à ses prédictions. En règle générale, les modèles sélectionnent une étiquette en comparant le score calculé pour une entrée donnée à un seuil de classification.

Exemple de résultat de classification

L'exemple suivant montre un corps de réponse de prédiction en ligne pour la classification :

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

Classification générale

Format d'entrée

Votre modèle doit recevoir des requêtes de prédiction en ligne au format suivant :

{
  "instances": [
    {
      "yourDataKey": <input data (string or array)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
Exemple d'entrée générale

L'exemple suivant montre un corps de requête de prédiction en ligne avec un tableau de données d'entrée contenant des chaînes et des nombres :

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

Format de sortie

Votre modèle doit renvoyer des prédictions en ligne au format suivant :

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

Le tableau des étiquettes et le tableau des scores doivent avoir la même longueur. Si votre modèle effectue une classification à étiquette unique, vous devez disposer d'une étiquette et d'un score. Si votre modèle effectue une classification multi-étiquette, chaque étiquette du tableau des étiquettes doit correspondre au score du même index dans le tableau des scores.

Les scores sont obligatoires. Ils représentent la confiance ou la probabilité que le modèle de machine learning attribue à ses prédictions. En règle générale, les modèles sélectionnent une étiquette en comparant le score calculé pour une entrée donnée à un seuil de classification.

Exemple de résultat de classification

L'exemple suivant montre un corps de réponse de prédiction en ligne pour la classification :

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

Détection d'objets image

Format d'entrée

Votre modèle doit recevoir des requêtes de prédiction en ligne au format suivant :

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

L'élément <image input (string)> peut avoir l'une des valeurs suivantes :

  • Une image encodée en base64.
  • L'URI d'une image stockée dans Cloud Storage. Pour que le service d'étiquetage des données soit autorisé à lire l'image, le bucket Cloud Storage doit se trouver dans le même projet Google Cloud que celui dans lequel vous créez la tâche d'évaluation.
Exemple d'encodage en base64

L'exemple suivant montre un corps de requête de prédiction en ligne avec une image encodée en base64 :

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

Notez que les données d'entrée sont imbriquées dans le champ image_bytes dans cet exemple. Si votre modèle accepte des entrées de prédiction de ce genre, assurez-vous de spécifier cette structure imbriquée lorsque vous créez la tâche d'évaluation.

Exemple de référence à une image Cloud Storage

L'exemple suivant montre un corps de requête de prédiction en ligne avec une référence à une image dans Cloud Storage :

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

Format de sortie

Votre modèle doit renvoyer des prédictions en ligne au format suivant :

{
  "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>,
      ...
    },
    ...
  ]
}

Le tableau des cadres de délimitation, le tableau des étiquettes et le tableau des scores doivent tous avoir la même longueur. Chaque entrée du tableau des cadres de délimitation doit posséder une étiquette appartenant au même index dans le tableau des étiquettes. Elle doit également correspondre à un score du même index dans le tableau des scores. Par exemple, yourBoundingBoxKey[0] est étiqueté par yourLabelKey[0] et est associé au score yourScoreKey[0].

Les scores sont obligatoires. Ils représentent la confiance ou la probabilité que le modèle de machine learning attribue à ses prédictions. En règle générale, les modèles sélectionnent une étiquette en comparant le score calculé pour une entrée donnée à un seuil de classification.

Autre format de sortie

Si vous utilisez la chaîne detection_boxes pour yourBoundingBoxKey, la chaîne detection_classes pour yourLabelKey et la chaîne detection_scores pour yourScoreKey, vous pouvez utiliser le format suivant pour votre résultat de prédiction plutôt que le format 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>,
      ...
    },
    ...
  ]
}
Exemple de sortie pour la détection d'objets

L'exemple suivant illustre un corps de réponse de prédiction en ligne pour la détection d'objets :

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

Activer les API

Vous devez activer plusieurs API Google Cloud avant de pouvoir utiliser l'évaluation continue. Les étapes suivantes supposent que vous avez déjà activé les API AI Platform Training and AI Platform Prediction pour le projet lors du déploiement d'une version de modèle sur AI Platform Prediction.

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activer les API Data Labeling Service and BigQuery.

    Activer les API

  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  7. Activer les API Data Labeling Service and BigQuery.

    Activer les API

Étapes suivantes

Consultez la page Créer une tâche d'évaluation continue pour commencer à utiliser l'évaluation continue.