AI Platform Vizier verwenden

Auf dieser Seite wird beschrieben, wie Sie mit curl API-Anfragen an AI Platform Vizier stellen.

Hinweis

  1. Lesen Sie die Übersicht zu AI Platform Vizier, um mehr über die Funktionsweise von AI Platform Vizier zu erfahren.
  2. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  3. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  4. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  5. Aktivieren Sie die AI Platform Training and Prediction API.

    Aktivieren Sie die API

  6. Installieren und initialisieren Sie das Cloud SDK.

Im Cloud-Rechnungskonto anmelden

Melden Sie sich mit den folgenden Befehlen in Ihrem Google Cloud-Konto an:

gcloud auth application-default login
gcloud auth login

Konstanten definieren

Führen Sie die folgenden Befehle aus und ersetzen Sie dabei USERNAME und PROJECT_ID durch Ihren Nutzernamen und die Projekt-ID. Den Studiennamen und die Client-ID können Sie selbst vergeben oder die vorgeschlagenen Werte verwenden.

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

API-Anfragen erstellen

Im Folgenden wird beschrieben, wie API-Anfragen über die Befehlszeile mit curl in AI Platform Viziererstellt werden.

Studie erstellen

Eine Studie ist eine Reihe von experimentellen oder anderen Tests, mit denen Sie Ihre Hyperparameter oder Parameter optimieren können.

Erstellen Sie zum Erstellen einer Studie eine Studienkonfiguration im JSON-Format und senden Sie anschließend eine POST-Anfrage, die Ihre Konfiguration an AI Platform Vizier weiterleitet.

Die Konfiguration der Studie könnte so aussehen: Weitere Informationen zu Algorithmusoptionen, Zieltypen und anderen Optionen finden Sie in der Dokumentation zur AI Platform Training and Prediction API.

Im folgenden Beispiel soll y = x^2 mit x im Bereich von [-10. 10] maximiert werden. Dieses Beispiel hat nur einen Parameter und nutzt eine einfach berechnete Funktion, um die Verwendung von AI Platform Vizier zu demonstrieren. Sie können auch hier nachlesen, wie Sie AI Platform Vizier für komplexere Optimierungsprobleme nutzen oder zwei Funktionen gleichzeitig optimieren.

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

Zur Erstellung der Studie mithilfe der Studienkonfiguration senden Sie die folgende POST-Anfrage.

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

Studie abrufen

Senden Sie die folgende Anfrage, um eine Studie zu erhalten.

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

Studien auflisten

Senden Sie die folgende Anfrage, wenn Sie die Studien in einem bestimmten Projekt und einer bestimmten Region auflisten möchten.

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

Vorschläge für Tests abrufen

Wenn Sie einen Testvorschlag von AI Platform Vizier erhalten möchten, erstellen Sie eine JSON-Datei, die eine suggestionCount und Ihre Client-ID enthält. Anschließend senden Sie eine POST-Anfrage, die diese Informationen an AI Platform Vizier weiterleitet.

Erstellen Sie die JSON-Datei mit den folgenden Befehlen. Ändern Sie suggestionCount in die Anzahl der Vorschläge, die Sie von jeder Anfrage erhalten möchten.

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

Senden Sie die folgende POST-Anfrage, um den oder die Vorschläge zu erhalten.

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 startet einen Vorgang mit langer Ausführungszeit, mit dem der Test generiert wird. Die Antwort weist darauf hin, dass AI Platform Vizier an Testvorschlägen arbeitet. Die Antwort hat folgendes Format:

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

Mit der Vorgangs-ID aus der vorherigen Antwort können Sie den Vorgang zu den Vorschlägen abfragen und erhalten so die Testvorschläge. Verwenden Sie den folgenden Befehl:

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

Wenn Sie keine Antwort erhalten, ist die Anfrage suggestTrial eventuell noch nicht abgeschlossen. Wiederholen Sie gegebenenfalls den vorherigen Befehl.

Die Antwort enthält Vorschläge für Tests in folgendem Format:

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

Im obigen Beispiel schlägt dieser Test vor, den Wert 0.1 für den Parameter x zu verwenden.

Mit der Test-ID aus der vorherigen Antwort können Sie den Test mit dem folgenden Befehl abrufen:

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

Ergebnisse beurteilen

Nachdem Sie die Testvorschläge erhalten haben, bewerten Sie jeden Test und erfassen jedes Ergebnis als Messung.

Wenn die Funktion, die Sie optimieren möchten, beispielsweise y = x^2 ist, bewerten Sie die Funktion mit dem im Test vorgeschlagenen Wert von x. Bei Verwenden des vorgeschlagenen Werts 0.1 wird die Funktion mit y = 0.1 * 0.1 bewertet, und das Ergebnis ist 0.01.

Messung hinzufügen

Nachdem Sie den Testvorschlag bewertet haben, um eine Messung zu erhalten, fügen Sie die Messung Ihrem Test hinzu. Zuerst erstellen Sie eine JSON-Datei, die den gemessenen Messwert und das Ergebnis enthält. Anschließend senden Sie eine POST-Anfrage, die diese Informationen an AI Platform Vizier weiterleitet.

Speichern Sie Ihre Messung und erstellen Sie die JSON-Datei mit den folgenden Befehlen. In diesem Beispiel ersetzen Sie RESULT durch die Messung. Wenn die zu optimierende Funktion y = x^2 lautet und der vorgeschlagene Wert von x gleich 0.1 ist, ist das Ergebnis 0.01.

METRIC_VALUE=RESULT

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

Senden Sie die folgende POST-Anfrage, um dem Test die Messung hinzuzufügen.

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"

Test abschließen

Nachdem Sie alle Messungen für einen Test hinzugefügt haben, schließen Sie den Test mit dem folgenden Befehl ab. Optional können Sie eine abschließende Messung hinzufügen. Rufen Sie dazu completeTrial auf.

Ohne abschließende Messung

Senden Sie die folgende POST-Anfrage, um den Test abzuschließen, ohne eine endgültige Messung hinzuzufügen.

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"

Mit abschließender Messung

Wenn Sie eine endgültige Messung nach Abschluss des Tests wünschen, speichern Sie zuerst die endgültige Messung und erstellen eine JSON-Datei mit den nachfolgenden Befehlen. Ersetzen Sie dabei RESULT durch die endgültige Messung.

FINAL_METRIC_VALUE=RESULT

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

Senden Sie die folgende POST-Anfrage:

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"

Tests auflisten

Senden Sie die folgende Anfrage, um Tests in einer bestimmten Studie aufzulisten.

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

Sobald Sie alle ausstehenden Tests abgeschlossen haben, können Sie suggestTrial aufrufen, um weitere Vorschläge zu erhalten und den Testvorgang zu wiederholen.

Weitere Informationen

Beispiele für die Verwendung der API finden Sie hier: