Membuat studi Vertex AI Vizier

Halaman ini menjelaskan cara membuat permintaan API ke Vertex AI Vizier menggunakan Python. Untuk mengetahui informasi tentang cara kerja Vertex AI Vizier, lihat ringkasan Vertex AI Vizier.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Enable the Vertex AI API.

    Enable the API

  4. Buat akun layanan:

    1. Di konsol Google Cloud, buka halaman Buat akun layanan.

      Buka Create service account
    2. Pilih project Anda.
    3. Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.

      Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh, Service account for quickstart.

    4. Klik Buat dan lanjutkan.
    5. Berikan peran Project > Owner ke akun layanan.

      Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih Project > Owner.

    6. Klik Lanjutkan.
    7. Klik Selesai untuk menyelesaikan pembuatan akun layanan.

      Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.

  5. Membuat kunci akun layanan:

    1. Di konsol Google Cloud, klik alamat email untuk akun layanan yang telah dibuat.
    2. Klik Kunci.
    3. Klik Tambahkan kunci, lalu klik Buat kunci baru.
    4. Klik Create. File kunci JSON akan didownload ke komputer Anda.
    5. Klik Close.
  6. Tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur file JSON yang berisi kredensial Anda. Variabel ini hanya berlaku untuk sesi shell Anda saat ini. Jadi, jika Anda membuka sesi baru, tetapkan variabel kembali.

  7. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  8. Enable the Vertex AI API.

    Enable the API

  9. Buat akun layanan:

    1. Di konsol Google Cloud, buka halaman Buat akun layanan.

      Buka Create service account
    2. Pilih project Anda.
    3. Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.

      Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh, Service account for quickstart.

    4. Klik Buat dan lanjutkan.
    5. Berikan peran Project > Owner ke akun layanan.

      Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih Project > Owner.

    6. Klik Lanjutkan.
    7. Klik Selesai untuk menyelesaikan pembuatan akun layanan.

      Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.

  10. Membuat kunci akun layanan:

    1. Di konsol Google Cloud, klik alamat email untuk akun layanan yang telah dibuat.
    2. Klik Kunci.
    3. Klik Tambahkan kunci, lalu klik Buat kunci baru.
    4. Klik Create. File kunci JSON akan didownload ke komputer Anda.
    5. Klik Close.
  11. Tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur file JSON yang berisi kredensial Anda. Variabel ini hanya berlaku untuk sesi shell Anda saat ini. Jadi, jika Anda membuka sesi baru, tetapkan variabel kembali.

  12. Instal Vertex AI SDK untuk Python.

Menentukan konstanta

Untuk menentukan konstanta, jalankan perintah berikut, dengan mengganti REGION dan PROJECT_ID dengan region dan project ID Anda. Buat nama studi Anda sendiri atau gunakan nilai yang disarankan.

import json
import datetime
from google.cloud import aiplatform

REGION = "REGION"
PROJECT_ID = "PROJECT_ID"

# The following placeholder variables are automatically filled in.
STUDY_DISPLAY_NAME = '{}_study_{}'.format(PROJECT_ID.replace('-', ''), datetime.datetime.now().strftime('%Y%m%d_%H%M%S')) #@param {type: 'string'}
ENDPOINT = REGION + '-aiplatform.googleapis.com'
PARENT = 'projects/{}/locations/{}'.format(PROJECT_ID, REGION)

Membuat permintaan API

Permintaan API command line berikut ditulis dalam Python.

Membuat studi

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

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 Vertex AI Vizier.

param_x = {
    'parameter_id': 'x',
    'double_value_spec': {
        'min_value': -10.0,
        'max_value': 10.0
    }
}

metric_y = {
    'metric_id': 'y',
    'goal': 'MAXIMIZE'
}

study = {
    'display_name': STUDY_DISPLAY_NAME,
    'study_spec': {
      'algorithm': 'RANDOM_SEARCH',
      'parameters': [param_x],
      'metrics': [metric_y],
    }
}

Untuk membuat studi menggunakan konfigurasi studi Anda, kirim permintaan berikut melalui VizierServiceClient. Gunakan STUDY_NAME yang ditampilkan untuk mengkueri studi.

