En esta página se describe cómo hacer solicitudes a la API Vertex AI Vizier mediante Python. Para obtener información sobre cómo funciona Vertex AI Vizier, consulta la información general sobre Vertex AI Vizier.
Antes de empezar
- 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.
- Instala el SDK de Vertex AI para Python.
- Consulta la referencia de REST para estudios.
Definir constantes
Para definir constantes, ejecuta los siguientes comandos y sustituye REGION
y PROJECT_ID
por tu región y el ID de tu proyecto.
Crea el nombre del estudio o usa los 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)
Crear solicitudes a la API
Las siguientes solicitudes de API de línea de comandos están escritas en Python.
Crear un estudio
Un estudio es una serie de experimentos o pruebas que te ayudan a optimizar tus hiperparámetros o parámetros.
En el siguiente ejemplo, el objetivo es maximizar y = x^2
con x
en el intervalo [-10. 10]. Este ejemplo solo tiene un parámetro y usa una función calculada para mostrar cómo usar 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 crear el estudio con la configuración que has definido, envía la siguiente solicitud a través de VizierServiceClient
. Usa el STUDY_NAME
devuelto para consultar el estudio.
vizier_client = aiplatform.gapic.VizierServiceClient(client_options=dict(api_endpoint=ENDPOINT))
study = vizier_client.create_study(parent=PARENT, study=study)
STUDY_NAME = study.name
Ver tu estudio
Una vez que hayas creado el estudio, podrás encontrarlo en la consola, en la sección Vertex AI, en la página Experimentos.Google Cloud
Ver un estudio
Para obtener un estudio, envía la siguiente solicitud.
vizier_client.get_study({'name': STUDY_NAME})
Mostrar estudios
Para enumerar los estudios de un proyecto y una región concretos, envía la siguiente solicitud:
vizier_client.list_studies({'parent': PARENT})
Obtener pruebas sugeridas
Para obtener una sugerencia de prueba de Vertex AI Vizier, crea una solicitud que contenga un SUGGEST_COUNT
y un CLIENT_ID
. Envía esta información a Vertex AI Vizier enviando la solicitud.
Crea la solicitud con los siguientes comandos. Cambia
SUGGEST_COUNT
por el número de sugerencias
que quieras obtener de cada solicitud.
suggest_response = vizier_client.suggest_trials({
'parent': STUDY_NAME,
'suggestion_count': SUGGEST_COUNT,
'client_id': CLIENT_ID
})
suggest_trials
inicia una operación de larga duración para generar la prueba.
La respuesta te indica que Vertex AI Vizier está trabajando en las sugerencias de prueba.
Para esperar el resultado devuelto, usa la función result()
.
suggest_response.result().trials
En el siguiente formato se muestra un ejemplo de prueba. Esta prueba sugiere usar el valor 0.1
para el parámetro x
.
name: "TRIAL_ID"
state: ACTIVE
parameters {
parameter_id: "x"
value {
number_value: 0.1
}
}
start_time {
seconds: 1618011215
}
Usa el TRIAL_ID
de la respuesta anterior para
obtener la prueba:
vizier_client.get_trial({
'name': TRIAL_ID
})
Evaluar los resultados
Después de recibir las sugerencias de pruebas, evalúa cada prueba y registra cada resultado como una medición.
Por ejemplo, si la función que quiere optimizar es y = x^2
, evalúe la función con el valor sugerido de x
de la prueba.
Si se usa el valor sugerido 0.1
, la función da como resultado y = 0.1 * 0.1
,
lo que da como resultado 0.01
.
Añadir una medición
Después de evaluar la sugerencia de prueba para obtener una medición, añádela a tu prueba.
Usa los siguientes comandos para almacenar la medición y enviar la solicitud.
En este ejemplo, sustituya RESULT
por la medición. Si la función que estás optimizando es y = x^2
y el valor sugerido de x
es 0.1
, el resultado es 0.01
.
vizier_client.add_trial_measurement({
'trial_name': TRIAL_ID,
'measurement': {
'metrics': [{'metric_id': 'y', 'value':RESULT }]
}
})
Completar una prueba
Una vez que hayas añadido todas las mediciones de una prueba, debes completarla enviando un comando.
Cuando finalices la prueba, puedes enviar un comando para completarla o para añadir una medición final y completarla.
Sin medición final
Para completar una prueba sin añadir una medición final, envía la siguiente solicitud:
vizier_client.complete_trial({
'name': TRIAL_ID
})
Con la medición final
Para completar una prueba e incluir una medición final, usa los siguientes comandos y sustituye RESULT
por la medición final.
vizier_client.complete_trial({
'name': TRIAL_ID
'final_measurement': {
'metrics': [{'metric_id': 'y', 'value': RESULT}]
}
})
Mostrar pruebas
Para enumerar las pruebas de un estudio específico, envíe la siguiente solicitud:
vizier_client.list_trials({
'parent': STUDY_NAME
})
Cuando hayas completado todas las pruebas pendientes, puedes llamar a
suggestTrials
para obtener más sugerencias y repetir el proceso de evaluación de la prueba.
Mostrar pruebas óptimas
En el siguiente ejemplo se muestra list_optimal_trials
, que devuelve las pruebas óptimas de Pareto de un estudio con varios objetivos o las pruebas óptimas de un estudio con un solo objetivo:
vizier_client.list_optimal_trials({
'parent': STUDY_NAME
})