Nesta página, mostramos como receber previsões on-line (em tempo real) de modelos tabulares de classificação ou regressão usando o Console do Google Cloud ou a API Vertex AI.
Uma predição on-line é uma solicitação síncrona, em vez de uma previsão em lote, que é uma solicitação assíncrona. Use predições on-line ao fazer solicitações em resposta à entrada do aplicativo ou em outras situações em que você precisa de inferência em tempo hábil.
Implante um modelo em um endpoint antes de ele ser usado para exibir previsões on-line. A implantação de um modelo associa recursos físicos ao modelo para que ele possa exibir previsões on-line com baixa latência.
Os temas abordados são os seguintes:
- Implantar um modelo em um endpoint
- Fazer uma previsão on-line usando o modelo implantado
- Receba uma explicação on-line usando seu modelo implantado
Antes de começar
Antes de receber previsões on-line, é necessário treinar um modelo de classificação ou regressão e avaliá-lo para maior precisão.
Implantar um modelo em um endpoint
É possível implantar mais de um modelo em um endpoint, além de ser possível implantar um modelo em mais de um endpoint. Para mais informações sobre opções e casos de uso de implantação de modelos, consulte Sobre a implantação de modelos.
Use um dos seguintes métodos para implantar um modelo:
Console do Google Cloud
No Console do Google Cloud, na seção "Vertex AI", acesse a página Modelos.
Clique no nome do modelo que você quer implantar para abrir a página de detalhes.
Selecione a guia Implantar e testar.
Caso seu modelo já esteja implantado em um endpoint, o endpoint estará listado na seção Implantar seu modelo.
Clique em Implantar no endpoint.
Na página Definir seu endpoint, configure o seguinte:
É possível implantar o modelo em um endpoint novo ou atual.
- Para implantar o modelo em um novo endpoint, selecione Criar novo endpoint e dê um nome a ele.
- Para implantar o modelo em um endpoint atual, selecione Adicionar a um endpoint atual e escolha o endpoint na lista suspensa.
- É possível adicionar mais de um modelo a um endpoint, além de ser possível adicionar um modelo a mais de um endpoint. Saiba mais.
Clique em Continuar.
Na página Detalhes do modelo, configure o seguinte:
-
Se você estiver implantando seu modelo em um novo endpoint, aceite 100 para a divisão de tráfego. Se você implantar o modelo em um endpoint atual que tem um ou mais modelos implantados, é necessário atualizar a porcentagem de divisão de tráfego do modelo que você está implantando, bem como a dos modelos já implantados para que todas as porcentagens totalizem 100%.
-
Insira o número mínimo de nós de computação que você quer fornecer ao modelo.
Esse é o número de nós disponíveis para este modelo em todos os momentos. Você é cobrado pelos nós usados, seja para processar a carga de previsão ou por nós de espera (mínimo), mesmo sem tráfego de previsão. Consulte a página de preços.
-
Selecione o Tipo de máquina.
Recursos maiores de máquina aumentarão o desempenho da previsão e os custos.
-
Saiba como alterar as configurações padrão para a geração de registros de previsão.
-
Clique em Continuar.
-
Na página Monitoramento de modelo, clique em Continuar.
Na página Objetivos do Monitoring, configure o seguinte:
- Insira o local dos dados de treinamento.
- Digite o nome do serviço de destino.
Clique em Implantar para implantar o modelo no endpoint.
API
Ao implantar um modelo usando a API Vertex AI, siga estas etapas:
- Crie um endpoint, se necessário.
- Receba o ID do endpoint.
- Implantar o modelo no endpoint.
Criar um endpoint
Pule a etapa abaixo se você estiver implantando um modelo em um endpoint existente.
gcloud
O exemplo a seguir usa o comando
gcloud ai endpoints create
:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_NAME
Substitua:
- LOCATION_ID: a região em que você está usando a Vertex AI.
ENDPOINT_NAME: o nome de exibição do endpoint.
A ferramenta CLI do Google Cloud pode levar alguns segundos para criar o endpoint.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION_ID: sua região.
- PROJECT_ID: o ID do projeto.
- ENDPOINT_NAME: o nome de exibição do endpoint.
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
Corpo JSON da solicitação:
{ "display_name": "ENDPOINT_NAME" }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata", "genericMetadata": { "createTime": "2020-11-05T17:45:42.812656Z", "updateTime": "2020-11-05T17:45:42.812656Z" } } }
"done": true
.
Java
Antes de testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esse exemplo, siga as instruções de configuração para Node.js no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Receber o ID do endpoint
Você precisa do ID do endpoint para implantar o modelo.
gcloud
O exemplo a seguir usa o comando
gcloud ai endpoints list
:
gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME
Substitua:
- LOCATION_ID: a região em que você está usando a Vertex AI.
ENDPOINT_NAME: o nome de exibição do endpoint.
Anote o número que aparece na coluna
ENDPOINT_ID
. Use esse ID na etapa a seguir.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION_ID: a região em que você está usando a Vertex AI.
- PROJECT_ID: o ID do projeto.
- ENDPOINT_NAME: o nome de exibição do endpoint.
Método HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints?filter=display_name=ENDPOINT_NAME
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "endpoints": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID", "displayName": "ENDPOINT_NAME", "etag": "AMEw9yPz5pf4PwBHbRWOGh0PcAxUdjbdX2Jm3QO_amguy3DbZGP5Oi_YUKRywIE-BtLx", "createTime": "2020-04-17T18:31:11.585169Z", "updateTime": "2020-04-17T18:35:08.568959Z" } ] }
Implantar o modelo
Selecione a guia abaixo para seu idioma ou ambiente:
gcloud
Os exemplos a seguir usam o comando gcloud ai endpoints deploy-model
.
O exemplo a seguir implanta um Model
em um Endpoint
sem usar GPUs
para acelerar a exibição da previsão e sem dividir o tráfego entre vários
recursos DeployedModel
:
Antes de usar os dados do comando abaixo, faça estas substituições:
- ENDPOINT_ID: o ID do endpoint.
- LOCATION_ID: a região em que você está usando a Vertex AI.
- MODEL_ID: o ID do modelo a ser implantado.
-
DEPLOYED_MODEL_NAME: um nome para
DeployedModel
. Também é possível usar o nome de exibição doModel
para oDeployedModel
. -
MACHINE_TYPE: opcional. Os recursos de máquina usados para cada nó
desta implantação. A configuração padrão é
n1-standard-2
. Saiba mais sobre tipos de máquinas. -
MIN_REPLICA_COUNT: o número mínimo de nós para esta implantação.
A contagem de nós pode ser aumentada ou reduzida conforme necessário pela carga de previsão,
até o número máximo de nós e nunca menos que esse número.
O valor precisa ser maior ou igual a 1. Se a sinalização
--min-replica-count
for omitida, o valor padrão será 1. -
MAX_REPLICA_COUNT: o número máximo de nós para esta implantação.
A contagem de nós pode ser aumentada ou reduzida conforme necessário pela carga de previsão,
até esse número de nós e nunca menos que o número mínimo de nós.
Se você omitir a sinalização
--max-replica-count
, o número máximo de nós será definido como o valor de--min-replica-count
.
Execute o comando gcloud ai endpoints deploy-model:
Linux, macOS ou Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --machine-type=MACHINE_TYPE \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=100
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME ` --machine-type=MACHINE_TYPE ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=100
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME ^ --machine-type=MACHINE_TYPE ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=100
Divisão de tráfego
A sinalização --traffic-split=0=100
nos exemplos anteriores envia 100% do tráfego de
previsão que Endpoint
recebe para o novo DeployedModel
, que é
representado pelo ID temporário 0
. Se a Endpoint
já tiver outros
recursos DeployedModel
, será possível dividir o tráfego entre o novo
DeployedModel
e os antigos.
Por exemplo, para enviar 20% do tráfego para o novo DeployedModel
e 80% para um mais antigo,
execute o seguinte comando.
Antes de usar os dados do comando abaixo, faça estas substituições:
- OLD_DEPLOYED_MODEL_ID: o ID do
DeployedModel
existente.
Execute o comando gcloud ai endpoints deploy-model:
Linux, macOS ou Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --machine-type=MACHINE_TYPE \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME \ --machine-type=MACHINE_TYPE ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME \ --machine-type=MACHINE_TYPE ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
REST
Use o método endpoints.predict para solicitar uma predição on-line.
Implantar o modelo.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION_ID: a região em que você está usando a Vertex AI.
- PROJECT_ID: o ID do projeto.
- ENDPOINT_ID: o ID do endpoint.
- MODEL_ID: o ID do modelo a ser implantado.
-
DEPLOYED_MODEL_NAME: um nome para
DeployedModel
. Também é possível usar o nome de exibição doModel
para oDeployedModel
. -
MACHINE_TYPE: opcional. Os recursos de máquina usados para cada nó
desta implantação. A configuração padrão é
n1-standard-2
. Saiba mais sobre tipos de máquinas. - ACCELERATOR_TYPE: o tipo de acelerador a ser anexado à máquina. Opcional se ACCELERATOR_COUNT não for especificado ou for zero. Não recomendado para modelos AutoML ou modelos treinados personalizados que usem imagens que não sejam de GPU. Saiba mais.
- ACCELERATOR_COUNT: o número de aceleradores a serem usados por cada réplica. Opcional. Deve ser zero ou não especificado para modelos do AutoML ou modelos treinados personalizados que usam imagens que não sejam de GPU.
- MIN_REPLICA_COUNT: o número mínimo de nós para esta implantação. A contagem de nós pode ser aumentada ou reduzida conforme necessário pela carga de previsão, até o número máximo de nós e nunca menos que esse número. O valor precisa ser maior ou igual a 1.
- MAX_REPLICA_COUNT: o número máximo de nós para esta implantação. A contagem de nós pode ser aumentada ou reduzida conforme necessário pela carga de previsão, até esse número de nós e nunca menos que o número mínimo de nós.
- TRAFFIC_SPLIT_THIS_MODEL: a porcentagem do tráfego de previsão para esse endpoint que será roteada para o modelo que está sendo implantado com esta operação. O padrão é 100. A soma de todas as porcentagens de tráfego precisam totalizar 100. Saiba mais sobre as divisões de tráfego.
- DEPLOYED_MODEL_ID_N: opcional. Se outros modelos forem implantados nesse endpoint, será necessário atualizar as porcentagens de divisão de tráfego para que todas as porcentagens somem 100.
- TRAFFIC_SPLIT_MODEL_N: o valor da porcentagem da divisão de tráfego para a chave de ID do modelo implantado.
- PROJECT_NUMBER: o número do projeto gerado automaticamente
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
Corpo JSON da solicitação:
{ "deployedModel": { "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": "ACCELERATOR_COUNT" }, "minReplicaCount": MIN_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT }, }, "trafficSplit": { "0": TRAFFIC_SPLIT_THIS_MODEL, "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1, "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2 }, }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-19T17:53:16.502088Z", "updateTime": "2020-10-19T17:53:16.502088Z" } } }
Java
Antes de testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Node.js
Antes de testar esse exemplo, siga as instruções de configuração para Node.js no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Saiba como alterar as configurações padrão para a geração de registros de previsão.
Receber status da operação
Algumas solicitações iniciam operações de longa duração que exigem tempo para serem concluídas. Essas solicitações retornam um nome de operação, que pode ser usado para ver o status da operação ou cancelá-la. A Vertex AI oferece métodos auxiliares para realizar chamadas em operações de longa duração. Para mais informações, consulte Como trabalhar com operações de longa duração.
Receber uma previsão on-line usando o modelo implantado
Para fazer uma previsão on-line, envie um ou mais itens de teste para um modelo para análise, e o modelo retornará resultados baseados no objetivo do modelo. Use o Console do Google Cloud ou a API Vertex AI para solicitar uma previsão on-line.
Console do Google Cloud
No Console do Google Cloud, na seção "Vertex AI", acesse a página Modelos.
Na lista de modelos, clique no nome do modelo para solicitar previsões.
Selecione a guia Implantar e testar.
Na seção Testar o modelo, adicione itens de teste para solicitar uma predição. Os dados de previsão do valor de referência são preenchidos para você, ou insira seus próprios dados de previsão e clique em Prever.
Após a conclusão da previsão, a Vertex AI retorna os resultados no console.
API: classificação
gcloud
-
Crie um arquivo chamado
request.json
com o seguinte conteúdo:{ "instances": [ { PREDICTION_DATA_ROW } ] }
Substitua:
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes e valores de recursos como os valores de recurso correspondentes. Por exemplo, para um conjunto de dados com um número, uma matriz de strings e uma categoria, a linha de dados pode ser semelhante à seguinte solicitação de exemplo:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
É necessário incluir um valor para cada recurso incluído no treinamento. O formato dos dados usados para previsão precisa corresponder ao formato usado para treinamento. Consulte Formato de dados para previsões para mais detalhes.
-
-
Execute este comando:
gcloud ai endpoints predict ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Substitua:
- ENDPOINT_ID: o ID do endpoint.
- LOCATION_ID: a região em que você está usando a Vertex AI.
REST
Use o método endpoints.predict para solicitar uma predição on-line.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
LOCATION_ID: região em que o endpoint está localizado. Por exemplo,
us-central1
. - PROJECT_ID: o ID do projeto.
- ENDPOINT_ID: o ID do endpoint.
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes e valores de recursos como os valores de recurso correspondentes. Por exemplo, para um conjunto de dados com um número, uma matriz de strings e uma categoria, a linha de dados pode ser semelhante à seguinte solicitação de exemplo:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
É necessário incluir um valor para cada recurso incluído no treinamento. O formato dos dados usados para previsão precisa corresponder ao formato usado para treinamento. Consulte Formato de dados para previsões para mais detalhes.
- DEPLOYED_MODEL_ID: saída pelo método
predict
e aceita como entrada pelo métodoexplain
. O ID do modelo usado para gerar a previsão. Se você precisar solicitar explicações para uma previsão solicitada anteriormente e tiver mais de um modelo implantado, use esse ID para garantir que as explicações sejam retornadas para o mesmo modelo que forneceu a previsão anterior.
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict
Corpo JSON da solicitação:
{ "instances": [ { PREDICTION_DATA_ROW } ] }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "predictions": [ { "scores": [ 0.96771615743637085, 0.032283786684274673 ], "classes": [ "0", "1" ] } ] "deployedModelId": "2429510197" }
Java
Antes de testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esse exemplo, siga as instruções de configuração para Node.js no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
API: regressão
gcloud
-
Crie um arquivo chamado request.json com este conteúdo:
{ "instances": [ { PREDICTION_DATA_ROW } ] }
Substitua:
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes e valores de recursos como os valores de recurso correspondentes. Por exemplo, para um conjunto de dados com um número, uma matriz de números e uma categoria, a linha de dados pode ser semelhante à seguinte solicitação de exemplo:
"age":3.6, "sq_ft":5392, "code": "90331"
É necessário incluir um valor para cada recurso incluído no treinamento. O formato dos dados usados para previsão precisa corresponder ao formato usado para treinamento. Consulte Formato de dados para previsões para mais detalhes.
-
-
Execute este comando:
gcloud ai endpoints predict ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Substitua:
- ENDPOINT_ID: o ID do endpoint.
- LOCATION_ID: a região em que você está usando a Vertex AI.
REST
Use o método endpoints.predict para solicitar uma predição on-line.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
LOCATION_ID: região em que o endpoint está localizado. Por exemplo,
us-central1
. - PROJECT_ID: o ID do projeto.
- ENDPOINT_ID: o ID do endpoint.
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes e valores de recursos como os valores de recurso correspondentes. Por exemplo, para um conjunto de dados com um número, uma matriz de números e uma categoria, a linha de dados pode ser semelhante à seguinte solicitação de exemplo:
"age":3.6, "sq_ft":5392, "code": "90331"
É necessário incluir um valor para cada recurso incluído no treinamento. O formato dos dados usados para previsão precisa corresponder ao formato usado para treinamento. Consulte Formato de dados para previsões para mais detalhes.
- DEPLOYED_MODEL_ID: saída pelo método
predict
e aceita como entrada pelo métodoexplain
. O ID do modelo usado para gerar a previsão. Se você precisar solicitar explicações para uma previsão solicitada anteriormente e tiver mais de um modelo implantado, use esse ID para garantir que as explicações sejam retornadas para o mesmo modelo que forneceu a previsão anterior.
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict
Corpo JSON da solicitação:
{ "instances": [ { PREDICTION_DATA_ROW } ] }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "predictions": [ [ { "value": 65.14233, "lower_bound": 4.6572, "upper_bound": 164.0279 } ] ], "deployedModelId": "DEPLOYED_MODEL_ID" }
Java
Antes de testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esse exemplo, siga as instruções de configuração para Node.js no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Interpretar resultados de previsão
Classificação
Os modelos de classificação retornam uma pontuação de confiança.
A pontuação de confiança informa o quanto o modelo associa cada classe ou rótulo a um item de teste. Quanto maior o número, maior a confiança do modelo de que o rótulo precisa ser aplicado a esse item. Você decide o nível de confiança necessário para aceitar os resultados do modelo.
Regressão
Os modelos de regressão retornam um valor de previsão. Para destinos do BigQuery, eles também retornam um intervalo de previsão. O intervalo de previsão fornece um intervalo de valores em que o modelo que tem confiança de 95% contém o resultado real.
Receba uma explicação on-line usando seu modelo implantado
É possível solicitar uma previsão com explicações, também chamadas de atribuições de recursos, para ver como o modelo chegou a uma previsão. Os valores de importância do atributo local informam quanto cada atributo contribuiu para o resultado da previsão. As atribuições de recursos são incluídas nas previsões da Vertex AI pelo Explainable AI.
Console
Quando você usa o Console do Cloud para solicitar uma previsão on-line, os valores de importância do recurso local são retornados automaticamente.
Se você usou os valores de previsão preenchidos automaticamente, os valores de importância do recurso local são todos zero. Isso ocorre porque os valores pré-preenchidos são os dados de previsão do valor de referência, portanto, a previsão retornada é o valor de previsão do valor de referência.
gcloud
Crie um arquivo chamado
request.json
com o seguinte conteúdo:{ "instances": [ { PREDICTION_DATA_ROW } ] }
Substitua:
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes e valores de recursos como os valores de recurso correspondentes. Por exemplo, para um conjunto de dados com um número, uma matriz de strings e uma categoria, a linha de dados pode ser semelhante à seguinte solicitação de exemplo:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
É necessário incluir um valor para cada recurso incluído no treinamento. O formato dos dados usados para previsão precisa corresponder ao formato usado para treinamento. Consulte Formato de dados para previsões para mais detalhes.
-
Execute este comando:
gcloud ai endpoints explain ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Substitua:
- ENDPOINT_ID: o ID do endpoint.
- LOCATION_ID: a região em que você está usando a Vertex AI.
Opcionalmente, se você quiser enviar uma solicitação de explicação para um
DeployedModel
específico emEndpoint
, especifique a sinalização--deployed-model-id
:gcloud ai endpoints explain ENDPOINT_ID \ --region=LOCATION \ --deployed-model-id=DEPLOYED_MODEL_ID \ --json-request=request.json
Além dos marcadores de posição descritos anteriormente, substitua o seguinte:
-
DEPLOYED_MODEL_ID (opcional): o ID do modelo implantado que você quer
receber explicações. O ID está incluído na resposta do método
predict
. Se você precisar solicitar explicações para um modelo específico e tiver mais de um modelo implantado no mesmo endpoint, use esse ID para garantir que as explicações sejam retornadas.
REST
Veja no exemplo a seguir uma solicitação de previsão on-line para um modelo de classificação tabular com atribuições de recursos locais. O formato da solicitação é o mesmo para modelos de regressão.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
LOCATION: região em que o endpoint está localizado. Por exemplo,
us-central1
. - PROJECT: o ID do projeto.
- ENDPOINT_ID: o ID do endpoint.
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes e valores de recursos como os valores de recurso correspondentes. Por exemplo, para um conjunto de dados com um número, uma matriz de strings e uma categoria, a linha de dados pode ser semelhante à seguinte solicitação de exemplo:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
É necessário incluir um valor para cada recurso incluído no treinamento. O formato dos dados usados para previsão precisa corresponder ao formato usado para treinamento. Consulte Formato de dados para previsões para mais detalhes.
-
DEPLOYED_MODEL_ID (opcional): o ID do modelo implantado que você quer obter explicações. O ID está incluído na resposta do método
predict
. Se você precisar solicitar explicações para um modelo específico e tiver mais de um modelo implantado no mesmo endpoint, use esse ID para garantir que as explicações sejam retornadas.
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID:explain
Corpo JSON da solicitação:
{ "instances": [ { PREDICTION_DATA_ROW } ], "deployedModelId": "DEPLOYED_MODEL_ID" }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID:explain"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID:explain" | Select-Object -Expand Content
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Receber explicações de uma previsão retornada anteriormente
Como as explicações aumentam o uso de recursos, talvez seja necessário reservar o pedido de explicação para situações em que você precise delas especificamente. Às vezes, pode ser útil solicitar explicações para um resultado de previsão que você já recebeu, talvez porque a previsão era um outlier ou não fazia sentido.
Se todas as suas previsões forem provenientes do mesmo modelo, basta simplesmente reenviar os dados da solicitação, com explicações solicitadas dessa vez. No entanto, se houver vários modelos retornando previsões, certifique-se de enviar a solicitação de explicação ao modelo correto. Para ver explicações de um modelo específico, inclua o ID deployedModelID
do modelo implantado na solicitação, que está incluído na resposta da solicitação de previsão original.
O ID do modelo implantado é diferente do ID do modelo.
Interpretar os resultados da explicação
Para calcular a importância do recurso local, primeiramente, é calculada a pontuação de previsão do valor de referência. Os valores de referência são calculados com base nos dados de treinamento e a utilização do valor mediano para atributos numéricos e do modo para atributos categóricos. A previsão gerada a partir dos valores de referência é a pontuação de previsão dos valores de referência. Os valores de referência são calculados uma vez para um modelo e não são alterados.
Para uma previsão específica, a importância do atributo local de cada atributo informa quanto esse atributo foi adicionado ou subtraído do resultado, em comparação com a pontuação de previsão dos valores de referência. A soma de todos os valores de importância do atributo é igual à diferença entre a pontuação de previsão dos valores de referência e o resultado da previsão.
Para modelos de classificação, a pontuação está sempre entre 0,0 e 1,0 (inclusos). Portanto, os valores de importância de recursos locais para modelos de classificação estão sempre entre -1,0 e 1,0 (inclusos).
Para ver exemplos de consultas de atribuição de recursos e saber mais, consulte Atribuições de recursos para classificação e regressão.Exemplo de saída para previsões e explicações
Classificação
O payload de retorno de uma previsão on-line de um modelo de classificação tabular com a importância do recurso é semelhante ao exemplo a seguir.
O instanceOutputValue
de 0.928652400970459
é a
pontuação de confiança da classe de maior pontuação, neste caso
class_a
. O campo baselineOutputValue
contém
a pontuação de previsão do valor de referência, 0.808652400970459
. O recurso que
mais contribuiu para esse resultado foi feature_3
.
{
"predictions": [
{
"scores": [
0.928652400970459,
0.071347599029541
],
"classes": [
"class_a",
"class_b"
]
}
]
"explanations": [
{
"attributions": [
{
"baselineOutputValue": 0.808652400970459,
"instanceOutputValue": 0.928652400970459,
"approximationError": 0.0058915703929231,
"featureAttributions": {
"feature_1": 0.012394922231235,
"feature_2": 0.050212341234556,
"feature_3": 0.057392736534209,
},
"outputIndex": [
0
],
"outputName": "scores"
}
],
}
]
"deployedModelId": "234567"
}
Regressão
O payload de retorno de uma previsão on-line com importância do recurso de um modelo de regressão tabular é semelhante ao exemplo JSON a seguir.
O instanceOutputValue
de 1795.1246466281819
é o
valor previsto, com os campos lower_bound
e upper_bound
que fornecem o intervalo de confiança de 95%.
O campo baselineOutputValue
contém
a pontuação de previsão do valor de referência, 1788.7423095703125
. O recurso que
mais contribuiu para esse resultado foi feature_3
.
{
"predictions": [
{
"value": 1795.1246466281819,
"lower_bound": 246.32196807861328,
"upper_bound": 8677.51904296875
}
]
"explanations": [
{
"attributions": [
{
"baselineOutputValue": 1788.7423095703125,
"instanceOutputValue": 1795.1246466281819,
"approximationError": 0.0038215703911553,
"featureAttributions": {
"feature_1": 0.123949222312359,
"feature_2": 0.802123412345569,
"feature_3": 5.456264423211472,
},
"outputIndex": [
-1
]
}
]
}
],
"deployedModelId": "345678"
}
A seguir
- Saiba como exportar seu modelo.