Esta página mostra-lhe como obter inferências e explicações online (em tempo real) dos seus modelos de classificação ou regressão tabulares através da Google Cloud consola ou da API Vertex AI.
Uma inferência online é um pedido síncrono, ao contrário de uma inferência em lote, que é um pedido assíncrono. Use inferências online quando fizer pedidos em resposta à entrada de aplicações ou noutras situações em que precise de inferências oportunas.
Tem de implementar um modelo num ponto final antes de poder usar esse modelo para publicar inferências online. A implementação de um modelo associa recursos físicos ao modelo para que possa publicar inferências online com baixa latência.
Os tópicos abordados são:
- Implemente um modelo num ponto final
- Obtenha uma inferência online com o modelo implementado
- Receba uma explicação online através do modelo implementado
Antes de começar
Antes de poder obter inferências online, tem primeiro de preparar um modelo de classificação ou regressão.
Implemente um modelo num ponto final
Pode implementar mais do que um modelo num ponto final e pode implementar um modelo em mais do que um ponto final. Para mais informações sobre opções e exemplos de utilização para a implementação de modelos, consulte o artigo Acerca da implementação de modelos.
Use um dos seguintes métodos para implementar um modelo:
Google Cloud consola
Na Google Cloud consola, na secção Vertex AI, aceda à página Modelos.
Clique no nome do modelo que quer implementar para abrir a respetiva página de detalhes.
Selecione o separador Implementar e testar.
Se o seu modelo já estiver implementado em quaisquer pontos finais, estes são apresentados na secção Implemente o seu modelo.
Clique em Implementar no ponto final.
Na página Defina o seu ponto final, configure da seguinte forma:
Pode optar por implementar o modelo num novo ponto final ou num ponto final existente.
- Para implementar o modelo num novo ponto final, selecione Criar novo ponto final e indique um nome para o novo ponto final.
- Para implementar o modelo num ponto final existente, selecione Adicionar ao ponto final existente e selecione o ponto final na lista pendente.
- Pode adicionar mais do que um modelo a um ponto final e pode adicionar um modelo a mais do que um ponto final. Saiba mais.
Clique em Continuar.
Na página Definições do modelo, configure da seguinte forma:
-
Se estiver a implementar o seu modelo num novo ponto final, aceite 100 para a Divisão de tráfego. Se estiver a implementar o seu modelo num ponto final existente que tenha um ou mais modelos implementados, tem de atualizar a percentagem de divisão do tráfego para o modelo que está a implementar e os modelos já implementados, de modo que todas as percentagens totalizem 100%.
-
Introduza o número mínimo de nós de computação que quer fornecer para o seu modelo.
Este é o número de nós disponíveis para este modelo em todos os momentos. São-lhe cobrados os nós usados, quer para processar a carga de inferência, quer para nós em espera (mínimo), mesmo sem tráfego de inferência. Consulte a página de preços.
-
Selecione o Tipo de máquina.
Os recursos de máquina maiores aumentam o desempenho da inferência e os custos.
-
Saiba como alterar as definições predefinidas para o registo de inferências.
-
Clique em Continuar.
-
Na página Monitorização de modelos, clique em Continuar.
Na página Objetivos de monitorização, configure da seguinte forma:
- Introduza a localização dos seus dados de preparação.
- Introduza o nome da coluna de destino.
Clique em Implementar para implementar o modelo no ponto final.
API
Quando implementa um modelo através da API Vertex AI, conclua os seguintes passos:
- Crie um ponto final, se necessário.
- Obtenha o ID do ponto final.
- Implemente o modelo no ponto final.
Crie um ponto final
Se estiver a implementar um modelo num ponto final existente, pode ignorar este passo.
gcloud
O exemplo seguinte usa o comando gcloud ai endpoints create
:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_NAME
Substitua o seguinte:
- LOCATION_ID: a região onde está a usar o Vertex AI.
ENDPOINT_NAME: o nome a apresentar do ponto final.
A ferramenta Google Cloud CLI pode demorar alguns segundos a criar o ponto final.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: a sua região.
- PROJECT_ID: o seu ID do projeto.
- ENDPOINT_NAME: o nome a apresentar do ponto final.
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
Corpo JSON do pedido:
{ "display_name": "ENDPOINT_NAME" }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.
Aceda ao ID do ponto final
Precisa do ID do ponto final para implementar o modelo.
gcloud
O exemplo seguinte usa o comando gcloud ai endpoints list
:
gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME
Substitua o seguinte:
- LOCATION_ID: a região onde está a usar o Vertex AI.
ENDPOINT_NAME: o nome a apresentar do ponto final.
Tenha em atenção o número apresentado na coluna
ENDPOINT_ID
. Use este ID no passo seguinte.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: a região onde está a usar o Vertex AI.
- PROJECT_ID: .
- ENDPOINT_NAME: o nome a apresentar do ponto final.
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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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" } ] }
Implemente o modelo
Selecione o separador abaixo para o seu idioma ou ambiente:
gcloud
Os exemplos seguintes usam o comando gcloud ai endpoints deploy-model
.
O exemplo seguinte implementa um Model
num Endpoint
sem usar GPUs para acelerar a publicação de previsões e sem dividir o tráfego entre vários recursos DeployedModel
:
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- ENDPOINT_ID: o ID do ponto final.
- LOCATION_ID: a região onde está a usar o Vertex AI.
- MODEL_ID: o ID do modelo a implementar.
-
DEPLOYED_MODEL_NAME: um nome para o
DeployedModel
. Também pode usar o nome a apresentar doModel
para oDeployedModel
. -
MACHINE_TYPE: opcional. Os recursos da máquina usados para cada nó desta implementação. A predefinição é
n1-standard-2
. Saiba mais sobre os tipos de máquinas. -
MIN_REPLICA_COUNT: o número mínimo de nós para esta implementação.
O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência,
até ao número máximo de nós e nunca inferior a este número de nós.
Este valor tem de ser igual ou superior a 1. Se o sinalizador
--min-replica-count
for omitido, o valor predefinido é 1. -
MAX_REPLICA_COUNT: o número máximo de nós para esta implementação.
O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência,
até este número de nós e nunca inferior ao número mínimo de nós.
Se omitir a flag
--max-replica-count
, o número máximo de nós é definido para 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
Dividir tráfego
A flag --traffic-split=0=100
nos exemplos anteriores envia 100% do tráfego de previsão que o Endpoint
recebe para o novo DeployedModel
, que é representado pelo ID temporário 0
. Se o seu Endpoint
já tiver outros
DeployedModel
recursos, pode dividir o tráfego entre os novos
DeployedModel
e os antigos.
Por exemplo, para enviar 20% do tráfego para a nova versão DeployedModel
e 80% para uma versão mais antiga,
execute o seguinte comando.
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes 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
Usa o método endpoints.predict para pedir uma inferência online.
Implemente o modelo.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: a região onde está a usar o Vertex AI.
- PROJECT_ID: .
- ENDPOINT_ID: o ID do ponto final.
- MODEL_ID: o ID do modelo a implementar.
-
DEPLOYED_MODEL_NAME: um nome para o
DeployedModel
. Também pode usar o nome a apresentar doModel
para oDeployedModel
. -
MACHINE_TYPE: opcional. Os recursos da máquina usados para cada nó desta implementação. A predefinição é
n1-standard-2
. Saiba mais sobre os tipos de máquinas. - ACCELERATOR_TYPE: o tipo de acelerador a anexar à máquina. Opcional se ACCELERATOR_COUNT não for especificado ou for zero. Não recomendado para modelos do AutoML ou modelos preparados personalizados que estejam a usar imagens sem GPU. Saiba mais.
- ACCELERATOR_COUNT: o número de aceleradores que cada réplica deve usar. Opcional. Deve ser zero ou não especificado para modelos AutoML ou modelos preparados personalizados que estão a usar imagens não GPU.
- MIN_REPLICA_COUNT: o número mínimo de nós para esta implementação. O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência, até ao número máximo de nós e nunca inferior a este número de nós. Este valor tem de ser igual ou superior a 1.
- MAX_REPLICA_COUNT: o número máximo de nós para esta implementação. O número de nós pode ser aumentado ou diminuído conforme necessário pela carga de inferência, até este número de nós e nunca inferior ao número mínimo de nós.
- REQUIRED_REPLICA_COUNT: opcional. O número necessário de nós para que esta implementação seja marcada como bem-sucedida. Tem de ser igual ou superior a 1 e inferior ou igual ao número mínimo de nós. Se não for especificado, o valor predefinido é o número mínimo de nós.
- TRAFFIC_SPLIT_THIS_MODEL: A percentagem do tráfego de previsão para este ponto final a encaminhar para o modelo implementado com esta operação. A predefinição é 100. Todas as percentagens de tráfego têm de totalizar 100. Saiba mais acerca das divisões de tráfego.
- DEPLOYED_MODEL_ID_N: opcional. Se outros modelos forem implementados neste ponto final, tem de atualizar as respetivas percentagens de divisão de tráfego para que todas as percentagens totalizem 100.
- TRAFFIC_SPLIT_MODEL_N: o valor da percentagem da divisão de tráfego para a chave do ID do modelo implementado.
- PROJECT_NUMBER: o número do projeto gerado automaticamente do seu projeto
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 do pedido:
{ "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, "requiredReplicaCount": REQUIRED_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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Saiba como alterar as definições predefinidas para o registo de inferências.
Obtenha o estado da operação
Alguns pedidos iniciam operações de longa duração que requerem tempo para serem concluídas. Estes pedidos devolvem um nome da operação, que pode usar para ver o estado da operação ou cancelar a operação. A Vertex AI fornece métodos auxiliares para fazer chamadas contra operações de longa duração. Para mais informações, consulte o artigo Trabalhar com operações de longa duração.
Obtenha uma inferência online com o modelo implementado
Para fazer uma inferência online, envie um ou mais itens de teste a um modelo para análise. O modelo devolve resultados baseados no objetivo do modelo. Use a Google Cloud consola ou a API Vertex AI para pedir uma inferência online.
Google Cloud consola
Na Google Cloud consola, na secção Vertex AI, aceda à página Modelos.
Na lista de modelos, clique no nome do modelo a partir do qual quer pedir inferências.
Selecione o separador Implementar e testar.
Na secção Teste o seu modelo, adicione itens de teste para pedir uma inferência. Os dados de inferência de base são preenchidos automaticamente. Em alternativa, pode introduzir os seus próprios dados de inferência e clicar em Prever.
Após a conclusão da inferência, o Vertex AI devolve os resultados na consola.
API: Classification
gcloud
-
Crie um ficheiro denominado
request.json
com o seguinte conteúdo:{ "instances": [ { PREDICTION_DATA_ROW } ] }
Substitua o seguinte:
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes das funcionalidades e valores como os valores das funcionalidades correspondentes. Por exemplo, para um conjunto de dados com um número, uma matriz de strings e uma categoria, a linha de dados pode ter o seguinte aspeto:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
Tem de ser fornecido um valor para cada funcionalidade incluída na preparação. O formato dos dados usados para a previsão tem de corresponder ao formato usado para a preparação. Consulte o artigo Formato de dados para previsões para ver detalhes.
-
-
Execute o seguinte comando:
gcloud ai endpoints predict ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Substitua o seguinte:
- ENDPOINT_ID: o ID do ponto final.
- LOCATION_ID: a região onde está a usar o Vertex AI.
REST
Usa o método endpoints.predict para pedir uma inferência online.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
-
LOCATION_ID: região onde o ponto final está localizado. Por exemplo,
us-central1
. - PROJECT_ID: o seu ID do projeto.
- ENDPOINT_ID: o ID do ponto final.
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes das funcionalidades e valores como os valores das funcionalidades correspondentes. Por exemplo, para um conjunto de dados com um número, uma matriz de strings e uma categoria, a linha de dados pode ter o seguinte aspeto:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
Tem de ser fornecido um valor para cada funcionalidade incluída na preparação. O formato dos dados usados para a previsão tem de corresponder ao formato usado para a preparação. Consulte o artigo Formato de dados para previsões para ver detalhes.
- DEPLOYED_MODEL_ID: saída pelo método
predict
e aceite como entrada pelo métodoexplain
. O ID do modelo usado para gerar a inferência. Se precisar de pedir explicações para uma inferência pedida anteriormente, e tiver mais do que um modelo implementado, pode usar este ID para garantir que as explicações são devolvidas para o mesmo modelo que forneceu a inferência 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 do pedido:
{ "instances": [ { PREDICTION_DATA_ROW } ] }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
Deve receber uma resposta JSON semelhante à seguinte:
{ "predictions": [ { "scores": [ 0.96771615743637085, 0.032283786684274673 ], "classes": [ "0", "1" ] } ] "deployedModelId": "2429510197" }
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.
API: regressão
gcloud
-
Crie um ficheiro denominado `request.json` com o seguinte conteúdo:
{ "instances": [ { PREDICTION_DATA_ROW } ] }
Substitua o seguinte:
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes das funcionalidades e valores como os valores das funcionalidades 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 ter o seguinte aspeto:
"age":3.6, "sq_ft":5392, "code": "90331"
Tem de ser fornecido um valor para cada funcionalidade incluída na preparação. O formato dos dados usados para a previsão tem de corresponder ao formato usado para a preparação. Consulte o artigo Formato de dados para previsões para ver detalhes.
-
-
Execute o seguinte comando:
gcloud ai endpoints predict ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Substitua o seguinte:
- ENDPOINT_ID: o ID do ponto final.
- LOCATION_ID: a região onde está a usar o Vertex AI.
REST
Usa o método endpoints.predict para pedir uma inferência online.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
-
LOCATION_ID: região onde o ponto final está localizado. Por exemplo,
us-central1
. - PROJECT_ID: .
- ENDPOINT_ID: o ID do ponto final.
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes das funcionalidades e valores como os valores das funcionalidades 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 ter o seguinte aspeto:
"age":3.6, "sq_ft":5392, "code": "90331"
Tem de ser fornecido um valor para cada funcionalidade incluída na preparação. O formato dos dados usados para a previsão tem de corresponder ao formato usado para a preparação. Consulte o artigo Formato de dados para previsões para ver detalhes.
- DEPLOYED_MODEL_ID: saída pelo método
predict
e aceite como entrada pelo métodoexplain
. O ID do modelo usado para gerar a inferência. Se precisar de pedir explicações para uma inferência pedida anteriormente, e tiver mais do que um modelo implementado, pode usar este ID para garantir que as explicações são devolvidas para o mesmo modelo que forneceu a inferência 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 do pedido:
{ "instances": [ { PREDICTION_DATA_ROW } ] }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
Deve receber uma resposta JSON semelhante à seguinte:
{ "predictions": [ [ { "value": 65.14233 } ] ], "deployedModelId": "DEPLOYED_MODEL_ID" }
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.
Interprete os resultados da previsão
Classificação
Os modelos de classificação devolvem uma pontuação de confiança.
A pontuação de confiança comunica a intensidade com que o modelo associa cada classe ou etiqueta a um item de teste. Quanto mais elevado for o número, maior é a confiança do modelo de que a etiqueta deve ser aplicada a esse item. Decide qual o nível de confiança que a pontuação tem de ter para aceitar os resultados do modelo.
Regressão
Os modelos de regressão devolvem um valor de inferência.
Se o seu modelo usar a inferência probabilística, o campo value
contém o minimizador do objetivo de otimização. Por exemplo, se o objetivo de otimização for minimize-rmse
, o campo value
contém o valor médio.
Se for minimize-mae
, o campo value
contém o valor mediano.
Se o seu modelo usar inferência probabilística com quantis, o Vertex AI fornece valores de quantis e inferências, além do minimizador do objetivo de otimização. Os valores dos quantis são definidos durante a preparação do modelo. As inferências de quantil são os valores de inferência associados aos valores de quantil.
Obtenha uma explicação online com o modelo implementado
Pode pedir uma inferência com explicações (também denominadas atribuições de funcionalidades) para ver como o modelo chegou a uma inferência. Os valores de importância das funcionalidades locais indicam a contribuição de cada funcionalidade para o resultado da inferência. As atribuições de funcionalidades estão incluídas nas inferências do Vertex AI através do Vertex Explainable AI.
Consola
Quando usa a Google Cloud consola para pedir uma inferência online, os valores de importância das funcionalidades locais são devolvidos automaticamente.
Se usou os valores de previsão pré-preenchidos, os valores de importância das caraterísticas locais são todos zero. Isto deve-se ao facto de os valores pré-preenchidos serem os dados de previsão de base, pelo que a previsão devolvida é o valor de previsão de base.
gcloud
Crie um ficheiro denominado
request.json
com o seguinte conteúdo:{ "instances": [ { PREDICTION_DATA_ROW } ] }
Substitua o seguinte:
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes das funcionalidades e valores como os valores das funcionalidades correspondentes. Por exemplo, para um conjunto de dados com um número, uma matriz de strings e uma categoria, a linha de dados pode ter o seguinte aspeto:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
Tem de ser fornecido um valor para cada funcionalidade incluída na preparação. O formato dos dados usados para a previsão tem de corresponder ao formato usado para a preparação. Consulte o artigo Formato de dados para previsões para ver detalhes.
-
Execute o seguinte comando:
gcloud ai endpoints explain ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Substitua o seguinte:
- ENDPOINT_ID: o ID do ponto final.
- LOCATION_ID: a região onde está a usar o Vertex AI.
Opcionalmente, se quiser enviar um pedido de explicação a um
DeployedModel
específico noEndpoint
, pode especificar a flag--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 implementado para o qual quer obter
explicações. O ID está incluído na resposta do método
predict
. Se precisar de pedir explicações para um modelo específico e tiver mais do que um modelo implementado no mesmo ponto final, pode usar este ID para garantir que as explicações são devolvidas para esse modelo específico.
REST
O exemplo seguinte mostra um pedido de inferência online para um modelo de classificação tabular com atribuições de caraterísticas locais. O formato do pedido é o mesmo para os modelos de regressão.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
-
LOCATION: região onde o ponto final está localizado. Por exemplo,
us-central1
. - PROJECT: .
- ENDPOINT_ID: o ID do ponto final.
-
PREDICTION_DATA_ROW: um objeto JSON com chaves como os nomes das funcionalidades e valores como os valores das funcionalidades correspondentes. Por exemplo, para um conjunto de dados com um número, uma matriz de strings e uma categoria, a linha de dados pode ter o seguinte aspeto:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
Tem de ser fornecido um valor para cada funcionalidade incluída na preparação. O formato dos dados usados para a previsão tem de corresponder ao formato usado para a preparação. Consulte o artigo Formato de dados para previsões para ver detalhes.
-
DEPLOYED_MODEL_ID (opcional): o ID do modelo implementado para o qual quer obter
explicações. O ID está incluído na resposta do método
predict
. Se precisar de pedir explicações para um modelo específico e tiver mais do que um modelo implementado no mesmo ponto final, pode usar este ID para garantir que as explicações são devolvidas para esse modelo específico.
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID:explain
Corpo JSON do pedido:
{ "instances": [ { PREDICTION_DATA_ROW } ], "deployedModelId": "DEPLOYED_MODEL_ID" }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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 ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.
Receba explicações para uma previsão devolvida anteriormente
Uma vez que as explicações aumentam a utilização de recursos, é recomendável reservar o pedido de explicações para situações em que as necessita especificamente. Por vezes, pode ser útil pedir explicações para um resultado de inferência que já recebeu, talvez porque a inferência foi um valor atípico ou não fez sentido.
Se todas as suas inferências provêm do mesmo modelo, pode simplesmente reenviar os dados do pedido, com as explicações pedidas desta vez. No entanto, se tiver vários modelos a devolver inferências, tem de se certificar de que envia o pedido de explicação para o modelo correto. Pode ver explicações para um modelo específico incluindo o ID do modelo implementado deployedModelID
no seu pedido, que está incluído na resposta do pedido de inferência original.
Tenha em atenção que o ID do modelo implementado é diferente do ID do modelo.
Interprete os resultados da explicação
Para calcular a importância das caraterísticas locais, primeiro é calculado o resultado da inferência de base. Os valores de base são calculados a partir dos dados de preparação, usando o valor mediano para caraterísticas numéricas e o modo para caraterísticas categóricas. A inferência gerada a partir dos valores de referência é a pontuação de inferência de referência. Os valores de base são calculados uma vez para um modelo e não mudam.
Para uma inferência específica, a importância da caraterística local para cada caraterística indica o quanto essa caraterística adicionou ou subtraiu ao resultado em comparação com a pontuação de inferência de referência. A soma de todos os valores de importância das funcionalidades é igual à diferença entre a pontuação de inferência de referência e o resultado da inferência.
Para modelos de classificação, a pontuação está sempre entre 0,0 e 1,0, inclusive. Por conseguinte, os valores de importância das caraterísticas locais para modelos de classificação estão sempre entre -1,0 e 1,0 (inclusive).
Para ver exemplos de consultas de atribuição de funcionalidades e saber mais, consulte o artigo Atribuições de funcionalidades para classificação e regressão.Exemplo de saída para inferências e explicações
Classificação
O payload de retorno para uma inferência online de um modelo de classificação tabular com importância das caraterísticas é semelhante ao exemplo seguinte.
O instanceOutputValue
de 0.928652400970459
é a pontuação de confiança da classe com a pontuação mais alta, neste caso, class_a
. O campo baselineOutputValue
contém a pontuação de inferência de base, 0.808652400970459
. A funcionalidade que mais contribuiu para este 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 para uma inferência online com importância das funcionalidades de um modelo de regressão tabular é semelhante ao seguinte exemplo.
O instanceOutputValue
de 1795.1246466281819
é o valor previsto. O campo baselineOutputValue
contém a pontuação de inferência de base, 1788.7423095703125
. A funcionalidade que mais contribuiu para este resultado foi feature_3
.
{
"predictions": [
{
"value": 1795.1246466281819
}
]
"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"
}
O que se segue?
- Saiba como exportar o seu modelo.
- Saiba mais acerca dos preços para inferências online.