Siapkan pemantauan model

Sebelum Anda dapat mulai memantau model, Anda harus mendaftarkan model ke Vertex AI Model Registry lalu mengonfigurasi detail pemantauan dengan membuat monitor model. Halaman ini menjelaskan cara mendaftarkan model dan menjelaskan semua spesifikasi yang dapat Anda tentukan dalam konfigurasi pemantauan.

Model Monitoring v2 hanya mendukung model tabel. Model ini dapat ditayangkan di Vertex AI, atau di infrastruktur layanan lainnya.

Daftarkan model

Anda dapat memantau model yang di-deploy di infrastruktur layanan apa pun, seperti di endpoint Vertex AI, GKE, atau menggunakan BigQuery. Untuk mendaftarkan model yang Anda layani Vertex AI, lihat Mengimpor model.

Untuk model yang Anda layani di luar Vertex AI, Anda dapat mendaftarkan model reference, yang merupakan placeholder untuk model yang ditayangkan di resource lainnya. Saat mendaftarkan model referensi, Anda mendaftarkan model seperti yang ditunjukkan dalam contoh berikut:

Python SDK

model = aiplatform.Model.upload(
 display_name="MODEL_NAME"
)

Untuk model referensi, Pemantauan Model dapat mendukung dari Cloud Storage atau BigQuery. Anda tidak dapat memantau atribusi fitur untuk model referensi.

Sumber data

Anda dapat memantau metrik dalam data yang disimpan di sumber berikut. Bertingkat tertentu tidak didukung. Untuk menganalisis data bertingkat, ratakan terlebih dahulu. Jika data ada di, misalnya, BigQuery, Anda dapat menggunakan SQL untuk mengubah fitur bertingkat.

BigQuery
Anda dapat memberikan URI tabel BigQuery atau kueri SQL. Untuk menentukan jangka waktu atau untuk mengatur pemantauan berkelanjutan, tabel Anda harus menyertakan stempel waktu, yang Anda tentukan dalam set data sebagai timestamp_field.
Cloud Storage
Data harus disimpan dalam format CSV atau JSONL. Untuk file CSV, sertakan header nama kolom sebagai baris pertama dalam file Anda.
Tugas prediksi batch Vertex AI
Berikan nama resource tugas prediksi batch yang sepenuhnya memenuhi syarat untuk memantau tugas prediksi batch. Anda dapat menjalankan tugas pemantauan segera setelah membuat tugas prediksi batch; Anda tidak perlu menunggu sampai tugas batch selesai. Pemantauan Model v2 menjalankan tugas pemantauan Anda segera setelah tugas prediksi batch selesai.
Logging endpoint Vertex AI

Anda harus mengaktifkan logging respons permintaan di endpoint sebelum dapat memulai memantaunya. Endpoint pribadi tidak didukung karena tidak mendukung log permintaan-respons.

Pemantauan Model v2 mengharapkan format JSON permintaan endpoint Vertex AI dan respons untuk mengikuti format yang digunakan oleh metode predict. Tujuan Objek instances disisipkan ke tabel logging di request_payload sebagai array: [INSTANCE_1, INSTANCE_2]. Demikian pula, predictions objek disisipkan ke tabel logging di kolom response_payload sebagai array: [PREDICTION_1, PREDICTION_2].

Metode lain didukung (seperti prediksi mentah), tetapi data Anda harus mengikuti format JSON permintaan dan respons seperti yang didokumentasikan dalam referensi API untuk Metode predict.

Set data yang dikelola Vertex AI

Set data yang dikelola di Vertex AI. Untuk informasi selengkapnya, lihat format set data tabulasi.

Pemantauan berkelanjutan

Pemantauan berkelanjutan (juga dikenal sebagai operasi terjadwal) memungkinkan Anda menjalankan pemantauan pekerjaan sesuai jadwal yang Anda tetapkan. Pemantauan model berkelanjutan dengan waktu spesifikasi hanya mendukung BigQuery dan Logging endpoint Vertex AI sebagai sumber data.

Untuk menggunakan BigQuery sebagai sumber untuk pemantauan berkelanjutan seiring waktu spesifikasi, tabel Anda harus memiliki kolom stempel waktu. Sebagai Tabel BigQuery yang dibuat oleh Vertex AI logging endpoint, tabel tersebut sudah menyertakan kolom stempel waktu logging_time.

Sebagai teknik pengoptimalan BigQuery umum, sebaiknya Anda mempartisi tabel Anda berdasarkan stempel waktu untuk meningkatkan performa kueri dan mengontrol biaya dengan mengurangi jumlah {i>byte<i} yang dibaca oleh suatu kueri.

Jenis data yang didukung

Fitur numerik dan kategoris didukung. Anda dapat menyertakan kolom dengan array, seperti array boolean, kategoris, string, atau bilangan bulat masing-masing. Pemantauan Model v2 meratakan array sehingga setiap elemen dalam array adalah nilai yang berbeda.

Fitur numerik memetakan ke jenis data berikut:

  • Float
  • Bilangan bulat

Fitur kategorikal memetakan ke jenis data berikut:

  • Boolean
  • String
  • Kategoris

Skema model

Pemantauan Model v2 menggunakan skema model untuk mengurai data Anda. Skema ini diperlukan saat Anda membuat monitor model. Untuk AutoML Tables, Anda tidak perlu menentukan skema model; Vertex AI Model Monitoring akan otomatis mengambilnya.

Contoh berikut menunjukkan struktur umum dari skema yang diharapkan:

Python SDK

ml_monitoring.spec.ModelMonitoringSchema(
  feature_fields=[
      ml_monitoring.spec.FieldSchema(
          name="FEATURE_NAME",
          data_type="DATA_TYPE",
          repeated=BOOLEAN
      )
  ],
    prediction_fields = [
      model_monitor.spec.FieldSchema(
          name="PREDICTION_NAME",
          data_type="DATA_TYPE",
          repeated=BOOLEAN
      )
  ],
  ground_truth_fields = [
      model_monitor.spec.FieldSchema(
          feature="GROUND_TRUTH_NAME",
          data_type="DATA_TYPE",
          repeated=BOOLEAN
      )
  ]
)

Jika kolom berisi array nilai, tetapkan repeated ke true.

Untuk AutoML Tables, saat Model Monitoring v2 mengambil skema model, model tersebut menggunakan yang ada dalam set data pelatihan sebagai fitur input, kecuali target kolom. Output prediksi disetel ke predicted_{target_column} . Selain itu, metode ekstraksi Model Monitoring v2 untuk nilai output prediksi bergantung pada jenis model. Untuk model klasifikasi AutoML Tables, Vertex AI Model Monitoring memantau distribusi label argmax. Sebagai Model regresi AutoML Tables, Pemantauan Model Vertex AI memantau distribusi nilai.

Set data dasar dan target

{i>Dataset<i} dasar pengukuran mewakili titik referensi yang Anda gunakan untuk mengukur metrik dari waktu ke waktu. {i>Dataset<i} target berisi data yang lebih baru yang Anda gunakan untuk dibandingkan dengan set data dasar. Pemantauan Model v2 menghitung metrik antara kedua {i>dataset<i} untuk membantu melacak kualitas model Anda. {i>Baseline<i} dan target set data dapat berasal dari sumber data apa pun yang didukung.

Sebagai contoh target dan dasar pengukuran, Anda dapat membandingkan set data penayangan (target) dengan set data pelatihan model (dasar pengukuran), atau Anda dapat membandingkan set data penayangan (target) dengan set data penayangan dari jangka waktu sebelumnya (dasar pengukuran).

Set data target

Saat Anda memilih set data target, Pemantauan Model v2 dapat memproses seluruh set data atau Anda dapat menyetel jendela, yang menentukan jumlah data untuk Pemantauan Model v2 untuk memeriksanya. Misalnya, jika Anda menentukan periode 24 jam, Pemantauan Model v2 hanya akan membandingkan terhadap data 24 jam terakhir berdasarkan set data dasar pengukuran.

Untuk analisis penyimpangan data, penyimpangan bisa menjadi tidak stabil jika data volume tidak memadai akan diproses. Periode waktu yang lebih lama dapat membantu menghindari notifikasi yang terpicu karena jumlah sampel yang rendah.

Set data dasar

Anda dapat menetapkan set data dasar pengukuran ke sumber data apa pun yang didukung, seperti Set data terkelola Vertex AI yang berisi pelatihan model Anda layanan otomatis dan data skalabel. Mirip dengan set data target, Anda dapat memilih agar Pemantauan Model v2 memproses seluruh set data atau jendela tertentu.

Spesifikasi waktu

Anda dapat menetapkan spesifikasi waktu pemantauan melalui dua metode:

  • Rentang waktu, yang mencakup pasangan waktu mulai dan waktu berakhir.
  • Periode waktu dan offset, yang menentukan jumlah data yang akan disertakan dan periode waktu di antara set data perbandingan.

Misalnya, jika Anda ingin membandingkan data terbaru dengan data yang kumpulkan sebelumnya, Anda dapat menetapkan offset. Offset menentukan waktu periode antara set data target dan dasar pengukuran. Sebagai contoh, bayangkan Anda menetapkan set data target dengan jangka waktu satu hari, dan garis dasar Anda ditetapkan dengan selisih satu minggu dan juga periode satu hari.

Dalam hal ini, {i>dataset<i} target menyertakan data dari 24 jam sebelum memantau waktu mulai tugas. {i>Dataset <i}dasar pengukuran mencakup data dari 24 jam tetapi tepat satu minggu sebelumnya.

Membuat monitor model

Buat monitor model untuk mengaitkan detail pemantauan dengan versi model yang telah terdaftar di Vertex AI Model Registry. Resource yang dihasilkan adalah yang disebut monitor model. Anda hanya dapat membuat satu monitor model per model .

Saat membuat monitor model, tentukan nama model, versinya, dan skema. Untuk beberapa model, seperti model AutoML, skemanya yang disediakan untuk Anda.

Anda dapat memilih untuk menetapkan tujuan pemantauan, set data pelatihan, memantau lokasi output, dan setelan notifikasi di monitor model. Kapan Anda menjalankan tugas pemantauan, Pemantauan Model v2 menggunakan setelan ini sebagai {i>default<i}.

Konsol

  1. Di konsol Google Cloud, buka halaman Monitoring.

    Buka Monitoring

  2. Klik Konfigurasi pemantauan.

  3. Memilih model dan versinya untuk dipantau.

  4. Jika berlaku, tentukan skema yang menampilkan prediksi Anda output dan, jika tersedia, kebenaran dasar.

  5. Opsional: Untuk memantau penyimpangan dari set data pelatihan Anda, tentukan lokasi set data Anda.

  6. Opsional: Untuk menentukan bucket Cloud Storage yang ada bagi mengekspor hasil pemantauan, perluas Opsi lanjutan, lalu pilih direktori VM dengan bucket.

  7. Untuk mengonfigurasi tujuan pemantauan, klik Lanjutkan atau klik Siapkan untuk membuat monitor model.

    Konfigurasi ini digunakan sebagai default saat menjalankan tugas.

  8. Pilih tujuan yang akan dipantau. Untuk setiap tujuan, Anda dapat menetapkan metrik yang dipantau dan batas untuk pemberitahuan.

  9. Tentukan alamat email dan, jika perlu, saluran notifikasi di Cloud Monitoring untuk memantau pemberitahuan dan notifikasi.

Python SDK

from vertexai.resources.preview import ml_monitoring
from google.cloud.aiplatform_v1beta1.types import ExplanationSpec, ExplanationParameters, ExplanationMetadata

# Define Monitoring Schema. For AutoML models, this is optional if the schema information is available.
MONITORING_SCHEMA=ml_monitoring.spec.ModelMonitoringSchema(
  feature_fields=[
      ml_monitoring.spec.FieldSchema(
          name="sepal_length_cm",
          data_type="float"
      ),
      ml_monitoring.spec.FieldSchema(
          name="sepal_width_cm",
          data_type="float"
      ),
      ml_monitoring.spec.FieldSchema(
          name="petal_length_cm",
          data_type="float"
      ),
      ml_monitoring.spec.FieldSchema(
          name="petal_width_cm",
          data_type="float"
      )
  ],
  prediction_fields = [
      ml_monitoring.spec.FieldSchema(
          name="predicted_species",
          data_type="categorical"
      )
  ]
)

TRAINING_DATASET = ml_monitoring.spec.MonitoringInput(
  gcs_uri=GCS_INPUT_URI,
  data_format=DATA_FORMAT,
)

DEFAULT_FEATURE_DRIFT_SPEC=ml_monitoring.spec.DataDriftSpec(
  categorical_metric_type="l_infinity",
  numeric_metric_type="jensen_shannon_divergence",
  default_categorical_alert_threshold=0.1,
  default_numeric_alert_threshold=0.1,
)

DEFAULT_PREDICTION_OUTPUT_DRIFT_SPEC=ml_monitoring.spec.DataDriftSpec(
  categorical_metric_type="l_infinity",
  numeric_metric_type="jensen_shannon_divergence",
  default_categorical_alert_threshold=0.1,
  default_numeric_alert_threshold=0.1,
)

DEFAULT_FEATURE_ATTRIBUTION_SPEC=ml_monitoring.spec.FeatureAttributionSpec(
  default_alert_condition=0.0003,
  feature_alert_conditions={"sepal_length_cm":0.0001},
)

EXPLANATION_SPEC=ExplanationSpec(
  parameters=ExplanationParameters(
      {"sampled_shapley_attribution": {"path_count": 2}}
  ),
  metadata=ExplanationMetadata(
      inputs={
          "sepal_length_cm": ExplanationMetadata.InputMetadata({
              "input_tensor_name": "sepal_length_cm",
              "encoding": "IDENTITY",
              "modality": "numeric",
          }),
          ...
      },
      ...
  )
)

DEFAULT_OUTPUT_SPEC = ml_monitoring.spec.output.OutputSpec(
  gcs_base_dir=GCS_OUTPUT_BASE_DIR
)

DEFAULT_NOTIFICATION_SPEC = ml_monitoring.spec.NotificationSpec(
  user_emails=['email@example.com']
)

my_model_monitor = ml_monitoring.ModelMonitor.create(
  display_name=MONITORING_JOB_DISPLAY_NAME,
  model_name=MODEL_RESOURCE_NAME,
  model_version_id=MODEL_VERSION_ID,
  model_monitoring_schema=MONITORING_SCHEMA,
  # The following fields are optional for creating the model monitor.
  training_dataset=TRAINING_DATASET,
  tabular_objective_spec=ml_monitoring.spec.TabularObjective(
      feature_drift_spec=DEFAULT_FEATURE_DRIFT_SPEC,
      prediction_output_drift_spec=DEFAULT_PREDICTION_OUTPUT_DRIFT_SPEC,
      feature_attribution_spec=DEFAULT_FEATURE_ATTRIBUTION_SPEC,
  ),
  explanation_config=DEFAULT_FEATURE_ATTRIBUTION_SPEC,
  output_spec=DEFAULT_OUTPUT_SPEC,
  notification_spec=DEFAULT_NOTIFICATION_SPEC
)