Halaman ini menunjukkan cara membuat prediksi machine learning (ML) dari database Spanner. Prediksi ML berfungsi dengan database GoogleSQL dan PostgreSQL.
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 informasi selengkapnya tentang
integrasi Vertex AI Spanner, lihat Ringkasan integrasi Vertex AI Spanner.
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, 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 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 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 dari berikut:
Model yang berjalan di Vertex AI Model Garden.
Model Vertex AI dengan endpoint aktif yang dapat diakses oleh agen layanan Spanner Anda dengan izin IAM.
Untuk mempelajari integrasi Vertex AI Spanner lebih lanjut, lihat Bagaimana cara kerja integrasi Vertex AI Spanner?.
Membuat prediksi
Bergantung pada jenis model yang Anda pilih, langkah-langkah untuk membuat prediksi akan berbeda.
Menggunakan model di Model Garden Vertex AI
Untuk membuat prediksi menggunakan model dari Model Garden Vertex AI, 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 pada modelINPUT_COLUMN_NAME
: nama kolom input Anda. Misalnya, jika menggunakan modelgemini-pro
, nama kolom input adalahprompt
.INPUT_COLUMN_TYPE
: jenis data untukINPUT_COLUMN_NAME
OUTPUT_COLUMN_NAME
: nama kolom output Anda. Misalnya, jika menggunakan modelgemini-pro
, nama kolom output adalahcontent
.OUTPUT_COLUMN_TYPE
: jenis data untukOUTPUT_COLUMN_NAME
PROJECT_ID
: ID project Google Cloud AndaREGION_ID
: ID region Google Cloud tempat model berada, misalnya,us-central1
MODEL_ID
: ID model ML yang ingin Anda gunakan—misalnya,gemini-pro
Untuk informasi selengkapnya tentang model, lihat Referensi API model untuk AI Generatif.
Gunakan fungsi GoogleSQL ML.PREDICT
dengan model yang dipilih
dari Model Garden untuk membuat prediksi.
SELECT * FROM ML.PREDICT(
MODEL `MODEL_NAME`,
`INPUT_RELATION`[, `PARAMETERS`])
Ganti kode berikut:
MODEL_NAME
: nama yang ingin Anda berikan pada modelUntuk informasi selengkapnya tentang model, lihat Referensi API model untuk AI Generatif.
INPUT_RELATION
:TABLE table_name
atau subkueri tabel atau subkueri yang menyediakan data untuk menjalankan prediksi ML.PARAMETERS
: nilaiSTRUCT
yang berisi parameter yang didukung olehmodel_id
.
Anda juga dapat menggunakan SAFE.ML.PREDICT
untuk menampilkan null
, bukan error dalam
prediksi Anda. Hal ini berguna jika menjalankan kueri besar
dengan beberapa prediksi yang gagal dapat ditoleransi.
PostgreSQL
Gunakan fungsi PostgreSQL ML_PREDICT_ROW
dengan model yang dipilih
dari Model Garden untuk membuat prediksi.
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 AndaREGION_ID
: ID region Google Cloud tempat model berada, misalnya,us-central1
MODEL_ID
: ID model ML yang ingin Anda gunakan—misalnya,gemini-pro
Untuk informasi selengkapnya tentang model, lihat Referensi API model untuk AI Generatif.
INSTANCES
: input untuk panggilan prediksi, dalam format JSONPARAMETERS
: parameter opsional untuk panggilan prediksi, dalam format JSON
Kueri ini menghasilkan respons JSON. Untuk informasi selengkapnya tentang pesan respons JSON model, lihat PredictResponse.
Menggunakan endpoint model Vertex AI
Untuk menggunakan model yang dilatih atau didownload dengan integrasi Spanner Vertex AI, 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. Sebelum menggunakan
model dengan ML.PREDICT()
, Anda harus mendaftarkan model menggunakan
pernyataan CREATE MODEL
. Setiap model yang di-deploy memiliki skema unik
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 AndaLOCATION
: ID region Google Cloud tempat model berada, misalnya,us-central1
ENDPOINT_ID
: ID model ML yang ingin Anda gunakan—misalnya,gemini-pro
Untuk informasi selengkapnya tentang model, lihat Referensi API model untuk AI Generatif.
Gunakan fungsi GoogleSQL ML.PREDICT
dengan model yang dipilih
dari Model Garden untuk membuat prediksi.
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
: nilaiSTRUCT
yang berisi parameter yang didukung olehmodel_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.
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 beradaREGION_ID
: ID region Google Cloud tempat model berada, misalnya,us-central1
ENDPOINT_ID
: ID endpoint modelINSTANCES
: input ke panggilan prediksi, dalam format JSONPARAMETERS
: parameter opsional untuk panggilan prediksi, dalam format JSON
Kueri ini menghasilkan respons JSON. Untuk 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
: the project IDLOCATION
: 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" |
+--------------------+