Antes de iniciar a avaliação contínua

Antes de usar a avaliação contínua, você precisa fazer o seguinte:

  • Treinar e implantar uma versão de modelo no AI Platform Prediction para realizar a avaliação.
  • Ativar as APIs do Google Cloud necessárias para realizar a avaliação contínua.

Implantar uma versão de modelo no AI Platform Prediction

Com o serviço de rotulagem de dados do AI Platform, só é possível realizar avaliações contínuas nos modelos de machine learning que você implantou no AI Platform Prediction. Ao criar um job de avaliação, ele é anexado a uma versão de modelo do AI Platform Prediction. Cada versão só pode ter um job de avaliação anexado.

Para uma introdução ao treinamento de modelos de machine learning e para aprender a implantá-los como versões de modelo do AI Platform Prediction, consulte o guia de primeiros passos sobre treinamento e previsão com o Keras.

Requisitos da versão de modelo

A avaliação contínua é compatível com vários tipos de modelo de machine learning:

Tipos de modelo
Classificação de imagens Modelo que usa uma imagem como entrada e retorna pelo menos um rótulo como saída. É possível fornecer uma imagem de entrada codificada em Base64 ou um caminho para um arquivo do Cloud Storage.
Classificação de texto Modelo que usa o texto como entrada e retorna pelo menos um rótulo como saída.
Classificação geral Modelo que usa uma matriz arbitrária ou uma string como entrada e retorna pelo menos um rótulo como saída.

Com o serviço de rotulagem de dados, não é possível atribuir revisores humanos para fornecer rótulos de informações empíricas na classificação geral. Se você configurar uma avaliação contínua em um modelo de classificação geral, será necessário marcar esses rótulos por conta própria.
Detecção de objetos de imagem Modelo que usa uma imagem como entrada e retorna pelo menos uma caixa delimitadora rotulada como saída. Essas caixas preveem a localização dos objetos na imagem.

Dependendo da tarefa executada pelo modelo de machine learning, você precisa treiná-lo para que a versão de modelo implementada aceite a entrada de previsão on-line e produza a saída correspondente em um formato específico compatível com a avaliação contínua.

As especificações na próxima seção ampliam os requisitos de corpo JSON das solicitações e respostas de previsão on-line para o AI Platform Prediction. No momento, a avaliação contínua só faz a amostragem das previsões on-line, e não das em lote. Saiba mais sobre as diferenças entre a previsão on-line e em lote.

Os campos destacados nos exemplos indicam aqueles que são necessários para a avaliação contínua. É possível incluir outros campos na entrada e na saída da previsão. No entanto, o serviço de rotulagem de dados ignora esses campos quando a entrada é atribuída a revisores humanos para rotulagem de informações empíricas e quando as métricas de avaliação são calculadas.

As chaves dos campos destacados (yourDataKey, yourLabelKey, yourScoreKey e yourBoundingBoxKey) podem ser substituídas por strings que você escolher, contanto que as strings não contenham o /. Especifique o que são essas strings ao criar o job de avaliação.

Veja na seção a seguir a descrição dos requisitos de cada tipo de modelo:

Classificação de imagens

Formato da entrada

O modelo precisa receber solicitações de previsão on-line neste formato:

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

<image input (string)> pode ser:

  • Uma imagem codificada em Base64
  • O URI de uma imagem armazenada no Cloud Storage. Para garantir que o Serviço de rotulagem de dados tenha permissão para ler a imagem, o bucket do Cloud Storage precisa estar no mesmo projeto do Google Cloud em que você está criando o job de avaliação.
Exemplo codificado em Base64

Veja no exemplo a seguir um corpo de solicitação de previsão on-line com uma imagem codificada em Base64:

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

Os dados de entrada estão aninhados no campo image_bytes neste exemplo. Se o modelo aceita uma entrada de previsão como essa, especifique essa estrutura aninhada ao criar o job de avaliação.

Exemplo de referência do Cloud Storage

Veja no exemplo a seguir um corpo de solicitação de previsão on-line com uma referência a uma imagem no Cloud Storage:

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

Formato da saída

O modelo precisa retornar previsões on-line neste 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>,
      ...
    },
    ...
  ]
}

As matrizes de rótulos e de pontuações precisam ter o mesmo comprimento. Se o modelo realiza uma classificação de rótulo único, é necessário que haja um rótulo e uma pontuação. Se o modelo realiza uma classificação de vários rótulos, cada rótulo na matriz precisa corresponder à pontuação no mesmo índice da matriz.

As pontuações são obrigatórias. Elas representam a confiança ou a probabilidade que o modelo de machine learning atribui às previsões dele. Normalmente, para selecionar um rótulo, os modelos comparam a pontuação calculada para uma entrada específica com um limite de classificação.

