Membuat permintaan API ke AI Platform Vizier

Halaman ini menjelaskan cara membuat permintaan API ke AI Platform Vizier menggunakan curl.

Sebelum memulai

  1. Baca ringkasan AI Platform Vizier untuk mempelajari cara kerja AI Platform Vizier.
  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

Login ke akun Penagihan Cloud

Gunakan perintah berikut untuk login ke akun Google Cloud Anda:

gcloud auth application-default login
gcloud auth login

Menentukan konstanta

Jalankan perintah berikut, dengan mengganti USERNAME dan PROJECT_ID dengan nama pengguna dan informasi project ID Anda. Buat nama studi dan client ID Anda sendiri atau gunakan nilai yang disarankan.

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

Membuat permintaan API

Berikut ini penjelasan cara membuat permintaan API command line ke AI Platform Vizier, menggunakan curl.

Membuat studi

Studi adalah serangkaian eksperimen, atau uji coba, yang membantu Anda mengoptimalkan hyperparameter atau parameter Anda.

Untuk membuat studi, Anda membuat konfigurasi studi dalam format JSON, lalu mengirim permintaan POST yang meneruskan konfigurasi Anda ke AI Platform Vizier.

Konfigurasi studi mungkin terlihat seperti berikut. Pelajari lebih lanjut opsi algoritma, jenis sasaran, dan opsi lainnya dalam dokumentasi AI Platform Training dan Prediction API.

Dalam contoh berikut, sasarannya adalah memaksimalkan y = x^2 dengan x dalam rentang [-10. 10]. Contoh ini hanya memiliki satu parameter dan menggunakan fungsi yang mudah dihitung untuk membantu menunjukkan cara menggunakan AI Platform Vizier.

Anda dapat mempelajari lebih lanjut cara AI Platform Vizier dapat digunakan untuk masalah pengoptimalan yang kompleks, dan cara mengoptimalkan beberapa fungsi sekaligus.

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

Untuk membuat studi menggunakan konfigurasi studi Anda, kirim permintaan POST berikut.

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

Mendapatkan studi

Untuk mendapatkan studi, kirim permintaan berikut.

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

Mencantumkan studi

Untuk mencantumkan studi dalam project dan region tertentu, kirim permintaan berikut.

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

Mendapatkan saran uji coba

Untuk mendapatkan saran uji coba dari AI Platform Vizier, Anda harus membuat file JSON yang berisi suggestionCount dan client ID Anda. Kemudian, Anda mengirim permintaan POST yang meneruskan informasi ini ke AI Platform Vizier.

Buat file JSON menggunakan perintah berikut. Ubah suggestionCount ke jumlah saran yang Anda inginkan dari setiap permintaan.

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

Untuk mendapatkan saran, kirim permintaan POST berikut.

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 memulai operasi yang berjalan lama yang berfungsi untuk menghasilkan uji coba. Responsnya memungkinkan Anda mengetahui bahwa AI Platform Vizier sedang memproses saran uji coba. Respons ini akan dalam format berikut:

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

Anda dapat menggunakan ID operasi dalam respons sebelumnya untuk melakukan polling operasi saran dan mendapatkan saran uji coba. Gunakan perintah berikut:

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

Jika Anda tidak mendapatkan respons, permintaan suggestTrial mungkin belum selesai. Ulangi perintah sebelumnya jika perlu.

Respons memberikan saran uji coba, dalam format ini:

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

Pada contoh di atas, uji coba ini menyarankan penggunaan nilai 0.1 untuk parameter x.

Dengan menggunakan ID uji coba dari respons sebelumnya, Anda bisa mendapatkan uji coba menggunakan perintah berikut:

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

Mengevaluasi hasil

Setelah menerima saran uji coba, Anda mengevaluasi setiap uji coba dan mencatat setiap hasil sebagai pengukuran.

Misalnya, jika fungsi yang ingin Anda optimalkan adalah y = x^2, Anda perlu mengevaluasi fungsi menggunakan nilai x yang disarankan dalam uji coba. Dengan menggunakan nilai 0.1 yang disarankan, fungsi tersebut dievaluasi menjadi y = 0.1 * 0.1, yang menghasilkan 0.01.

Menambahkan pengukuran

Setelah mengevaluasi saran uji coba Anda untuk mendapatkan pengukuran, tambahkan pengukuran ini ke uji coba Anda. Pertama, Anda membuat file JSON yang berisi metrik yang diukur dan hasilnya. Kemudian, Anda mengirim permintaan POST yang meneruskan informasi ini ke AI Platform Vizier.

Simpan pengukuran Anda dan buat file JSON menggunakan perintah berikut. Dalam contoh ini, Anda mengganti RESULT dengan pengukuran. Jika fungsi yang Anda optimalkan adalah y = x^2, dan nilai x yang disarankan adalah 0.1, hasilnya adalah 0.01.

METRIC_VALUE=RESULT

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

Untuk menambahkan pengukuran ini ke uji coba Anda, kirim permintaan POST berikut.

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"

Menyelesaikan uji coba

Setelah menambahkan semua pengukuran untuk uji coba, selesaikan uji coba menggunakan perintah berikut. Secara opsional, Anda dapat menambahkan pengukuran akhir saat memanggil completeTrial.

Tanpa pengukuran akhir

Untuk menyelesaikan uji coba tanpa menambahkan pengukuran akhir, kirim permintaan POST berikut.

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"

Dengan pengukuran akhir

Untuk menyertakan pengukuran akhir saat Anda menyelesaikan uji coba, simpan pengukuran akhir terlebih dahulu dan buat file JSON menggunakan perintah berikut, yang menggantikan RESULT dengan pengukuran akhir.

FINAL_METRIC_VALUE=RESULT

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

Kirim permintaan POST berikut.

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"

Mencantumkan uji coba

Untuk mencantumkan uji coba dalam studi tertentu, kirim permintaan berikut.

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

Setelah menyelesaikan semua uji coba yang tertunda, Anda dapat memanggil suggestTrial untuk mendapatkan saran lainnya dan mengulangi proses evaluasi uji coba.

Langkah selanjutnya

Untuk contoh cara menggunakan API, lihat hal berikut: