Esta página descreve como fazer pedidos de API ao Vertex AI Vizier através do Python. Para informações sobre o funcionamento do Vertex AI Vizier, consulte o artigo Vista geral do Vertex AI Vizier.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
- Instale o SDK Vertex AI para Python.
- Consulte a referência REST para studies.
Defina constantes
Para definir constantes, execute os seguintes comandos, substituindo
REGION
e PROJECT_ID
pela sua região e ID do projeto.
Crie o seu próprio nome do estudo ou use os valores sugeridos.
import json
import datetime
from google.cloud import aiplatform
REGION = "REGION"
PROJECT_ID = "PROJECT_ID"
# The following placeholder variables are automatically filled in.
STUDY_DISPLAY_NAME = '{}_study_{}'.format(PROJECT_ID.replace('-', ''), datetime.datetime.now().strftime('%Y%m%d_%H%M%S')) #@param {type: 'string'}
ENDPOINT = REGION + '-aiplatform.googleapis.com'
PARENT = 'projects/{}/locations/{}'.format(PROJECT_ID, REGION)
Construa pedidos de API
Os seguintes pedidos de API de linha de comandos são escritos em Python.
Crie um estudo
Um estudo é uma série de experiências ou testes que ajudam a otimizar os hiperparâmetros ou os parâmetros.
No exemplo seguinte, o objetivo é maximizar y = x^2
com x
no intervalo de [-10. 10]. Este exemplo tem apenas um parâmetro e usa uma função calculada para ajudar a demonstrar como usar o Vertex AI Vizier.
param_x = {
'parameter_id': 'x',
'double_value_spec': {
'min_value': -10.0,
'max_value': 10.0
}
}
metric_y = {
'metric_id': 'y',
'goal': 'MAXIMIZE'
}
study = {
'display_name': STUDY_DISPLAY_NAME,
'study_spec': {
'algorithm': 'RANDOM_SEARCH',
'parameters': [param_x],
'metrics': [metric_y],
}
}
Para criar o estudo através da configuração do estudo, envie o seguinte pedido através da VizierServiceClient
. Use o STUDY_NAME
devolvido
para consultar o estudo.
vizier_client = aiplatform.gapic.VizierServiceClient(client_options=dict(api_endpoint=ENDPOINT))
study = vizier_client.create_study(parent=PARENT, study=study)
STUDY_NAME = study.name
Veja o seu estudo
Depois de criar o estudo, pode encontrá-lo na Google Cloud consola, na secção Vertex AI, na página Experiências.
Faça um estudo
Para obter um estudo, envie o seguinte pedido.
vizier_client.get_study({'name': STUDY_NAME})
Apresentar estudos
Para listar estudos num projeto e numa região específicos, envie o seguinte pedido:
vizier_client.list_studies({'parent': PARENT})
Receba avaliações sugeridas
Para receber uma sugestão de avaliação do Vertex AI Vizier, crie um pedido que contenha um SUGGEST_COUNT
e um CLIENT_ID
. Transmita estas informações ao Vertex AI Vizier enviando o pedido.
Crie o pedido com os seguintes comandos. Altere
SUGGEST_COUNT
para o número de sugestões
que quer receber de cada pedido.
suggest_response = vizier_client.suggest_trials({
'parent': STUDY_NAME,
'suggestion_count': SUGGEST_COUNT,
'client_id': CLIENT_ID
})
suggest_trials
inicia uma operação de longa duração para gerar a avaliação.
A resposta indica que o Vertex AI Vizier está a trabalhar nas sugestões de testes.
Para aguardar o resultado devolvido, use a função result()
.
suggest_response.result().trials
O formato seguinte mostra um exemplo de um teste. Este teste sugere a utilização do valor
0.1
para o parâmetro x
.
name: "TRIAL_ID"
state: ACTIVE
parameters {
parameter_id: "x"
value {
number_value: 0.1
}
}
start_time {
seconds: 1618011215
}
Use o TRIAL_ID
da resposta anterior para
obter a avaliação:
vizier_client.get_trial({
'name': TRIAL_ID
})
Avalie os resultados
Depois de receber as sugestões de testes, avalie cada teste e registe cada resultado como uma medição.
Por exemplo, se a função que está a tentar otimizar for y = x^2
, então
avalia a função usando o valor sugerido do teste de x
.
Usando um valor sugerido de 0.1
, a função é avaliada como y = 0.1 * 0.1
,
o que resulta em 0.01
.
Adicione uma medição
Depois de avaliar a sugestão de avaliação para obter uma medição, adicione esta medição à sua avaliação.
Use os seguintes comandos para armazenar a medição e enviar o pedido.
Neste exemplo, substitua RESULT
pela medição. Se a função que está a otimizar for y = x^2
e o valor sugerido de x
for 0.1
, o resultado é 0.01
.
vizier_client.add_trial_measurement({
'trial_name': TRIAL_ID,
'measurement': {
'metrics': [{'metric_id': 'y', 'value':RESULT }]
}
})
Conclua uma avaliação
Depois de adicionar todas as medições para um teste, tem de concluir o teste enviando um comando.
Quando concluir a avaliação, pode enviar um comando para concluir apenas a avaliação ou enviar um comando para adicionar uma medição final e concluir a avaliação.
Sem medição final
Para concluir uma avaliação sem adicionar uma medição final, envie o seguinte pedido:
vizier_client.complete_trial({
'name': TRIAL_ID
})
Com a medição final
Para concluir um teste e incluir uma medição final, use os seguintes comandos, substituindo RESULT
pela medição final.
vizier_client.complete_trial({
'name': TRIAL_ID
'final_measurement': {
'metrics': [{'metric_id': 'y', 'value': RESULT}]
}
})
Listar avaliações
Para listar as avaliações num estudo específico, envie o seguinte pedido:
vizier_client.list_trials({
'parent': STUDY_NAME
})
Depois de concluir todas as avaliações pendentes, pode chamar o método
suggestTrials
para ver mais sugestões e repetir o processo de avaliação de avaliação.
Liste as avaliações ideais
O exemplo seguinte mostra list_optimal_trials
, que devolve as tentativas ideais de Pareto para um estudo com vários objetivos ou as tentativas ideais para um estudo com um único objetivo:
vizier_client.list_optimal_trials({
'parent': STUDY_NAME
})