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 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 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 menjalankan 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 dalam 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.
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 model berikut:
Model yang berjalan di Vertex AI Model Garden.
Model Vertex AI dengan endpoint aktif yang memiliki izin IAM untuk diakses oleh agen layanan Spanner Anda.
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 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 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. Misalnya, jika menggunakan modelgemini-pro
, nama kolom output adalahcontent
.OUTPUT_COLUMN_TYPE
: jenis data untukOUTPUT_COLUMN_NAME
PROJECT_ID
: ID Google Cloud project 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 mengetahui 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 Anda.
SELECT * FROM ML.PREDICT(
MODEL `MODEL_NAME`,
`INPUT_RELATION`[, `PARAMETERS`])
Ganti kode berikut:
MODEL_NAME
: nama yang ingin Anda berikan pada modelUntuk mengetahui 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 yang dapat mentoleransi 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 Google Cloud project 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 mengetahui 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 mengetahui informasi selengkapnya tentang pesan respons JSON model, lihat PredictResponse.
Menggunakan endpoint model Vertex AI
Untuk menggunakan model terlatih atau yang 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 ML.PREDICT
GoogleSQL dengan model di endpoint Vertex AI untuk membuat prediksi Anda. Sebelum menggunakan model dengan ML.PREDICT()
, Anda harus mendaftarkan model 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 Google Cloud project AndaLOCATION
: 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, lihat Referensi API Model 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 jalankan prediksi ML-nya.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 ML.PREDICT
PostgreSQL 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 Google Cloud project tempat model beradaREGION_ID
: ID Google Cloud region 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 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
Daftarkan 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" |
+--------------------+