Envoyer des requêtes API à AI Platform Vizier
Cette page explique comment envoyer des requêtes API à AI Platform Vizier à l'aide de curl
.
Avant de commencer
- Consultez la présentation d'AI Platform Vizier pour en savoir plus sur le fonctionnement d'AI Platform Vizier.
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training and Prediction API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training and Prediction API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Se connecter au compte de facturation Cloud
Exécutez les commandes suivantes pour vous connecter à votre compte Google Cloud :
gcloud auth application-default login
gcloud auth login
Définir des constantes
Exécutez les commandes suivantes en remplaçant USERNAME et PROJECT_ID par votre nom d'utilisateur et votre ID de projet. Saisissez le nom de votre étude et votre ID client, ou utilisez les valeurs suggérées.
export USER=USERNAME
export PROJECT_ID=PROJECT_ID{"</var>"}}
export REGION=us-central1
export STUDY_NAME=${USER}_vizier_study_$(date +%Y%m%d%H%M%S)
export CLIENT_ID=${USER}_client_1
export ENDPOINT=https://$REGION-ml.googleapis.com/v1
Créer des requêtes API
La section suivante décrit comment créer des requêtes API en ligne de commande destinées à AI Platform Vizier, à l'aide de curl
.
Créer une étude
Une étude est une série de tests, ou d'essais, visant à optimiser vos hyperparamètres ou paramètres.
Pour créer une étude, créez une configuration d'étude au format JSON, puis envoyez une requête POST
qui transmet votre configuration à AI Platform Vizier.
La configuration de l'étude peut se présenter comme suit. Pour en savoir plus sur les options d'algorithme, les types d'objectifs et d'autres options, consultez la documentation des API AI Platform Training et AI Platform Prediction.
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 AI Platform Vizier.
Découvrez comment utiliser AI Platform Vizier pour les problèmes d'optimisation complexes et comment optimiser plusieurs fonctions à la fois.
cat > /tmp/create_study.json <<EOF
{
"studyConfig": {
"algorithm": 0,
"metrics": [
{
"goal": "MAXIMIZE",
"metric": "y"
}
],
"parameters": [
{
"doubleValueSpec": {
"maxValue": 10.0,
"minValue": -10.0
},
"parameter": "x",
"type": "DOUBLE"
}
]
}
}
EOF
Pour créer l'étude à l'aide de votre configuration d'étude, envoyez la requête POST
suivante.
curl -X POST -H "Content-Type: application/json" \
-d @/tmp/create_study.json \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies?study_id=${STUDY_NAME}"
Obtenir une étude
Pour obtenir une étude, envoyez la requête suivante.
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${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.
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/"
Obtenir des suggestions d'essais
Pour obtenir une suggestion d'essai d'AI Platform Vizier, créez un fichier JSON contenant un ID de projet (suggestionCount
) et votre ID client.
Envoyez ensuite une requête POST
qui transmet ces informations à AI Platform Vizier.
Créez le fichier JSON à l'aide des commandes suivantes. Remplacez suggestionCount
par le nombre de suggestions que vous souhaitez obtenir pour chaque requête.
cat > /tmp/suggest_trial.json <<EOF
{
"suggestionCount": 1,
"clientId": "${CLIENT_ID}"
}
EOF
Pour recevoir une ou plusieurs suggestions, envoyez la requête POST
suivante.
curl -X POST -H "Content-Type: application/json" \
-d @/tmp/suggest_trial.json \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials:suggest"
La requête suggestTrial
lance une opération de longue durée qui consiste à générer l'essai. La réponse vous indique qu'AI Platform Vizier est en train de générer des suggestions d'essais. Cette réponse doit être au format suivant :
{
"name": "projects/<project>/locations/<region>/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.ml.v1.SuggestTrialsMetadata",
"study": <study-name>,
"createTime": <create-time>,
"suggestionCount": <suggestion-count>
}
}
Vous pouvez utiliser l'ID d'opération de la réponse précédente pour interroger l'opération de suggestion et obtenir des suggestions d'essais. Exécutez la commande suivante :
SUGGEST_OPERATION_ID=OPERATION_ID
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/operations/${SUGGEST_OPERATION_ID}"
Si vous n'obtenez pas de réponse, c'est peut-être parce que la requête suggestTrial
n'a pas encore abouti. Si nécessaire, répétez la commande précédente.
La réponse fournit des suggestions d'essais au format suivant :
{
"name": "projects/<project>/locations/<region>/operations/<operation-id>",
"metadata": {...},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.ml.v1.SuggestTrialsResponse",
"trials": [
{
"name": "projects/<project>/locations/<region>/studies/<study-id>/trials/TRIAL_ID",
"state": "ACTIVE",
"parameters": [
{
"parameter": "x",
"floatValue": 0.1
}
],
...
}
],
...
}
}
Dans l'exemple ci-dessus, cet essai suggère d'utiliser la valeur 0.1
pour le paramètre x
.
À l'aide de l'ID d'essai de la réponse précédente, vous pouvez obtenir l'essai en exécutant la commande suivante :
TRIAL_ID=TRIAL_ID
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/${TRIAL_ID}"
Évaluer les résultats
Après avoir reçu les suggestions d'essais, vous é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. Commencez par créer un fichier JSON contenant la métrique que vous avez mesurée et le résultat obtenu.
Envoyez ensuite une requête POST
qui transmet ces informations à AI Platform Vizier.
Enregistrez la mesure et créez le fichier JSON à l'aide des commandes suivantes. Dans cet exemple, vous 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
.
METRIC_VALUE=RESULT
cat > /tmp/add_measurement.json <<EOF
{
"measurement": {
"stepCount": 1,
"metrics": [
{
"metric": "y",
"value": ${METRIC_VALUE}
}
]
}
}
EOF
Pour ajouter cette mesure à votre essai, envoyez la requête POST
suivante.
curl -X POST -H "Content-Type: application/json" \
-d @/tmp/add_measurement.json \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/${TRIAL_ID}:addMeasurement"
Effectuer un essai
Après avoir ajouté toutes les mesures à un essai, effectuez cet essai en exécutant la commande suivante. Vous pouvez éventuellement ajouter une mesure finale lorsque vous appelez completeTrial
.
Sans mesure finale
Pour effectuer l'essai sans ajouter de mesure finale, envoyez la requête POST
suivante.
curl -X POST -H "Content-Type: application/json" \
-d "" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/${TRIAL_ID}:complete"
Avec une mesure finale
Pour inclure une mesure finale à la fin de l'essai, enregistrez d'abord votre mesure finale et créez un fichier JSON à l'aide des commandes suivantes, en remplaçant RESULT par la mesure finale.
FINAL_METRIC_VALUE=RESULT
cat > /tmp/complete_trial.json <<EOF
{
"finalMeasurement": {
"stepCount": 1,
"metrics": [
{
"metric": "y",
"value": ${FINAL_METRIC_VALUE}
}
]
}
}
EOF
Envoyez la requête POST
suivante.
curl -X POST -H "Content-Type: application/json" \
-d @/tmp/complete_trial.json \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/${TRIAL_ID}:complete"
Répertorier les essais
Pour répertorier les essais d'une étude spécifique, envoyez la requête suivante.
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/"
Une fois tous les essais en attente terminés, vous pouvez appeler la requête suggestTrial
pour obtenir d'autres suggestions et répéter le processus d'évaluation de l'essai.
Étapes suivantes
Consultez les pages suivantes pour obtenir des exemples d'utilisation de l'API :