Membuat prediksi ML menggunakan SQL

Halaman ini menunjukkan cara membuat prediksi machine learning (ML) dari database Spanner. Prediksi ML berfungsi dengan database dialek GoogleSQL dan database dialek PostgreSQL.

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

Sebelum memulai

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

Mengonfigurasi akses untuk integrasi Spanner Agent Platform ke endpoint Vertex AI

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

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

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

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

Memilih model

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

Untuk mempelajari integrasi Spanner Agent Platform lebih lanjut, lihat Cara kerja integrasi Spanner Agent Platform.

Membuat prediksi

Bergantung pada jenis model yang Anda pilih, langkah-langkah untuk membuat prediksi akan berbeda.

Menggunakan model di Vertex AI Model Garden

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

GoogleSQL

Sebelum menggunakan model dengan ML.PREDICT(), Anda harus 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 untuk model Anda

  • INPUT_COLUMN_NAME: nama kolom input Anda. Misalnya, jika menggunakan model gemini-pro, nama kolom inputnya 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 outputnya adalah content.

  • OUTPUT_COLUMN_TYPE: jenis data untuk OUTPUT_COLUMN_NAME

  • PROJECT_ID: ID project Anda Google Cloud

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

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

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

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

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

Ganti kode berikut:

  • MODEL_NAME: nama yang ingin Anda berikan untuk model Anda

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

  • INPUT_RELATION: TABLE table_name atau subkueri 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 Anda. Hal ini berguna jika menjalankan kueri besar yang dapat mentolerir beberapa prediksi yang gagal.

PostgreSQL

Gunakan fungsi PostgreSQL ML_PREDICT_ROW dengan model yang dipilih dari Model Garden untuk membuat 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 Anda Google Cloud

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

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

    Untuk mengetahui informasi selengkapnya tentang model, lihat 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 model yang didownload dengan integrasi Spanner Agent Platform, Anda harus 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 membuat prediksi Anda. Sebelum menggunakan a model dengan ML.PREDICT(), Anda harus mendaftarkan model menggunakan pernyataan CREATE MODEL. Setiap model yang di-deploy memiliki skemanya sendiri yang unik. 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 Anda Google Cloud

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

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

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

Gunakan fungsi GoogleSQL ML.PREDICT dengan model yang dipilih dari Model Garden untuk membuat 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 yang ingin Anda gunakan untuk menjalankan prediksi ML.

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

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

PostgreSQL

Gunakan fungsi PostgreSQL ML.PREDICT dengan model di endpoint Vertex AI untuk membuat 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 tempat model berada Google Cloud

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

  • ENDPOINT_ID: ID endpoint model

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

Contoh penggunaan fungsi ML untuk membuat prediksi

Contoh berikut menggunakan model gemini-pro, dari Model Garden, untuk membuat 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: project ID
  • LOCATION: region 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

Output 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

Output yang diharapkan adalah sebagai berikut:

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