Mengintegrasikan Cloud SQL dengan Vertex AI

Halaman ini menjelaskan cara mengintegrasikan Cloud SQL dengan Vertex AI. Integrasi ini memungkinkan Anda menerapkan model bahasa besar (LLM), yang dihosting di Vertex AI, ke database Cloud SQL untuk PostgreSQL, versi 12 dan yang lebih baru.

Dengan mengintegrasikan Cloud SQL bersama Vertex AI, Anda dapat menerapkan daya semantik dan prediktif model machine learning (ML) ke data Anda. Integrasi ini memperluas sintaksis PostgreSQL dengan dua fungsi untuk membuat kueri model:

  • Memanggil prediksi untuk memanggil model menggunakan SQL dalam transaksi.
  • Membuat embeddings agar model embedding menerjemahkan perintah teks menjadi vektor numerik. Anda kemudian dapat menerapkan embedding vektor ini sebagai input ke fungsi pgvector. Hal ini mencakup metode untuk membandingkan dan mengurutkan contoh teks sesuai dengan jarak semantik relatifnya.

Hasilnya, Anda dapat membuat prediksi secara real-time dan mendapatkan insight berharga langsung dari database, sehingga menyederhanakan alur kerja dan meningkatkan kemampuan pengambilan keputusan.

Untuk mengetahui informasi selengkapnya tentang Vertex AI, lihat Pengantar Vertex AI.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Mengaktifkan Google Cloud API yang diperlukan.

    Konsol

    1. Buka halaman API & Layanan.
    2. Dari daftar project, pilih project Anda.
    3. Jika Library API tidak terbuka, pilih Library dari menu navigasi.
    4. Klik API yang ingin Anda aktifkan. Untuk prosedur ini, aktifkan Cloud SQL Admin API dan Vertex AI API.

    5. Setelah memilih setiap API, klik Enable.

    gcloud

    1. Buka Cloud Shell, yang menyediakan akses command line ke resource Google Cloud langsung dari browser.
    2. Untuk mengaktifkan API yang diperlukan, gunakan perintah gcloud services enable:
      gcloud services enable sqladmin.googleapis.com \
      enable aiplatform.googleapis.com
    3. Perintah ini mengaktifkan API berikut:
      • Cloud SQL Admin API
      • Vertex AI API

  7. Memberi akun layanan Identity and Access Management (IAM) akun layanan Cloud SQL untuk mengakses Vertex AI.

    gcloud

    Untuk menambahkan izin Vertex AI ke akun layanan Cloud SQL untuk project tempat instance Cloud SQL berada, gunakan perintah gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/aiplatform.user"

    Lakukan penggantian berikut:
    • PROJECT_ID: ID project yang memiliki endpoint Vertex AI. Cloud SQL menggunakan endpoint ini untuk mengakses LLM yang dihosting di Vertex AI.
    • SERVICE_ACCOUNT_EMAIL: alamat email akun layanan Cloud SQL.

      Untuk menemukan alamat email ini, gunakan perintah gcloud sql instances describe INSTANCE_NAME dan ganti INSTANCE_NAME dengan nama instance Cloud SQL. Nilai yang muncul di samping parameter serviceAccountEmailAddress adalah alamat email.

Mengaktifkan integrasi database dengan Vertex AI

