Antes de comenzar la evaluación continua

Para poder usar la evaluación continua, primero debes completar las dos siguientes tareas:

  • Capacitar y, luego, implementar una versión del modelo en AI Platform Prediction para su evaluación
  • Habilitar las API de Google Cloud necesarias para la evaluación continua

Implementa una versión del modelo en AI Platform Prediction

Con AI Platform Data Labeling Service, solo se puede realizar la evaluación continua en los modelos de aprendizaje automático que hayas implementado en AI Platform Prediction. Cuando creas un trabajo de evaluación, lo adjuntas a una versión del modelo de AI Platform Prediction. Cada versión del modelo solo puede tener un trabajo de evaluación adjunto.

Para obtener una introducción sobre el entrenamiento de un modelo de aprendizaje automático y su implementación como una versión del modelo en AI Platform Prediction, consulta la guía de introducción al entrenamiento y la predicción con Keras.

Requisitos de la versión del modelo

En la evaluación continua, se admiten varios tipos de modelos de aprendizaje automático:

Tipos de modelos
Image Classification Un modelo en el que se toma una imagen como entrada y se muestran una o más etiquetas como resultado. La imagen de entrada se puede proporcionar como una imagen codificada en base64 o una ruta de acceso a un archivo de Cloud Storage.
Clasificación de texto Un modelo en el que se toma texto como entrada y se muestran una o más etiquetas como salida.
Clasificación general Un modelo en el que se toma un arreglo o string arbitrarios como entrada y se muestran una o más etiquetas como resultado.

Con el Servicio de etiquetado de datos no se pueden asignar revisores manuales a fin de proporcionar etiquetas de verdad fundamental para la clasificación general. Si configuras la evaluación continua para un modelo de clasificación general, debes etiquetar tú mismo las etiquetas de verdad fundamental.
Detección de objetos de imagen Un modelo en el que se toma una imagen como entrada y se muestran uno o más cuadros de límite etiquetados como resultado. Con estos cuadros de límite, se predicen las ubicaciones de los objetos en la imagen.

Según la tarea que realice tu modelo de aprendizaje automático, debes entrenarlo para que con la versión del modelo implementado se acepte la entrada de predicción en línea y se produzca el resultado de predicción en línea en un formato específico compatible con la evaluación continua.

Ten en cuenta que, con las especificaciones de la sección siguiente, se extienden los requisitos del cuerpo JSON para las solicitudes de predicción y respuestas en línea a AI Platform Prediction. En la actualidad, con la evaluación continua solo se realiza un muestreo de las predicciones en línea; no se toman muestras de las predicciones en lote. Obtén más información sobre las diferencias entre las predicciones en línea y en lote.

Los campos destacados en los ejemplos son obligatorios para la evaluación continua. Puedes incluir campos adicionales en la entrada y el resultado de la predicción, pero serán ignorados en el Servicio de etiquetado de datos cuando se asigne tu entrada a los revisores manuales para el etiquetado de verdad fundamental y cuando se calculen las métricas de evaluación.

Las claves de los campos destacados (yourDataKey, yourLabelKey, yourScoreKey y yourBoundingBoxKey) se pueden reemplazar por cualquier string que elijas, siempre que en las strings no se incluya el carácter /. Debes especificar cuáles son estas strings cuando creas tu trabajo de evaluación.

En la sección siguiente, se describen los requisitos de cada tipo de modelo:

Clasificación de imágenes

Formato de entrada

En tu modelo, se deben recibir solicitudes de predicción en línea con el siguiente formato:

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

<image input (string)> puede ser una de las siguientes opciones:

  • Una imagen codificada en base64
  • El URI de una imagen almacenada en Cloud Storage. A fin de garantizar que el Servicio de etiquetado de datos tenga permiso para leer la imagen, el bucket de Cloud Storage debe estar en el mismo proyecto de Google Cloud en el que creas el trabajo de evaluación.
Ejemplo codificado en base64

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con una imagen codificada en base64:

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

Ten en cuenta que, en este ejemplo, los datos de entrada están anidados en el campo image_bytes. Si en tu modelo se aceptan entradas de predicción como esta, asegúrate de especificar la estructura anidada cuando crees tu trabajo de evaluación.

Ejemplo de referencia de Cloud Storage

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con una referencia a una imagen en Cloud Storage:

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

Formato de resultado

En tu modelo, se deben mostrar predicciones en línea con el siguiente 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>,
      ...
    },
    ...
  ]
}

Los arreglos de etiquetas y de puntuaciones deben tener la misma longitud. Si en tu modelo se realiza la clasificación con una sola etiqueta, debe haber una etiqueta y una puntuación. Si en tu modelo se realiza la clasificación con varias etiquetas, cada etiqueta en el arreglo debe corresponder a la puntuación del mismo índice en el arreglo de puntuaciones.

Las puntuaciones son obligatorias. En ellas se representan la confianza o probabilidad que tu modelo de aprendizaje automático asigna a sus predicciones. Por lo general, en los modelos se selecciona una etiqueta mediante la comparación entre la puntuación calculada para una entrada en particular y un umbral de clasificación.

Ejemplo de resultado de clasificación

En el siguiente ejemplo, se muestra un cuerpo de respuesta de predicción en línea para la clasificación:

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

