Membuat prediksi ML menggunakan SQL

Halaman ini menunjukkan cara membuat prediksi ML dari database Spanner.

Integrasi Spanner Vertex AI memberi Anda kemampuan untuk membuat prediksi menggunakan kode SQL dengan memanggil fungsi ML.PREDICT untuk GoogleSQL atau fungsi spanner.ML_PREDICT_ROW untuk PostgreSQL. Untuk mengetahui informasi selengkapnya tentang integrasi Spanner Vertex AI, lihat Ringkasan integrasi Spanner Vertex AI.

Sebelum memulai

Sebelum dapat membuat prediksi dari instance Spanner, Anda harus menyiapkan database dan memilih model.

Mengonfigurasi akses untuk integrasi Vertex AI Spanner ke endpoint Vertex AI

Spanner membuat agen layanan dan memberikan izin yang diperlukan secara otomatis saat Spanner mengeksekusi pernyataan DDL MODEL pertama. Jika database Spanner dan endpoint Vertex AI berada dalam project yang sama, Anda tidak perlu melakukan penyiapan tambahan.

Jika akun agen layanan Spanner tidak ada untuk project Spanner Anda, buat project tersebut dengan menjalankan perintah berikut:

gcloud beta services identity create --service=spanner.googleapis.com --project={PROJECT}`

Ikuti langkah-langkah yang dijelaskan dalam Memberikan satu peran untuk memberikan peran Spanner API Service Agent ke akun agen layanan Spanner service-PROJECT_ID@gcp-sa-spanner.iam.gserviceaccount.com di project Vertex AI Anda.

Pilih model

Saat menggunakan ML.PREDICT (untuk GoogleSQL) atau ML_PREDICT_ROW untuk fungsi PostgreSQL, Anda harus menentukan lokasi model ML. Model yang Anda pilih dapat berupa salah satu dari yang berikut:

Untuk mempelajari integrasi Vertex AI Spanner lebih lanjut, lihat Bagaimana cara kerja integrasi Spanner Vertex AI?.

Membuat prediksi

Bergantung pada jenis model yang dipilih, langkah-langkah untuk menghasilkan prediksi akan berbeda.

Menggunakan model di Model Garden di Vertex AI

Untuk membuat prediksi menggunakan model dari Model Garden di Vertex AI, pilih model dari Model Garden.

GoogleSQL

Sebelum menggunakan model dengan ML.PREDICT(), Anda perlu mendaftarkan model menggunakan pernyataan CREATE MODEL.

CREATE MODEL 'MODEL_NAME'
INPUT (INPUT_COLUMN_NAME INPUT_COLUMN_TYPE)
OUTPUT (OUTPUT_COLUMN_NAME OUTPUT_COLUMN_TYPE)
REMOTE
OPTIONS (
  endpoint = '//aiplatform.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/publishers/google/models/model_id'
);

Ganti kode berikut:

  • MODEL_NAME: nama yang ingin Anda berikan pada model

  • INPUT_COLUMN_NAME: nama kolom input Anda. Misalnya, jika menggunakan model gemini-pro, nama kolom input adalah prompt.

  • INPUT_COLUMN_TYPE: jenis data untuk INPUT_COLUMN_NAME

  • OUTPUT_COLUMN_NAME: nama kolom output Anda. Misalnya, jika menggunakan model gemini-pro, nama kolom output adalah content.

  • OUTPUT_COLUMN_TYPE: jenis data untuk OUTPUT_COLUMN_NAME

  • PROJECT_ID: ID project Google Cloud Anda

  • REGION_ID: ID region Google Cloud tempat model berada—misalnya, us-central1

  • MODEL_ID: ID model ML yang ingin Anda gunakan—misalnya, gemini-pro

    Untuk mengetahui informasi selengkapnya tentang model, baca Referensi Model API untuk AI Generatif.

Gunakan fungsi GoogleSQL ML.PREDICT dengan model yang dipilih dari Model Garden untuk menghasilkan prediksi Anda.

SELECT * FROM ML.PREDICT(
  MODEL `MODEL_NAME`,
  `INPUT_RELATION`[, `PARAMETERS`])

Ganti kode berikut:

  • MODEL_NAME: nama yang ingin Anda berikan pada model

    Untuk mengetahui informasi selengkapnya tentang model, baca Referensi Model API untuk AI Generatif.

  • INPUT_RELATION: baik TABLE table_name atau subkueri pada tabel atau subkueri yang menyediakan data untuk menjalankan prediksi ML.

  • PARAMETERS: nilai STRUCT yang berisi parameter yang didukung oleh model_id.

Anda juga dapat menggunakan SAFE.ML.PREDICT untuk menampilkan null, bukan error dalam prediksi. Hal ini berguna saat menjalankan kueri besar dengan toleransi beberapa prediksi yang gagal.

PostgreSQL

Gunakan fungsi PostgreSQL ML_PREDICT_ROW dengan model yang dipilih dari Model Garden untuk menghasilkan prediksi Anda.

SELECT spanner.ml_predict_row(
  'projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID'::text,
  '{
    "instances": [ INSTANCES ],
    "parameters": { PARAMETERS }
   }'::jsonb);

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud Anda

  • REGION_ID: ID region Google Cloud tempat model berada—misalnya, us-central1

  • MODEL_ID: ID model ML yang ingin Anda gunakan—misalnya, gemini-pro

    Untuk mengetahui informasi selengkapnya tentang model, baca Referensi Model API untuk AI Generatif.

  • INSTANCES: input untuk panggilan prediksi, dalam format JSON

  • PARAMETERS: parameter opsional untuk panggilan prediksi, dalam format JSON

Kueri ini menghasilkan respons JSON. Untuk mengetahui informasi selengkapnya tentang pesan respons JSON model, lihat PredictResponse.

Menggunakan endpoint model Vertex AI

Untuk menggunakan model terlatih atau didownload dengan integrasi Vertex AI Spanner, Anda perlu men-deploy model ke Vertex AI. Untuk mengetahui informasi selengkapnya tentang cara men-deploy model ke endpoint di Vertex AI, lihat Men-deploy model ke endpoint.

GoogleSQL

Gunakan fungsi GoogleSQL ML.PREDICT dengan model di endpoint Vertex AI untuk menghasilkan prediksi Anda. Sebelum menggunakan model dengan ML.PREDICT(), Anda harus mendaftarkan model tersebut menggunakan pernyataan CREATE MODEL. Setiap model yang di-deploy memiliki skema uniknya sendiri. Berikut adalah contoh skema dari Ringkasan Klasifikasi dan Regresi

CREATE MODEL MyClassificationModel
INPUT (
  length FLOAT64,
  material STRING(MAX),
  tag_array ARRAY<STRING(MAX)>
)
OUTPUT (
  scores ARRAY<FLOAT64>,
  classes ARRAY<STRING(MAX)>
)
REMOTE
OPTIONS (
  endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID'
)

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud Anda

  • LOCATION: ID region Google Cloud tempat model berada—misalnya, us-central1

  • ENDPOINT_ID: ID model ML yang ingin Anda gunakan—misalnya, gemini-pro

    Untuk mengetahui informasi selengkapnya tentang model, baca Referensi Model API untuk AI Generatif.

Gunakan fungsi GoogleSQL ML.PREDICT dengan model yang dipilih dari Model Garden untuk menghasilkan prediksi Anda.

SELECT * FROM ML.PREDICT(
  `MODEL_ID`,
  `INPUT_RELATION`[, `PARAMETERS`])

Ganti kode berikut:

  • MODEL_ID: ID model ML yang ingin Anda gunakan.

  • INPUT_RELATION: tabel atau subkueri tempat Anda ingin menjalankan prediksi ML.

  • PARAMETERS: nilai STRUCT yang berisi parameter yang didukung oleh model_name.

Kueri ini menghasilkan relasi yang berisi semua kolom output dari model dan semua kolom relasi input.

PostgreSQL

Gunakan fungsi PostgreSQL ML.PREDICT dengan model di endpoint Vertex AI untuk menghasilkan prediksi Anda.

  SELECT spanner.ml_predict_row(
    'projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID'::text,
    '{
      "instances": [ INSTANCES ],
      "parameters": { PARAMETERS }
      }'::jsonb);
  ```

Replace the following:
  • PROJECT_ID: ID project Google Cloud tempat model berada

  • REGION_ID: ID region Google Cloud tempat model berada—misalnya, us-central1

  • ENDPOINT_ID: ID endpoint model

  • INSTANCES: input ke panggilan prediksi, dalam format JSON

  • PARAMETERS: parameter opsional ke panggilan prediksi, dalam format JSON

Kueri ini menghasilkan respons JSON. Untuk mengetahui informasi selengkapnya tentang pesan respons JSON model, lihat PredictResponse.

Contoh penggunaan fungsi ML untuk menghasilkan prediksi

Contoh berikut menggunakan model gemini-pro, dari Model Garden, untuk menghasilkan teks berdasarkan perintah singkat yang diberikan sebagai argumen. Model ini tersedia sebagai bagian dari Gemini di Spanner.

GoogleSQL

Mendaftarkan model gemini-pro

CREATE MODEL GeminiPro
INPUT (prompt STRING(MAX))
OUTPUT (content STRING(MAX))
REMOTE
OPTIONS (
  endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/publishers/google/models/gemini-pro',
  default_batch_size = 1
);

Ganti kode berikut:

  • PROJECT: the project ID
  • LOCATION: wilayah tempat Anda menggunakan Vertex AI

Menjalankan model

SELECT content
FROM ML.PREDICT(
  MODEL GeminiPro,
  (SELECT "Is 7 a prime number?" AS prompt),
  STRUCT(256 AS maxOutputTokens, 0.2 AS temperature, 40 as topK, 0.95 AS topP)
);

Output yang diharapkan

Hasil yang diharapkan adalah sebagai berikut:

+--------------------+
| content            |
+--------------------+
| "Yes"              |
+--------------------+

PostgreSQL

Menjalankan model

select spanner.ml_predict_row(
  '{
    "endpoint": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-pro",
    "default_batch_size": 1
   }'::jsonb,
  '{
    "instances":[{"prompt": "Is 7 a prime number?"}],
    "parameters":{"maxOutputTokens":256, "topK": 40, "topP":0.96, "temperature":0.2}
    }'
);

Output yang diharapkan

Hasil yang diharapkan adalah sebagai berikut:

+--------------------+
| content            |
+--------------------+
| "Yes"              |
+--------------------+