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. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

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

  5. Aktifkan AI Platform Training and Prediction API.

    Mengaktifkan API

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

    gcloud init
  8. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

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

  10. Aktifkan AI Platform Training and Prediction API.

    Mengaktifkan API

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

    gcloud init

Login ke akun Penagihan Cloud Anda

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, buat konfigurasi studi dalam format JSON, lalu kirim 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 and 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 menggunakan AI Platform Vizier 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}"

Studi listingan

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 uji coba yang disarankan

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

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

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

Untuk mendapatkan saran atau 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 memberi tahu Anda bahwa AI Platform Vizier sedang memproses saran uji coba. Respons ini akan menggunakan 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 memeriksa 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.

Responsnya 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 untuk mendapatkan pengukuran, tambahkan pengukuran ini ke uji coba Anda. Pertama, buat file JSON yang berisi metrik yang Anda ukur dan hasilnya. Lalu, 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 Anda menambahkan semua pengukuran untuk uji coba, selesaikan uji coba menggunakan perintah berikut. Jika ingin, 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 Anda terlebih dahulu dan buat file JSON menggunakan perintah berikut, dengan mengganti 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"

Uji coba listingan

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 lebih lanjut dan mengulangi proses evaluasi uji coba.

Langkah selanjutnya

Untuk contoh cara menggunakan API, lihat referensi berikut: