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. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

  7. 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 berikutnya

  • Lihat referensi REST untuk studi.