Cada página pressupõe que você já tenha realizado as instruções das páginas anteriores do tutorial.
O restante deste documento pressupõe que você está usando o mesmo ambiente
do Cloud Shell criado ao seguir a primeira página deste
tutorial. Se a sessão original do Cloud Shell não estiver
mais aberta, será possível retornar ao ambiente fazendo o seguinte:
In the Google Cloud console, activate Cloud Shell.
Na sessão do Cloud Shell, execute o seguinte comando:
cdhello-custom-sample
Crie um endpoint
Para conseguir previsões on-line com base no modelo de ML que você treinou de acordo com
a página anterior deste tutorial, crie um endpoint da Vertex AI.
Os endpoints exibem previsões on-line de um ou mais modelos.
No console Google Cloud , na seção "Vertex AI", acesse
a página Modelos.
Encontre a linha do modelo que você treinou na etapa anterior deste tutorial, hello_custom,
e clique no nome do modelo para
abrir a página de detalhes.
Na guia Implantar e testar, clique em Implantar no endpoint para abrir o
painel Implantar no endpoint.
Na etapa Definir seu endpoint, adicione algumas informações básicas para seu
endpoint:
Selecione Criar novo endpoint.
No campo Nome do endpoint, digite hello_custom.
Na seção Configurações do modelo, verifique se você vê
o nome do modelo,
também chamado de hello_custom. Especifique as seguintes configurações
de modelo:
No campo Divisão de tráfego, digite 100. A Vertex AI
permite dividir o tráfego de um endpoint para vários modelos, mas
este tutorial não usa esse recurso.
No campo Número mínimo de nós de computação, digite 1.
Na lista suspensa Tipo de máquina, selecione n1-standard-2 na
seção Standard.
Clique em Concluído.
Na seção Geração de registros, verifique se os dois tipos de geração de registros de previsão
estão ativados.
Clique em Continuar.
Na etapa Detalhes do endpoint, confirme se o endpoint será implantado
em us-central1 (Iowa).
Não marque a caixa de seleção Usar uma chave de criptografia gerenciada pelo cliente (CMEK).
Este tutorial não usa CMEK.
Clique em Implantar para criar o endpoint e implantar o modelo no
endpoint.
Após alguns minutos, check_circle aparecerá ao lado do novo
endpoint na tabela Endpoints. Ao mesmo tempo, você também recebe um e-mail
indicando que criou o endpoint e implantou
o modelo no endpoint.
Implantar uma função do Cloud Run
É possível receber previsões do endpoint da Vertex AI que você acabou de
criar. Basta enviar solicitações para a interface REST da API Vertex AI. No entanto, somente
principals com a permissão
aiplatform.endpoints.predict podem enviar solicitações de previsão on-line. Não é
possível tornar o endpoint público para que qualquer pessoa envie solicitações, por exemplo,
por meio de um app da Web.
Nesta seção, implante o código nas funções do Cloud Run para lidar com
solicitações não autenticadas. O exemplo de código que você baixou ao ler a
primeira página deste tutorial contém o código dessa
função do Cloud Run no diretório function/. Se quiser, execute o
seguinte comando para explorar o código da função do Cloud Run:
lessfunction/main.py
A implantação da função tem as seguintes finalidades:
É possível configurar uma função do Cloud Run para receber solicitações
não autenticadas. Além disso, as funções são executadas usando uma conta de serviço com o papel
"Editor" por padrão, que inclui
a permissão aiplatform.endpoints.predict necessária para conseguir previsões
do endpoint da Vertex AI.
Esta função também realiza um pré-processamento útil das solicitações. O
endpoint da Vertex AI espera solicitações de previsão no formato
da primeira camada do gráfico treinado Keras do TensorFlow: um tensor de flutuantes
normalizados com dimensões fixas. A função usa o URL de uma imagem como entrada
e pré-processa a imagem nesse formato antes de solicitar uma previsão
do endpoint da Vertex AI.
Para implantar a função do Cloud Run, faça o seguinte:
No console Google Cloud , na seção "Vertex AI", acesse
a página Endpoints.
Encontre a linha do endpoint criado na seção anterior,
chamada hello_custom. Nessa linha, clique em Exemplo de solicitação para abrir o painel
Exemplo de solicitação.
No painel Exemplo de solicitação, localize a linha de código do shell que corresponde
ao seguinte padrão:
ENDPOINT_ID="ENDPOINT_ID"
ENDPOINT_ID é um número que identifica esse endpoint específico.
Copie essa linha de código e execute-a na sessão do Cloud Shell para
definir a variável ENDPOINT_ID.
Execute o seguinte comando na sessão do Cloud Shell para implantar
a função do Cloud Run:
Implantar um app da Web para enviar solicitações de previsão
Por fim, hospede um app da Web estático no Cloud Storage para receber
previsões do modelo de ML treinado. O app da Web envia solicitações para a
função do Cloud Run, que as pré-processa e recebe previsões do
endpoint da Vertex AI.
O diretório webapp do exemplo de código que você baixou contém um
exemplo de app da Web. Na sessão do Cloud Shell, execute os seguintes
comandos para preparar e implantar o app da Web:
Defina algumas variáveis do shell para que os comandos das próximas etapas usem:
Abra o app da Web e clique na imagem de uma flor para ver a classificação do
seu modelo de ML do tipo de flor. O app da Web apresenta a previsão como uma
lista de tipos de flores e a probabilidade de que a imagem contenha cada
tipo de flor.
Na captura de tela a seguir, o app da Web já recebeu uma previsão
e está enviando outra
solicitação de previsão.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-19 UTC."],[],[],null,["# Hello custom training: Serve predictions from a custom image classification model\n\nThis page walks through serving predictions from your image classification model\nand viewing these predictions in a web app.\nThis tutorial has several pages:\n\n\u003cbr /\u003e\n\n1. [Setting up your project and environment.](/vertex-ai/docs/tutorials/image-classification-custom)\n\n2. [Training a custom image classification\n model.](/vertex-ai/docs/tutorials/image-classification-custom/training)\n\n3. Serving predictions from a custom image\n classification model.\n\n4. [Cleaning up your project.](/vertex-ai/docs/tutorials/image-classification-custom/cleanup)\n\nEach page assumes that you have already performed the instructions from the\nprevious pages of the tutorial.\nThe rest of this document assumes that you are using the same Cloud Shell environment that you created when following the [first page of this\ntutorial](/vertex-ai/docs/tutorials/image-classification-custom). If your original Cloud Shell session is no longer open, you can return to the environment by doing the following:\n\n\u003cbr /\u003e\n\n1. In the Google Cloud console, activate Cloud Shell.\n\n [Activate Cloud Shell](https://console.cloud.google.com/?cloudshell=true)\n2. In the Cloud Shell session, run the following command:\n\n ```bash\n cd hello-custom-sample\n ```\n\nCreate an endpoint\n------------------\n\nTo get online predictions from the ML model that you trained when following\nthe previous page of this tutorial, create a Vertex AI *endpoint*.\nEndpoints serve online predictions from one or more models.\n\n1. In the Google Cloud console, in the Vertex AI section, go to\n the **Models** page.\n\n [Go to Models](https://console.cloud.google.com/vertex-ai/models)\n2. Find the row of the model that you trained in the [previous step of this\n tutorial](/vertex-ai/docs/tutorials/image-classification-custom/training), `hello_custom`, and click the model's\n name to open the model detail page.\n\n3. On the **Deploy \\& test** tab, click **Deploy to endpoint** to open the\n **Deploy to endpoint** pane.\n\n4. On the **Define your endpoint** step, add some basic information for your\n endpoint:\n\n 1. Select **Create new endpoint**.\n\n 2. In the **Endpoint name** field, enter `hello_custom`.\n\n 3. In the **Model settings** section, ensure that you see the name of your\n model, which is also called `hello_custom`. Specify the following model\n settings:\n\n 1. In the **Traffic split** field, enter `100`. Vertex AI\n supports splitting traffic for an endpoint to multiple models, but\n this tutorial doesn't use that feature.\n\n 2. In the **Minimum number of compute nodes** field, enter `1`.\n\n 3. In the **Machine type** drop-down list, select **n1-standard-2** from\n the **Standard** section.\n\n 4. Click **Done**.\n\n 4. In the **Logging** section, ensure that both types of prediction logging\n are enabled.\n\n Click **Continue**.\n5. On the **Endpoint details** step, confirm that your endpoint will be deployed\n to `us-central1 (Iowa)`.\n\n Do not select the **Use a customer-managed encryption key (CMEK)** checkbox.\n This tutorial does not use [CMEK](/vertex-ai/docs/general/cmek).\n6. Click **Deploy** to create the endpoint and deploy your model to the\n endpoint.\n\nAfter a few minutes, check_circle appears next to the new\nendpoint in the **Endpoints** table. At the same time, you also receive an email\nindicating that you have successfully created the endpoint and deployed your\nmodel to the endpoint.\n\nDeploy a Cloud Run function\n---------------------------\n\nYou can get predictions from the Vertex AI endpoint that you just\ncreated by sending requests to the Vertex AI API's REST interface. However, only\nprincipals with the [`aiplatform.endpoints.predict`\npermission](/vertex-ai/docs/general/access-control) can send online prediction requests. You\ncannot make the endpoint public for anybody to send requests to, for example via\na web app.\n\nIn this section, deploy code to [Cloud Run functions](/functions/docs) to handle\nunauthenticated requests. The sample code that you downloaded when you read the\n[first page of this tutorial](/vertex-ai/docs/tutorials/image-classification-custom) contains code for this\nCloud Run function in the `function/` directory. Optionally, run the\nfollowing command to explore the Cloud Run function code: \n\n less function/main.py\n\nDeploying the function serves the following purposes:\n\n- You *can* configure a Cloud Run function to receive unauthenticated\n requests. Additionally, functions run using [a service account with the Editor\n role by default](/functions/docs/securing/function-identity), which includes\n the `aiplatform.endpoints.predict` permission necessary to get predictions\n from your Vertex AI endpoint.\n\n- This function also performs useful preprocessing on requests. The\n Vertex AI endpoint expects prediction requests in the format\n of the trained TensorFlow Keras graph's first layer: a tensor of normalized\n floats with fixed dimensions. The function takes the URL of an image as input\n and preprocesses the image into this format before requesting a prediction\n from the Vertex AI endpoint.\n\nTo deploy the Cloud Run function, do the following:\n\n1. In the Google Cloud console, in the Vertex AI section, go to\n the **Endpoints** page.\n\n [Go to Endpoints](https://console.cloud.google.com/vertex-ai/endpoints)\n2. Find the row of the endpoint that you created in the previous section, named\n `hello_custom`. In this row, click **Sample request** to open the\n **Sample request** pane.\n\n3. In the **Sample request** pane, find the line of shell code that matches the\n following pattern:\n\n ```bash\n ENDPOINT_ID=\"\u003cvar translate=\"no\"\u003eENDPOINT_ID\u003c/var\u003e\"\n ```\n\n \u003cvar translate=\"no\"\u003eENDPOINT_ID\u003c/var\u003e is a number that identifies this particular endpoint.\n\n Copy this line of code, and run it in your Cloud Shell session to\n set the `ENDPOINT_ID` variable.\n4. Run the following command in your Cloud Shell session to deploy the\n Cloud Run function:\n\n gcloud functions deploy classify_flower \\\n --region=us-central1 \\\n --source=function \\\n --runtime=python37 \\\n --memory=2048MB \\\n --trigger-http \\\n --allow-unauthenticated \\\n --set-env-vars=ENDPOINT_ID=${ENDPOINT_ID}\n\nDeploy a web app to send prediction requests\n--------------------------------------------\n\nFinally, host a static web app on Cloud Storage to get predictions\nfrom your trained ML model. The web app sends requests to your\nCloud Run function, which preprocesses them and gets predictions from the\nVertex AI endpoint.\n\nThe `webapp` directory of the sample code that you downloaded contains a sample\nweb app. In your Cloud Shell session, run the following commands\nto prepare and deploy the web app:\n\n1. Set a couple of shell variables for commands in following steps to use:\n\n PROJECT_ID=\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e\n BUCKET_NAME=\u003cvar translate=\"no\"\u003eBUCKET_NAME\u003c/var\u003e\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: Your Google Cloud [project\n ID](/resource-manager/docs/creating-managing-projects#identifying_projects).\n - \u003cvar translate=\"no\"\u003eBUCKET_NAME\u003c/var\u003e: The name of the Cloud Storage bucket that you created when following the [first page of this tutorial](/vertex-ai/docs/tutorials/image-classification-custom).\n2. Edit the app to provide it with the trigger URL of your\n Cloud Run function:\n\n echo \"export const CLOUD_FUNCTION_URL = 'https://us-central1-${PROJECT_ID}.cloudfunctions.net/classify_flower';\" \\\n \u003e webapp/function-url.js\n\n3. Upload the `webapp` directory to your Cloud Storage bucket:\n\n gcloud storage cp webapp gs://${BUCKET_NAME}/ --recursive\n\n4. Make the web app files that you just uploaded [publicly\n readable](/storage/docs/access-control/making-data-public):\n\n gcloud storage objects update gs://${BUCKET_NAME}/webapp/** --add-acl-grant=entity=allUsers,role=READER\n\n | **Note:** Shells (like bash, zsh) sometimes attempt to expand wildcards in ways that can be surprising. For more details, see [URI wildcards](/storage/docs/wildcards#surprising-behavior).\n5. You can now navigate to the following URL to open web app and get\n predictions:\n\n ```\n https://storage.googleapis.com/BUCKET_NAME/webapp/index.html\n ```\n\n Open the web app and click an image of a flower to see your ML model's\n classification of the flower type. The web app presents the prediction as a\n list of flower types and the probability that the image contains each type of\n flower.\n | **Note:** This web app gets predictions for images that were also included in the training dataset for the model. Therefore the model might appear more accurate than it actually is due to [overfitting](https://developers.google.com/machine-learning/glossary#overfitting).\n\nIn the following screenshot, the web app has already gotten one\nprediction and is in the process of sending another prediction\nrequest.\n\nWhat's next\n-----------\n\nFollow the [last page of the tutorial](/vertex-ai/docs/tutorials/image-classification-custom/cleanup) to clean up\nresources that you have created."]]