Exemplo de saída de classificação

Veja no exemplo a seguir um corpo de resposta de previsão on-line de classificação:

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

Classificação de texto

Formato da entrada

O modelo precisa receber solicitações de previsão on-line neste formato:

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

Veja no exemplo a seguir um corpo de solicitação de previsão on-line com dados de texto:

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

Formato da saída

O modelo precisa retornar previsões on-line neste 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>,
      ...
    },
    ...
  ]
}

As matrizes de rótulos e de pontuações precisam ter o mesmo comprimento. Se o modelo realiza uma classificação de rótulo único, é necessário que haja um rótulo e uma pontuação. Se o modelo realiza uma classificação de vários rótulos, cada rótulo na matriz precisa corresponder à pontuação no mesmo índice da matriz.

As pontuações são obrigatórias. Elas representam a confiança ou a probabilidade que o modelo de machine learning atribui às previsões dele. Normalmente, para selecionar um rótulo, os modelos comparam a pontuação calculada para uma entrada específica com um limite de classificação.

Exemplo de saída de classificação

Veja no exemplo a seguir um corpo de resposta de previsão on-line de classificação:

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

Classificação geral

Formato da entrada

O modelo precisa receber solicitações de previsão on-line neste formato:

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

Veja no exemplo a seguir um corpo de solicitação de previsão on-line com uma matriz de dados de entrada que contém strings e números:

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

Formato da saída

O modelo precisa retornar previsões on-line neste 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>,
      ...
    },
    ...
  ]
}

As matrizes de rótulos e de pontuações precisam ter o mesmo comprimento. Se o modelo realiza uma classificação de rótulo único, é necessário que haja um rótulo e uma pontuação. Se o modelo realiza uma classificação de vários rótulos, cada rótulo na matriz precisa corresponder à pontuação no mesmo índice da matriz.

As pontuações são obrigatórias. Elas representam a confiança ou a probabilidade que o modelo de machine learning atribui às previsões dele. Normalmente, para selecionar um rótulo, os modelos comparam a pontuação calculada para uma entrada específica com um limite de classificação.

Exemplo de saída de classificação

Veja no exemplo a seguir um corpo de resposta de previsão on-line de classificação:

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

Detecção de objetos de imagem

Formato da entrada

O modelo precisa receber solicitações de previsão on-line neste formato:

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

<image input (string)> pode ser:

  • Uma imagem codificada em Base64
  • O URI de uma imagem armazenada no Cloud Storage. Para garantir que o Serviço de rotulagem de dados tenha permissão para ler a imagem, o bucket do Cloud Storage precisa estar no mesmo projeto do Google Cloud em que você está criando o job de avaliação.
Exemplo codificado em Base64

Veja no exemplo a seguir um corpo de solicitação de previsão on-line com uma imagem codificada em Base64:

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

Os dados de entrada estão aninhados no campo image_bytes neste exemplo. Se o modelo aceita uma entrada de previsão como essa, especifique essa estrutura aninhada ao criar o job de avaliação.

Exemplo de referência do Cloud Storage

Veja no exemplo a seguir um corpo de solicitação de previsão on-line com uma referência a uma imagem no Cloud Storage:

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

Formato da saída

O modelo precisa retornar previsões on-line neste 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>,
      ...
    },
    ...
  ]
}

As matrizes de caixas delimitadoras, de rótulos e de pontuações precisam ter o mesmo comprimento. Cada entrada na matriz de caixa delimitadora precisa ter um rótulo no mesmo índice na matriz e corresponder a uma pontuação nesse índice da matriz. Por exemplo, yourBoundingBoxKey[0] é rotulado por yourLabelKey[0] e tem a pontuação yourScoreKey[0].

As pontuações são obrigatórias. Elas representam a confiança ou a probabilidade que o modelo de machine learning atribui às previsões dele. Normalmente, para selecionar um rótulo, os modelos comparam a pontuação calculada para uma entrada específica com um limite de classificação.

Formato de saída alternativo

Se você usar a string detection_boxes para yourBoundingBoxKey, a string detection_classes para yourLabelKey e a string detection_scores para yourScoreKey, use o seguinte formato para sua previsão em vez do formato padrão:

{
  "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>,
      ...
    },
    ...
  ]
}
Exemplo de saída de detecção de objetos

Veja no exemplo a seguir um corpo de resposta de previsão on-line da detecção de objetos:

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

Ative as APIs

Você precisa ativar várias APIs do Google Cloud antes de usar a avaliação contínua. Para seguir as próximas etapas, você precisa ativar a API AI Platform Training and Prediction no mesmo projeto ao implantar uma versão de modelo no 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

A seguir

Leia o guia para criar um job de avaliação e comece a usar a avaliação contínua.