Olá, preparação personalizada: publique previsões a partir de um modelo de classificação de imagens personalizado

Esta página explica como publicar previsões do seu modelo de classificação de imagens e ver estas previsões numa app Web.

Este tutorial tem várias páginas:

  1. Configurar o seu projeto e ambiente.

  2. Preparar um modelo de classificação de imagens personalizado.

  3. Publicação de previsões a partir de um modelo de classificação de imagens personalizado.

  4. Limpar o projeto.

Cada página pressupõe que já executou as instruções das páginas anteriores do tutorial.

O resto deste documento pressupõe que está a usar o mesmo ambiente do Cloud Shell que criou quando seguiu a primeira página deste tutorial. Se a sessão original do Cloud Shell já não estiver aberta, pode regressar ao ambiente fazendo o seguinte:

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. Na sessão do Cloud Shell, execute o seguinte comando:

    cd hello-custom-sample
  3. Crie um ponto final

    Para receber previsões online do modelo de ML que preparou seguindo a página anterior deste tutorial, crie um ponto final do Vertex AI. Os pontos finais publicam previsões online a partir de um ou mais modelos.

    1. Na Google Cloud consola, na secção Vertex AI, aceda à página Modelos.

      Aceda a Modelos

    2. Encontre a linha do modelo que preparou no passo anterior deste tutorial hello_custom e clique no nome do modelo para abrir a página de detalhes do modelo.

    3. No separador Implementar e testar, clique em Implementar no ponto final para abrir o painel Implementar no ponto final.

    4. No passo Defina o seu ponto final, adicione algumas informações básicas para o seu ponto final:

      1. Selecione Criar novo ponto final.

      2. No campo Nome do ponto final, introduza hello_custom.

      3. Na secção Definições do modelo, certifique-se de que vê o nome do seu modelo, também denominado hello_custom. Especifique as seguintes definições do modelo:

        1. No campo Divisão de tráfego, introduza 100. O Vertex AI suporta a divisão do tráfego de um ponto final em vários modelos, mas este tutorial não usa essa funcionalidade.

        2. No campo Número mínimo de nós de computação, introduza 1.

        3. Na lista pendente Tipo de máquina, selecione n1-standard-2 na secção Padrão.

        4. Clique em Concluído.

      4. Na secção Registo, certifique-se de que ambos os tipos de registo de previsões estão ativados.

      Clique em Continuar.

    5. No passo Detalhes do ponto final, confirme que o ponto final vai ser implementado em us-central1 (Iowa).

      Não selecione a caixa de verificação Usar uma chave de encriptação gerida pelo cliente (CMEK). Este tutorial não usa CMEK.

    6. Clique em Implementar para criar o ponto final e implementar o modelo no ponto final.

    Após alguns minutos, é apresentado o ícone junto ao novo ponto final na tabela Pontos finais. Ao mesmo tempo, também recebe um email a indicar que criou o ponto final com êxito e implementou o modelo no ponto final.

    Implemente uma função do Cloud Run

    Pode receber previsões do ponto final do Vertex AI que acabou de criar enviando pedidos para a interface REST da API Vertex AI. No entanto, apenas os principais com a autorização aiplatform.endpoints.predict podem enviar pedidos de previsão online. Não pode tornar o ponto final público para que qualquer pessoa envie pedidos, por exemplo, através de uma app Web.

    Nesta secção, implemente código nas funções do Cloud Run para processar pedidos não autenticados. O código de exemplo que transferiu quando leu a primeira página deste tutorial contém código para esta função do Cloud Run no diretório function/. Opcionalmente, execute o seguinte comando para explorar o código da função do Cloud Run:

    less function/main.py
    

    A implementação da função tem as seguintes finalidades:

    • Pode configurar uma função do Cloud Run para receber pedidos não autenticados. Além disso, as funções são executadas usando uma conta de serviço com a função de editor por predefinição, que inclui a autorização aiplatform.endpoints.predict necessária para receber previsões do seu ponto final do Vertex AI.

    • Esta função também realiza um pré-processamento útil nos pedidos. O ponto final do Vertex AI espera pedidos de previsão no formato da primeira camada do gráfico do TensorFlow Keras preparado: um tensor de números de vírgula flutuante normalizados com dimensões fixas. A função usa o URL de uma imagem como entrada e pré-processa a imagem neste formato antes de pedir uma previsão ao ponto final da Vertex AI.

    Para implementar a função do Cloud Run, faça o seguinte:

    1. Na Google Cloud consola, na secção Vertex AI, aceda à página Endpoints.

      Aceda a Pontos finais

    2. Encontre a linha do ponto final que criou na secção anterior, com o nome hello_custom. Nesta linha, clique em Pedido de amostra para abrir o painel Pedido de amostra.

    3. No painel Pedido de amostra, encontre a linha de código de shell que corresponde ao seguinte padrão:

      ENDPOINT_ID="ENDPOINT_ID"

      ENDPOINT_ID é um número que identifica este ponto final específico.

      Copie esta linha de código e execute-a na sua sessão do Cloud Shell para definir a variável ENDPOINT_ID.

    4. Execute o seguinte comando na sessão do Cloud Shell para implementar a função do Cloud Run:

      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}
      

    Implemente uma app Web para enviar pedidos de previsão

    Por último, aloje uma app Web estática no Cloud Storage para receber previsões do seu modelo de ML preparado. A app Web envia pedidos para a sua função do Cloud Run, que os pré-processa e recebe previsões do ponto final do Vertex AI.

    O diretório webapp do código de amostra que transferiu contém uma amostra de app Web. Na sua sessão do Cloud Shell, execute os seguintes comandos para preparar e implementar a app Web:

    1. Defina algumas variáveis de shell para os comandos nos passos seguintes a usar:

      PROJECT_ID=PROJECT_ID
      BUCKET_NAME=BUCKET_NAME
      

      Substitua o seguinte:

    2. Edite a app para lhe fornecer o URL de acionamento da sua função do Cloud Run:

      echo "export const CLOUD_FUNCTION_URL = 'https://us-central1-${PROJECT_ID}.cloudfunctions.net/classify_flower';" \
        > webapp/function-url.js
      
    3. Carregue o diretório webapp para o seu contentor do Cloud Storage:

      gcloud storage cp webapp gs://${BUCKET_NAME}/ --recursive
      
    4. Torne os ficheiros da app Web que acabou de carregar publicamente legíveis:

      gcloud storage objects update gs://${BUCKET_NAME}/webapp/** --add-acl-grant=entity=allUsers,role=READER
      
    5. Agora, pode navegar para o seguinte URL para abrir a app Web e receber previsões:

      https://storage.googleapis.com/BUCKET_NAME/webapp/index.html
      

      Abra a app Web e clique numa imagem de uma flor para ver a classificação do tipo de flor do seu modelo de ML. A app Web apresenta a previsão como uma lista de tipos de flores e a probabilidade de a imagem conter cada tipo de flor.

    Na captura de ecrã seguinte, a app Web já recebeu uma previsão e está a enviar outro pedido de previsão.

    App Web com quatro imagens de flores etiquetadas. Uma tem probabilidades de
      etiquetas previstas abaixo. Outra tem uma barra de carregamento por baixo.

    O que se segue?

    Siga a última página do tutorial para limpar os recursos que criou.