Untuk mengaktifkan integrasi database dengan Vertex AI, selesaikan langkah-langkah berikut:

  1. Buat atau update instance Cloud SQL sehingga instance dapat berintegrasi dengan Vertex AI.

    gcloud

    Buat instance

    Untuk membuat instance Cloud SQL, gunakan perintah gcloud sql instances create.

    gcloud sql instances create INSTANCE_NAME \
    --database-version=DATABASE_VERSION \
    --tier=MACHINE_TYPE \
    --region=REGION_NAME \
    --enable-google-ml-integration \
    --database-flags cloudsql.enable_google_ml_integration=on

    Lakukan penggantian berikut:

    • INSTANCE_NAME: nama instance
    • DATABASE_VERSION: versi database untuk instance (misalnya, POSTGRES_13)
    • MACHINE_TYPE: jenis mesin untuk instance
    • REGION_NAME: nama region untuk instance

    Mengupdate instance

    Untuk mengupdate instance, gunakan perintah gcloud sql instances patch.

    gcloud sql instances patch INSTANCE_NAME \
    --enable-google-ml-integration \
    --database-flags cloudsql.enable_google_ml_integration=on

    Jika update ini mengubah nilai yang perlu dimulai ulang, Anda akan melihat perintah untuk melanjutkan perubahan atau membatalkan.

    REST v1

    Buat instance

    Gunakan contoh ini untuk membuat instance. Untuk mengetahui daftar lengkap parameter untuk panggilan ini, lihat instances:insert kami. Untuk mengetahui informasi tentang setelan instance, termasuk nilai yang valid untuk suatu region, lihat Setelan instance.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
    • INSTANCE_NAME: nama instance
    • REGION_NAME: nama region untuk instance
    • DATABASE_VERSION: string enum versi database (misalnya: POSTGRES_13)
    • PASSWORD: sandi untuk pengguna root
    • MACHINE_TYPE: string enum jenis mesin (tier), sebagai: db-custom-[CPUS]-[MEMORY_MBS]
    • EDITION_TYPE: edisi Cloud SQL Anda

    Anda juga harus menyertakan objek enableGoogleMlIntegration dalam permintaan. Tetapkan parameter berikut, jika diperlukan:

    • enableGoogleMlIntegration: jika parameter ini ditetapkan ke true, instance Cloud SQL dapat terhubung ke Vertex AI untuk meneruskan permintaan prediksi real-time dan insight ke AI
    • cloudsql.enable_google_ml_integration: jika parameter ini ditetapkan ke on, Cloud SQL dapat berintegrasi dengan Vertex AI

    Metode HTTP dan URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

    Meminta isi JSON:

    {
      "name": "INSTANCE_NAME",
      "region": "REGION_NAME",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "edition": "EDITION_TYPE",
        "enableGoogleMlIntegration": "true" | "false"
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on" | "off"
          }
      }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2019-09-25T22:19:33.735Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    Mengupdate instance

    Gunakan contoh ini untuk mengupdate instance. Untuk mengetahui daftar lengkap parameter untuk panggilan ini, lihat instances.patch kami.

    Jika update ini mengubah nilai yang perlu dimulai ulang, Anda akan melihat perintah untuk melanjutkan perubahan atau membatalkan.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
    • INSTANCE_NAME: nama instance

    Metode HTTP dan URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Meminta isi JSON:

    {
      "settings": {
        "enableGoogleMlIntegration": true,
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on"
          }
       }
    }

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-16T02:32:12.281Z",
      "operationType": "UPDATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_NAME",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    REST v1beta4

    Buat instance

    Gunakan contoh ini untuk membuat instance. Untuk mengetahui daftar lengkap parameter untuk panggilan ini, lihat instances:insert kami. Untuk mengetahui informasi tentang setelan instance, termasuk nilai yang valid untuk suatu region, lihat Setelan instance.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
    • INSTANCE_NAME: nama instance
    • REGION_NAME: nama region untuk instance
    • DATABASE_VERSION: string enum versi database (misalnya: POSTGRES_13)
    • PASSWORD: sandi untuk pengguna root
    • MACHINE_TYPE: string enum jenis mesin (tier), sebagai: db-custom-[CPUS]-[MEMORY_MBS]
    • EDITION_TYPE: edisi Cloud SQL Anda

    Anda juga harus menyertakan objek enableGoogleMlIntegration dalam permintaan. Tetapkan parameter berikut, jika diperlukan:

    • enableGoogleMlIntegration: jika parameter ini ditetapkan ke true, instance Cloud SQL dapat terhubung ke Vertex AI untuk meneruskan permintaan prediksi real-time dan insight ke AI
    • cloudsql.enable_google_ml_integration: jika parameter ini ditetapkan ke on, Cloud SQL dapat berintegrasi dengan Vertex AI

    Metode HTTP dan URL:

    POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances

    Meminta isi JSON:

    {
      "name": "INSTANCE_NAME",
      "region": "REGION_NAME",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "edition": "EDITION_TYPE",
        "enableGoogleMlIntegration": "true" | "false"
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on" | "off"
          }
      }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2019-09-25T22:19:33.735Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    Mengupdate instance

    Gunakan contoh ini untuk mengupdate instance. Untuk mengetahui daftar lengkap parameter untuk panggilan ini, lihat instances.patch kami.

    Jika update ini mengubah nilai yang perlu dimulai ulang, Anda akan melihat perintah untuk melanjutkan perubahan atau membatalkan.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
    • INSTANCE_NAME: nama instance

    Metode HTTP dan URL:

    PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    Meminta isi JSON:

    {
      "settings": {
        "enableGoogleMlIntegration": true,
        "databaseFlags":
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on"
          }
       }
    }

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-16T02:32:12.281Z",
      "operationType": "UPDATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_NAME",
      "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    
  2. Instal ekstensi google_ml_integration di database instance Cloud SQL utama. Database ini berisi data tempat Anda ingin menjalankan prediksi.
    1. Hubungkan klien psql ke instance utama, sebagai dijelaskan dalam Menghubungkan menggunakan klien psql.
    2. Di command prompt psql, hubungkan ke database:
      \c DB_NAME

      Ganti DB_NAME dengan nama database tempat Anda ingin menginstal ekstensi.

    3. Instal ekstensi:
      CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

