Invia richieste API ad AI Platform Vizier

Questa pagina descrive come effettuare richieste API ad AI Platform Vizier utilizzando curl.

Prima di iniziare

  1. Leggi la panoramica di AI Platform Vizier per scoprire come funziona.
  2. 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.
  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Make sure that billing is enabled for your Google Cloud project.

  5. Enable the AI Platform Training and Prediction API.

    Enable the API

  6. Install the Google Cloud CLI.
  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Make sure that billing is enabled for your Google Cloud project.

  10. Enable the AI Platform Training and Prediction API.

    Enable the API

  11. Install the Google Cloud CLI.
  12. To initialize the gcloud CLI, run the following command:

    gcloud init

Accedere all'account di fatturazione Cloud

Utilizza i seguenti comandi per accedere al tuo account Google Cloud:

gcloud auth application-default login
gcloud auth login

Definizione delle costanti

Esegui i comandi seguenti, sostituendo USERNAME e PROJECT_ID con il tuo nome utente e le informazioni sull'ID progetto. Crea il nome e l'ID client del tuo studio o utilizza i valori suggeriti.

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

Creazione di richieste API

Di seguito viene descritto come creare richieste API a riga di comando per AI Platform Vizier utilizzando curl.

Creazione di uno studio

Uno studio è una serie di esperimenti o prove che ti aiutano a ottimizzare i tuoi iperparametri o parametri.

Per creare uno studio, devi creare una configurazione di studio in formato JSON, quindi inviare una richiesta POST che trasmetta la configurazione ad AI Platform Vizier.

La configurazione di studio potrebbe avere il seguente aspetto. Scopri di più sulle opzioni dell'algoritmo, sui tipi di obiettivi e su altre opzioni nella documentazione dell'API Prediction AI Platform Training and Prediction.

Nell'esempio seguente, l'obiettivo è massimizzare y = x^2 con x nell'intervallo [-10. 10]. Questo esempio ha un solo parametro e utilizza una funzione facilmente calcolabile per dimostrare come utilizzare AI Platform Vizier.

Scopri di più su come AI Platform Vizier può essere utilizzato per problemi di ottimizzazione complessi e su come ottimizzare più funzioni contemporaneamente.

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

Per creare lo studio utilizzando la configurazione dello studio, invia la seguente richiesta POST.

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}"

Partecipare a uno studio

Per partecipare a uno studio, invia la seguente richiesta.

curl -H "Content-Type: application/json"   \
  -H "Authorization: Bearer `gcloud auth print-access-token`"   \
  "${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}"

Studi sulle schede

Per elencare gli studi in un progetto e una regione specifici, invia la seguente richiesta.

curl -H "Content-Type: application/json"  \
  -H "Authorization: Bearer `gcloud auth print-access-token`"   \
  "${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/"

Ricevere prove suggerite

Per ricevere un suggerimento per la prova da AI Platform Vizier, crea un file JSON contenente un suggestionCount e il tuo ID client. Poi invii una richiesta POST che trasmette queste informazioni a AI Platform Vizier.

Crea il file JSON utilizzando i seguenti comandi. Modifica suggestionCount in base al numero di suggerimenti che vuoi ricevere da ogni richiesta.

cat > /tmp/suggest_trial.json <<EOF
{
  "suggestionCount": 1,
  "clientId": "${CLIENT_ID}"
}
EOF

Per ricevere il suggerimento o i suggerimenti, invia la seguente richiesta POST.

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"

suggestTrial avvia un'operazione a lunga esecuzione che genera la prova. La risposta ti informa che AI Platform Vizier è al lavoro sui suggerimenti per le prove. Questa risposta avrà il seguente formato:

{
  "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>
  }
}

Puoi utilizzare l'ID operazione nella risposta precedente per eseguire il polling dell'operazione di suggerimento e ricevere i suggerimenti di prova. Utilizza il seguente comando:

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}"

Se non ricevi una risposta, la suggestTrial richiesta potrebbe non essere stata completata. Ripeti il comando precedente, se necessario.

La risposta fornisce suggerimenti per la prova, nel seguente formato:

{
  "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
          }
        ],
        ...
      }
    ],
    ...
  }
}

Nell'esempio precedente, questo esperimento suggerisce di utilizzare il valore 0.1 per il parametro x.

Utilizzando l'ID prova della risposta precedente, puoi ottenere la prova utilizzando il seguente comando:

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}"

Valutazione dei risultati

Dopo aver ricevuto i suggerimenti per le prove, valuta ogni prova e registra ogni risultato come misurazione.

Ad esempio, se la funzione che stai cercando di ottimizzare è y = x^2, la valuti utilizzando il valore suggerito dalla prova di x. Utilizzando un valore suggerito di 0.1, la funzione restituisce y = 0.1 * 0.1, che corrisponde a 0.01.

Aggiunta di una misurazione

Dopo aver valutato il suggerimento di prova per ottenere una misurazione, aggiungi questa misurazione alla prova. Innanzitutto, crea un file JSON contenente la metrica misurata e il risultato. Poi invii una richiesta POST che trasmette queste informazioni a AI Platform Vizier.

Memorizza la misurazione e crea il file JSON utilizzando i seguenti comandi. In questo esempio, sostituisci RESULT con la misurazione. Se la funzione che stai ottimizzando è y = x^2 e il valore suggerito di x è 0.1, il risultato è 0.01.

METRIC_VALUE=RESULT

cat > /tmp/add_measurement.json <<EOF
{
  "measurement": {
    "stepCount": 1,
    "metrics": [
      {
        "metric": "y",
        "value": ${METRIC_VALUE}
      }
    ]
  }
}
EOF

Per aggiungere questa misurazione alla prova, invia la seguente richiesta POST.

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"

Completare una prova

Dopo aver aggiunto tutte le misurazioni per una prova, completala utilizzando il seguente comando. Se vuoi, puoi aggiungere una misurazione finale quando chiami completeTrial.

Senza misurazione finale

Per completare la prova senza aggiungere una misurazione finale, invia la seguente richiesta POST.

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"

Con la misurazione finale

Per includere una misurazione finale al termine della prova, memorizzala e crea un file JSON utilizzando i seguenti comandi, sostituendo RESULT con la misurazione finale.

FINAL_METRIC_VALUE=RESULT

cat > /tmp/complete_trial.json <<EOF
{
  "finalMeasurement": {
    "stepCount": 1,
    "metrics": [
      {
        "metric": "y",
        "value": ${FINAL_METRIC_VALUE}
      }
    ]
  }
}
EOF

Invia la seguente richiesta POST.

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"

Prove delle schede

Per elencare i trial in uno studio specifico, invia la seguente richiesta.

curl -H "Content-Type: application/json"   \
  -H "Authorization: Bearer `gcloud auth print-access-token`"   \
  "${ENDPOINT}/projects/${PROJECT_ID}/locations/${REGION}/studies/${STUDY_NAME}/trials/"

Una volta completate tutte le prove in attesa, puoi chiamare suggestTrial per ricevere altri suggerimenti e ripetere la procedura di valutazione della prova.

Passaggi successivi

Per esempi su come utilizzare l'API, consulta quanto segue: