Menyiapkan pemantauan model

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

Pemantauan Model v2 hanya mendukung model tabel. Model ini dapat ditayangkan di Vertex AI atau di infrastruktur penayangan lainnya.

Mendaftarkan model

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

Untuk model yang Anda tayangkan di luar Vertex AI, Anda dapat mendaftarkan model referensi, yang merupakan placeholder untuk model yang ditayangkan di resource lain. Saat mendaftarkan model referensi, Anda mendaftarkan nama model, seperti yang ditunjukkan pada contoh berikut:

Python SDK

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

Untuk model referensi, Pemantauan Model dapat mendukung set data 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. Fitur bertingkat tidak didukung. Untuk menganalisis data bertingkat, ratakan terlebih dahulu. Jika data Anda berada di, misalnya, BigQuery, Anda dapat menggunakan SQL untuk mengubah fitur bertingkat.

BigQuery
Anda dapat memberikan URI tabel BigQuery atau kueri SQL. Untuk menentukan jendela waktu atau menyiapkan pemantauan berkelanjutan, tabel Anda harus menyertakan kolom 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 tugas batch selesai. Model Monitoring v2 akan segera menjalankan tugas pemantauan Anda setelah tugas prediksi batch selesai.
Logging endpoint Vertex AI

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

Pemantauan Model v2 mengharapkan format JSON permintaan dan respons endpoint Vertex AI untuk mengikuti format yang digunakan oleh metode predict. Objek instances disisipkan ke tabel logging di kolom request_payload sebagai array: [INSTANCE_1, INSTANCE_2]. Demikian pula, objek predictions 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 terkelola Vertex AI

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

Pemantauan berkelanjutan

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

Untuk menggunakan BigQuery sebagai sumber pemantauan berkelanjutan dengan spesifikasi waktu, tabel Anda harus memiliki kolom stempel waktu. Untuk tabel BigQuery yang dihasilkan oleh logging endpoint Vertex AI, tabel tersebut sudah menyertakan kolom stempel waktu logging_time.

Sebagai teknik pengoptimalan BigQuery umum, sebaiknya Anda membuat partisi tabel berdasarkan stempel waktu untuk meningkatkan performa kueri dan mengontrol biaya dengan mengurangi jumlah byte yang dibaca oleh kueri.

Jenis data yang didukung

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

Fitur numerik dipetakan ke jenis data berikut:

  • Float
  • Bilangan bulat

Fitur kategoris dipetakan 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; Pemantauan Model Vertex AI akan otomatis mengambilnya.

Contoh berikut menunjukkan struktur umum 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 menyertakan array nilai, tetapkan repeated ke true.

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

Set data dasar pengukuran dan target

Set data dasar pengukuran mewakili titik referensi yang Anda gunakan untuk mengukur metrik dari waktu ke waktu. Set data target menyertakan data terbaru yang Anda gunakan untuk dibandingkan dengan set data dasar pengukuran. Model Monitoring v2 menghitung metrik antara dua set data untuk membantu Anda melacak kualitas model. Set data dasar pengukuran dan target 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, Model Monitoring v2 dapat memproses seluruh set data atau Anda dapat menetapkan periode, yang menentukan jumlah data yang akan diperiksa oleh Model Monitoring v2. Misalnya, jika Anda menentukan periode 24 jam, Model Monitoring v2 hanya membandingkan data 24 jam terakhir dengan set data dasar pengukuran.

Untuk analisis deviasi data, deviasi dapat berubah-ubah jika data volume yang diproses tidak memadai. Periode waktu yang lebih besar dapat membantu menghindari pemberitahuan yang dipicu akibat jumlah sampel yang rendah.

Set data dasar pengukuran

Anda dapat menetapkan set data dasar pengukuran ke sumber data apa pun yang didukung, seperti set data yang dikelola Vertex AI yang berisi data pelatihan model Anda. Serupa dengan set data target, Anda dapat memilih untuk meminta Model Monitoring v2 memproses seluruh set data atau periode tertentu.

Spesifikasi waktu

Anda dapat menetapkan spesifikasi waktu pemantauan melalui dua metode:

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

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

Dalam hal ini, set data target menyertakan data dari 24 jam sebelum waktu mulai tugas pemantauan. Set data dasar pengukuran mencakup data dari periode 24 jam yang sama, tetapi tepat satu minggu sebelumnya.

Membuat pemantau model

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

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

Anda dapat memilih untuk menetapkan tujuan pemantauan, set data pelatihan, lokasi output pemantauan, dan setelan notifikasi di monitor model. Saat Anda menjalankan tugas pemantauan, Pemantauan Model v2 akan menggunakan setelan ini sebagai setelan default.

Konsol

  1. Di konsol Google Cloud, buka halaman Monitoring.

    Buka Monitoring

  2. Klik Configure monitoring.

  3. Pilih model dan versinya yang akan dipantau.

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

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

  6. Opsional: Untuk menentukan bucket Cloud Storage yang ada guna mengekspor hasil pemantauan, luaskan Advanced options, lalu pilih 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 akan dipantau dan nilai minimum untuk pemberitahuan.

  9. Tentukan alamat email dan, secara opsional, saluran notifikasi di Cloud Monitoring untuk memantau pemberitahuan dan pemberitahuan.

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_threshold=0.0003,
  feature_alert_thresholds={"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
)