vizier_client = aiplatform.gapic.VizierServiceClient(client_options=dict(api_endpoint=ENDPOINT))
study = vizier_client.create_study(parent=PARENT, study=study)
STUDY_NAME = study.name

Melihat studi

Setelah studi dibuat, Anda dapat menemukan studi tersebut di Konsol Google Cloud, di bagian Vertex AI, di halaman Experiments.

Buka halaman Experiments

Mendapatkan studi

Untuk mendapatkan studi, kirim permintaan berikut.

vizier_client.get_study({'name': STUDY_NAME})

Mencantumkan studi

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

vizier_client.list_studies({'parent': PARENT})

Mendapatkan saran uji coba

Untuk mendapatkan saran uji coba dari Vertex AI Vizier, buat permintaan yang berisi SUGGEST_COUNT dan CLIENT_ID. Teruskan informasi ini ke Vertex AI Vizier dengan mengirim permintaan.

Buat permintaan menggunakan perintah berikut. Ubah SUGGEST_COUNT ke jumlah saran yang Anda inginkan dari setiap permintaan.

suggest_response = vizier_client.suggest_trials({
    'parent': STUDY_NAME,
    'suggestion_count': SUGGEST_COUNT,
    'client_id': CLIENT_ID
    })

suggest_trials memulai operasi yang berjalan lama untuk menghasilkan uji coba. Responsnya memungkinkan Anda mengetahui bahwa Vertex AI Vizier sedang memproses saran uji coba.

Untuk menunggu hasil yang ditampilkan, gunakan fungsi result().

suggest_response.result().trials

Format berikut menunjukkan contoh uji coba. Uji coba ini menyarankan penggunaan nilai 0.1 untuk parameter x.

name: "TRIAL_ID"
state: ACTIVE
parameters {
  parameter_id: "x"
  value {
    number_value: 0.1
  }
}
start_time {
  seconds: 1618011215
}

Gunakan TRIAL_ID dari respons sebelumnya untuk mendapatkan uji coba:

vizier_client.get_trial({
        'name': TRIAL_ID
      })

Mengevaluasi hasil

Setelah menerima saran uji coba, evaluasi setiap uji coba dan catat 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.

Gunakan perintah berikut untuk menyimpan pengukuran Anda dan mengirim permintaan. Dalam contoh ini, ganti RESULT dengan pengukuran. Jika fungsi yang Anda optimalkan adalah y = x^2, dan nilai x yang disarankan adalah 0.1, hasilnya adalah 0.01.

vizier_client.add_trial_measurement({
        'trial_name': TRIAL_ID,
        'measurement': {
            'metrics': [{'metric_id': 'y', 'value':RESULT }]
        }
    })

Menyelesaikan uji coba

Setelah menambahkan semua pengukuran untuk uji coba, Anda harus menyelesaikan uji coba dengan mengirimkan perintah.

Saat menyelesaikan uji coba, Anda dapat mengirim perintah untuk hanya menyelesaikan uji coba atau mengirim perintah untuk menambahkan pengukuran akhir dan menyelesaikan uji coba.

Tanpa pengukuran akhir

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

vizier_client.complete_trial({
      'name': TRIAL_ID
  })

Dengan pengukuran akhir

Untuk menyelesaikan uji coba dan menyertakan pengukuran akhir, gunakan perintah berikut, yang menggantikan RESULT dengan pengukuran akhir.

vizier_client.complete_trial({
      'name': TRIAL_ID
      'final_measurement': {
        'metrics': [{'metric_id': 'y', 'value': RESULT}]
      }
  })

Mencantumkan uji coba

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

vizier_client.list_trials({
    'parent': STUDY_NAME
})

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

Mencantumkan uji coba optimal

Contoh berikut menunjukkan list_optimal_trials, yang menampilkan uji coba optimal pareto untuk studi dengan multi-tujuan atau uji coba optimal untuk studi dengan satu tujuan:

vizier_client.list_optimal_trials({
    'parent': STUDY_NAME
})

Langkah selanjutnya

  • Lihat referensi REST untuk studi.