Cette page explique comment envoyer des requêtes API à Vertex AI Vizier à l'aide de Python. Pour en savoir plus sur le fonctionnement de Vertex AI Vizier, consultez la présentation de Vertex AI Vizier.
Avant de commencer
- 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.createpermission. 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.enablepermission. 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.createpermission. 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.enablepermission. 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.
- Installez le SDK Vertex AI pour Python.
- Consultez des études dans la documentation de référence sur REST.
Définir des constantes
Pour définir des constantes, exécutez les commandes suivantes en remplaçant REGION et PROJECT_ID par votre région et votre ID de projet.
Saisissez le nom de votre étude ou utilisez les valeurs suggérées.
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)
Créer des requêtes API
Les requêtes API de ligne de commande suivantes sont écrites en Python.
Créer une étude
Une étude est une série de tests, ou d'essais, visant à optimiser vos hyperparamètres ou paramètres.
Dans l'exemple suivant, l'objectif est d'optimiser y = x^2 avec x dans la plage [-10. 10]. Cet exemple ne comporte qu'un seul paramètre et exécute une fonction calculée pour vous montrer comment utiliser 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],
}
}
Pour créer l'étude à l'aide de votre configuration d'étude, envoyez la requête suivante via VizierServiceClient. Utilisez l'élément STUDY_NAME renvoyé pour interroger l'étude.
vizier_client = aiplatform.gapic.VizierServiceClient(client_options=dict(api_endpoint=ENDPOINT))
study = vizier_client.create_study(parent=PARENT, study=study)
STUDY_NAME = study.name
Afficher une étude
Une fois l'étude créée, vous pouvez la rechercher dans la consoleGoogle Cloud , dans la section Vertex AI de la page Tests.
Obtenir une étude
Pour obtenir une étude, envoyez la requête suivante.
vizier_client.get_study({'name': STUDY_NAME})
Répertorier les études
Pour répertorier les études d'un projet et d'une région spécifiques, envoyez la requête suivante :
vizier_client.list_studies({'parent': PARENT})
Obtenir des suggestions d'essais
Pour obtenir une suggestion d'essai de Vertex AI Vizier, créez une requête contenant un élément SUGGEST_COUNT et un élément CLIENT_ID. Transmettez ces informations à Vertex AI Vizier en envoyant la requête.
Créez la requête à l'aide des commandes suivantes. Remplacez SUGGEST_COUNT par le nombre de suggestions que vous souhaitez obtenir pour chaque requête.
suggest_response = vizier_client.suggest_trials({
'parent': STUDY_NAME,
'suggestion_count': SUGGEST_COUNT,
'client_id': CLIENT_ID
})
suggest_trials lance une opération de longue durée pour générer l'essai.
La réponse vous indique que Vertex AI Vizier travaille sur les suggestions d'essais.
Pour attendre le résultat renvoyé, utilisez la fonction result().
suggest_response.result().trials
Le format suivant illustre un exemple d'essai. Cet essai suggère d'utiliser la valeur 0.1 pour le paramètre x.
name: "TRIAL_ID"
state: ACTIVE
parameters {
parameter_id: "x"
value {
number_value: 0.1
}
}
start_time {
seconds: 1618011215
}
Utilisez la valeur TRIAL_ID de la réponse précédente pour obtenir l'essai :
vizier_client.get_trial({
'name': TRIAL_ID
})
Évaluer les résultats
Après avoir reçu les suggestions d'essais, évaluez chaque essai et enregistrez chaque résultat en tant que mesure.
Par exemple, si la fonction que vous essayez d'optimiser est y = x^2, vous l'évaluez à l'aide de la valeur suggérée de x de l'essai.
En utilisant une valeur suggérée de 0.1, la fonction renvoie y = 0.1 * 0.1 et génère la valeur 0.01.
Ajouter une mesure
Après avoir évalué la suggestion d'essai pour obtenir une mesure, vous devez ajouter celle-ci à votre essai.
Exécutez les commandes suivantes pour stocker votre mesure et envoyer la requête.
Dans cet exemple, remplacez RESULT par la mesure. Si la fonction que vous optimisez est y = x^2 et que la valeur suggérée de x est 0.1, le résultat est 0.01.
vizier_client.add_trial_measurement({
'trial_name': TRIAL_ID,
'measurement': {
'metrics': [{'metric_id': 'y', 'value':RESULT }]
}
})
Effectuer un essai
Après avoir ajouté toutes les mesures à un essai, vous devez effectuer l'essai en envoyant une commande.
Une fois l'essai terminé, vous pouvez soit envoyer une commande pour ne finaliser que l'essai, soit envoyer une commande pour ajouter une mesure finale et terminer l'essai.
Sans mesure finale
Pour terminer l'essai sans ajouter de mesure finale, envoyez la requête suivante :
vizier_client.complete_trial({
'name': TRIAL_ID
})
Avec une mesure finale
Pour terminer un essai et inclure une mesure finale, utilisez les commandes suivantes, en remplaçant RESULT par la mesure finale.
vizier_client.complete_trial({
'name': TRIAL_ID
'final_measurement': {
'metrics': [{'metric_id': 'y', 'value': RESULT}]
}
})
Répertorier les essais
Pour répertorier les essais d'une étude spécifique, envoyez la requête suivante :
vizier_client.list_trials({
'parent': STUDY_NAME
})
Une fois tous les essais en attente terminés, vous pouvez appeler la requête suggestTrials pour obtenir d'autres suggestions et répéter le processus d'évaluation de l'essai.
Répertorier les essais optimaux
L'exemple suivant montre list_optimal_trials, qui renvoie les essais optimaux pour pareto pour une étude à plusieurs objectifs ou les essais optimaux pour une étude à objectif unique :
vizier_client.list_optimal_trials({
'parent': STUDY_NAME
})