Memecahkan masalah

Bagian ini berisi informasi tentang masalah yang terkait dengan integrasi Cloud SQL dengan Vertex AI beserta langkah-langkah untuk memecahkan masalah tersebut.

Masalah Pemecahan masalah
Pesan error: Google ML integration API is supported only on Postgres version 12 or above. Untuk mengaktifkan integrasi Vertex AI di Cloud SQL, Anda harus memiliki database Cloud SQL untuk PostgreSQL, versi 12 atau yang lebih baru. Untuk mengupgrade database ke versi ini, lihat Mengupgrade versi utama database di tempat.
Pesan error: Google ML Integration API is not supported on shared core instance. Please upsize your machine type. Jika memilih inti bersama untuk jenis mesin instance, Anda tidak dapat mengaktifkan integrasi Vertex AI di Cloud SQL. Upgrade jenis mesin Anda ke core khusus. Untuk mengetahui informasi selengkapnya, lihat Jenis Mesin.
Pesan error: Google ML Integration is unsupported for this maintenance version. Please follow https://cloud.google.com/sql/docs/postgres/self-service-maintenance to update the maintenance version of the instance. Untuk mengaktifkan integrasi Vertex AI di Cloud SQL, versi pemeliharaan instance Anda harus R20240130 atau yang lebih baru. Untuk mengupgrade instance ke versi ini, lihat Pemeliharaan mandiri.
Pesan error: Cannot invoke ml_predict_row if 'cloudsql.enable_google_ml_integration' is off. Tanda database cloudsql.enable_google_ml_integration dinonaktifkan. Cloud SQL tidak dapat berintegrasi dengan Vertex AI.

Untuk mengaktifkan tanda ini, gunakan perintah gcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME --database-flags cloudsql.enable_google_ml_integration=on

Ganti INSTANCE_NAME dengan nama instance Cloud SQL utama.
Pesan error: Failed to connect to remote host: Connection refused. Integrasi antara Cloud SQL dan Vertex AI tidak diaktifkan. Untuk mengaktifkan integrasi ini, gunakan perintah gcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME
--enable-google-ml-integration


Ganti INSTANCE_NAME dengan nama instance Cloud SQL utama.
Pesan error: Vertex AI API has not been used in project PROJECT_ID before or it is disabled. Enable it by visiting /apis/api/aiplatform.googleapis.com/overview?project=PROJECT_ID then retry. Vertex AI API tidak diaktifkan. Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan API ini, lihat Mengaktifkan integrasi database dengan Vertex AI.
Pesan error: Permission 'aiplatform.endpoints.predict' denied on resource. Izin Vertex AI tidak ditambahkan ke akun layanan Cloud SQL untuk project tempat instance Cloud SQL berada. Untuk mengetahui informasi selengkapnya tentang cara menambahkan izin ini ke akun layanan, lihat Mengaktifkan integrasi database dengan Vertex AI.
Pesan error: Publisher Model `projects/PROJECT_ID/locations/REGION_NAME/publishers/google/models/MODEL_NAME` not found. Model machine learning atau LLM tidak ada di Vertex AI.
Pesan error: Resource exhausted: grpc: received message larger than max. Ukuran permintaan yang diteruskan Cloud SQL ke Vertex AI melebihi batas gRPC sebesar 4 MB per permintaan.
Pesan error: Cloud SQL attempts to send a request to Vertex AI. However, the instance is in the %s region, but the Vertex AI endpoint is in the %s region. Make sure the instance and endpoint are in the same region. Cloud SQL mencoba mengirim permintaan ke Vertex AI. Namun, instance berada di satu region, tetapi endpoint Vertex AI berada di region yang berbeda. Untuk mengatasi masalah ini, instance dan endpoint harus berada di region yang sama.
Pesan error: The Vertex AI endpoint isn't formatted properly. Endpoint Vertex AI tidak diformat dengan benar. Untuk mengetahui informasi selengkapnya, baca Menggunakan endpoint pribadi untuk prediksi online.
Pesan error: Quota exceeded for aiplatform.googleapis.com/online_prediction_requests_per_base_model with base model: textembedding-gecko. Jumlah permintaan yang diteruskan Cloud SQL ke Vertex AI melebihi batas 1.500 permintaan per menit per region per model per project.

Langkah selanjutnya