Clasificación de texto

Formato de entrada

En tu modelo, se deben recibir solicitudes de predicción en línea con el siguiente formato:

{
  "instances": [
    {
      "yourDataKey": <text input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
Ejemplo de entrada de texto

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con datos de texto:

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

Formato de resultado

En tu modelo, se deben mostrar predicciones en línea con el siguiente 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>,
      ...
    },
    ...
  ]
}

Los arreglos de etiquetas y de puntuaciones deben tener la misma longitud. Si en tu modelo se realiza la clasificación con una sola etiqueta, debe haber una etiqueta y una puntuación. Si en tu modelo se realiza la clasificación con varias etiquetas, cada etiqueta en el arreglo debe corresponder a la puntuación del mismo índice en el arreglo de puntuaciones.

Las puntuaciones son obligatorias. En ellas se representan la confianza o probabilidad que tu modelo de aprendizaje automático asigna a sus predicciones. Por lo general, en los modelos se selecciona una etiqueta mediante la comparación entre la puntuación calculada para una entrada en particular y un umbral de clasificación.

Ejemplo de resultado de clasificación

En el siguiente ejemplo, se muestra un cuerpo de respuesta de predicción en línea para la clasificación:

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

Clasificación general

Formato de entrada

En tu modelo, se deben recibir solicitudes de predicción en línea con el siguiente formato:

{
  "instances": [
    {
      "yourDataKey": <input data (string or array)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
Ejemplo de entrada general

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con un arreglo de datos de entrada que contiene strings y números:

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

Formato de resultado

En tu modelo, se deben mostrar predicciones en línea con el siguiente 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>,
      ...
    },
    ...
  ]
}

Los arreglos de etiquetas y de puntuaciones deben tener la misma longitud. Si en tu modelo se realiza la clasificación con una sola etiqueta, debe haber una etiqueta y una puntuación. Si en tu modelo se realiza la clasificación con varias etiquetas, cada etiqueta en el arreglo debe corresponder a la puntuación del mismo índice en el arreglo de puntuaciones.

Las puntuaciones son obligatorias. En ellas se representan la confianza o probabilidad que tu modelo de aprendizaje automático asigna a sus predicciones. Por lo general, en los modelos se selecciona una etiqueta mediante la comparación entre la puntuación calculada para una entrada en particular y un umbral de clasificación.

Ejemplo de resultado de clasificación

En el siguiente ejemplo, se muestra un cuerpo de respuesta de predicción en línea para la clasificación:

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

Detección de objetos de imagen

Formato de entrada

En tu modelo, se deben recibir solicitudes de predicción en línea con el siguiente formato:

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

<image input (string)> puede ser una de las siguientes opciones:

  • Una imagen codificada en base64
  • El URI de una imagen almacenada en Cloud Storage. A fin de garantizar que el Servicio de etiquetado de datos tenga permiso para leer la imagen, el bucket de Cloud Storage debe estar en el mismo proyecto de Google Cloud en el que creas el trabajo de evaluación.
Ejemplo codificado en base64

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con una imagen codificada en base64:

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

Ten en cuenta que, en este ejemplo, los datos de entrada están anidados en el campo image_bytes. Si en tu modelo se aceptan entradas de predicción como esta, asegúrate de especificar la estructura anidada cuando crees tu trabajo de evaluación.

Ejemplo de referencia de Cloud Storage

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con una referencia a una imagen en Cloud Storage:

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

Formato de resultado

En tu modelo, se deben mostrar predicciones en línea con el siguiente 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>,
      ...
    },
    ...
  ]
}

Todos los arreglos de cuadros de límite, de etiquetas y de puntuaciones deben tener la misma longitud. Cada entrada en el arreglo de cuadros de límite debe estar etiquetada por una etiqueta del mismo índice en el arreglo de etiquetas y corresponder a una puntuación del mismo índice en el arreglo de puntuaciones. Por ejemplo, la entrada yourBoundingBoxKey[0] está etiquetada por yourLabelKey[0] y tiene una puntuación de yourScoreKey[0].

Las puntuaciones son obligatorias. En ellas se representan la confianza o probabilidad que tu modelo de aprendizaje automático asigna a sus predicciones. Por lo general, en los modelos se selecciona una etiqueta mediante la comparación entre la puntuación calculada para una entrada en particular y un umbral de clasificación.

Formato de salida alternativo

Si usas la string detection_boxes en yourBoundingBoxKey, la string detection_classes en yourLabelKey y la string detection_scores en yourScoreKey, puedes usar el siguiente formato para tu resultdo de predicción en lugar del formato estándar:

{
  "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>,
      ...
    },
    ...
  ]
}
Ejemplo de salida de detección de objetos

En el siguiente ejemplo, se muestra un cuerpo de respuesta de predicción en línea para la detección de objetos:

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

Habilite las API

Debes habilitar varias API de Google Cloud antes de poder usar la evaluación continua. En los pasos siguientes, se supone que ya habilitaste la API de entrenamiento y predicción de AI Platform en el mismo proyecto cuando implementaste una versión del modelo en 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

¿Qué sigue?

Lee la guía para crear un trabajo de evaluación a fin de comenzar a usar la evaluación continua.