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
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
Create local authentication credentials for your user account:
gcloud auth application-default login
- Installez le SDK Vertex AI pour Python.
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 simple à calculer 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 console Google 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
})
Étapes suivantes
- Consultez des études dans la documentation de référence sur REST.