本頁說明如何整合 Cloud SQL 與 Vertex AI。這項整合功能可讓您將 Vertex AI 中託管的大型語言模型 (LLM),套用至 MySQL 適用的 Cloud SQL 資料庫 (8.0.36 以上版本)。
整合 Cloud SQL 與 Vertex AI,即可將機器學習 (ML) 模型的語意和預測功能套用至資料。這項整合作業會擴充 SQL 語法,提供兩個查詢模型的函式:
因此,您可以在資料庫中直接進行即時預測並取得寶貴的洞察資訊,簡化工作流程並提升決策能力。
如要進一步瞭解 Vertex AI,請參閱「Vertex AI 簡介」。
事前準備
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 啟用必要的 Google Cloud API。
控制台
gcloud
- 開啟 Cloud Shell,直接在瀏覽器中使用指令列存取資源。 Google Cloud
- 如要啟用必要的 API,請使用
gcloud services enable
指令:gcloud services enable sqladmin.googleapis.com \ enable aiplatform.googleapis.com
這個指令會啟用下列 API:
- Cloud SQL Admin API
- Vertex AI API
- 授予 Cloud SQL 服務帳戶 Identity and Access Management (IAM) 權限,以便存取 Vertex AI。
gcloud
如要將 Vertex AI 權限新增至 Cloud SQL 執行個體所在專案的 Cloud SQL 服務帳戶,請使用gcloud projects add-iam-policy-binding
指令: 進行下列替換:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/aiplatform.user"
- PROJECT_ID:具有 Vertex AI 端點的專案 ID。Cloud SQL 會使用這個端點存取 Vertex AI 中託管的 LLM。
SERVICE_ACCOUNT_EMAIL:Cloud SQL 服務帳戶的電子郵件地址。
如要找出這個電子郵件地址,請使用
gcloud sql instances describe INSTANCE_NAME
指令,並將 INSTANCE_NAME 替換為 Cloud SQL 執行個體的名稱。serviceAccountEmailAddress
參數旁邊顯示的值就是電子郵件地址。
- 建立或更新 Cloud SQL 執行個體,以便與 Vertex AI 整合。
gcloud
建立執行個體
如要建立 Cloud SQL 執行個體,請使用
gcloud sql instances create
指令。gcloud sql instances create INSTANCE_NAME \ --database-version=DATABASE_VERSION \ --tier=MACHINE_TYPE \ --region=REGION_NAME \ --edition=EDITION_NAME \ --enable-google-ml-integration
請將下列項目改為對應的值:
- INSTANCE_NAME:執行個體名稱
- DATABASE_VERSION:例項的資料庫版本
- MACHINE_TYPE:執行個體的機器類型
- REGION_NAME:執行個體的區域名稱
- EDITION_NAME:執行個體的 Cloud SQL 版本
更新執行個體
如要更新執行個體,請使用
gcloud sql instances patch
指令。gcloud sql instances patch INSTANCE_NAME \ --enable-google-ml-integration \
如果這項更新會修改需要重新啟動的值,系統會顯示提示,要求您繼續變更或取消。
REST v1
建立執行個體
請使用這個範例建立執行個體。如需此呼叫的完整參數清單,請參閱「執行個體:插入」頁面。如要瞭解執行個體設定,包括有效區域值,請參閱執行個體設定。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的專案 ID 或專案編號 Google Cloud
- INSTANCE_NAME:執行個體名稱
- REGION_NAME:執行個體的區域名稱
- DATABASE_VERSION:資料庫版本的列舉字串 (例如:
POSTGRES_13
) - PASSWORD:
root
使用者的密碼 - MACHINE_TYPE:機器 (層級) 類型的列舉字串,如下所示:
db-custom-[CPUS]-[MEMORY_MBS]
- EDITION_TYPE:您的 Cloud SQL 版本
此外,您也必須在要求中加入 enableGoogleMlIntegration 物件。視需要設定下列參數:
enableGoogleMlIntegration
:將這個參數設為true
後,Cloud SQL 執行個體就能連線至 Vertex AI,將即時預測和深入分析要求傳遞給 AIcloudsql.enable_google_ml_integration
:將這個參數設為on
時,Cloud SQL 就能與 Vertex AI 整合
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
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" } } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "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" }
更新執行個體
請使用這個範例更新執行個體。如需這項呼叫的完整參數清單,請參閱 instances.patch 頁面。
如果這項更新會修改需要重新啟動的值,系統會提示您繼續變更或取消。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的專案 ID 或專案編號 Google Cloud
- INSTANCE_NAME:執行個體名稱
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "settings": { "enableGoogleMlIntegration": true, "databaseFlags": { "name": "cloudsql.enable_google_ml_integration", "value": "on" } } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "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
建立執行個體
請使用這個範例建立執行個體。如需此呼叫的完整參數清單,請參閱「執行個體:插入」頁面。如要瞭解執行個體設定,包括有效區域值,請參閱執行個體設定。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的專案 ID 或專案編號 Google Cloud
- INSTANCE_NAME:執行個體名稱
- REGION_NAME:執行個體的區域名稱
- DATABASE_VERSION:資料庫版本的列舉字串 (例如:
POSTGRES_13
) - PASSWORD:
root
使用者的密碼 - MACHINE_TYPE:機器 (層級) 類型的列舉字串,如下所示:
db-custom-[CPUS]-[MEMORY_MBS]
- EDITION_TYPE:您的 Cloud SQL 版本
此外,您也必須在要求中加入 enableGoogleMlIntegration 物件。視需要設定下列參數:
enableGoogleMlIntegration
:將這個參數設為true
後,Cloud SQL 執行個體就能連線至 Vertex AI,將即時預測和深入分析要求傳遞給 AIcloudsql.enable_google_ml_integration
:將這個參數設為on
時,Cloud SQL 就能與 Vertex AI 整合
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
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" } } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "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" }
更新執行個體
請使用這個範例更新執行個體。如需這項呼叫的完整參數清單,請參閱 instances.patch 頁面。
如果這項更新會修改需要重新啟動的值,系統會提示您繼續變更或取消。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的專案 ID 或專案編號 Google Cloud
- INSTANCE_NAME:執行個體名稱
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{ "settings": { "enableGoogleMlIntegration": true, "databaseFlags": { "name": "cloudsql.enable_google_ml_integration", "value": "on" } } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "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" }
啟用資料庫與 Vertex AI 的整合功能
如要啟用資料庫與 Vertex AI 的整合功能,請完成下列步驟:
疑難排解
本節提供有關整合 Cloud SQL 與 Vertex AI 時發生的問題,以及排解問題的步驟。
問題 | 疑難排解 |
---|---|
錯誤訊息:Google ML integration API is supported only on MySQL version 8.0.36 or above. |
如要在 Cloud SQL 中啟用 Vertex AI 整合功能,您必須擁有 MySQL 適用的 Cloud SQL 資料庫,且版本為 8.0.36 以上。如要將資料庫升級至這個版本,請參閱「升級資料庫次要版本」。 |
錯誤訊息:Google ML Integration API is not supported on shared core instance. Please upsize your machine type. |
如果您為執行個體的機器類型選取共用核心,就無法在 Cloud SQL 中啟用 Vertex AI 整合功能。將機器類型升級為專用核心。詳情請參閱「機器類型」。 |
錯誤訊息:Google ML Integration is unsupported for this maintenance version. Please follow https://cloud.google.com/sql/docs/mysql/self-service-maintenance to update the maintenance version of the instance. |
如要在 Cloud SQL 中啟用 Vertex AI 整合功能,執行個體的維護版本必須為 R20240130 以上。如要將執行個體升級至這個版本,請參閱自助式維護。 |
錯誤訊息:Cannot invoke ml_predict_row if 'cloudsql.enable_google_ml_integration' is off. |
cloudsql.enable_google_ml_integration 資料庫旗標已關閉。Cloud SQL 無法與 Vertex AI 整合。如要開啟這個旗標,請使用 gcloud sql instances patch 指令:gcloud sql instances patch INSTANCE_NAME --database-flags cloudsql.enable_google_ml_integration=on 將 INSTANCE_NAME 替換為主要 Cloud SQL 執行個體的名稱。 |
錯誤訊息:Failed to connect to remote host: Connection refused. |
Cloud SQL 與 Vertex AI 之間的整合功能未啟用。如要啟用這項整合功能,請使用 gcloud sql instances patch 指令:gcloud sql instances patch INSTANCE_NAME 將 INSTANCE_NAME 替換為主要 Cloud SQL 執行個體的名稱。 |
錯誤訊息: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 未啟用。如要進一步瞭解如何啟用這項 API,請參閱「啟用資料庫與 Vertex AI 的整合功能」。 |
錯誤訊息:Permission 'aiplatform.endpoints.predict' denied on resource. |
系統未將 Vertex AI 權限新增至 Cloud SQL 執行個體所在專案的 Cloud SQL 服務帳戶。如要進一步瞭解如何將這些權限新增至服務帳戶,請參閱「啟用資料庫與 Vertex AI 的整合」。 |
錯誤訊息:Publisher Model `projects/PROJECT_ID/locations/REGION_NAME/publishers/google/models/MODEL_NAME` not found. |
機器學習模型或 LLM 不存在於 Vertex AI。 |
錯誤訊息:Resource exhausted: grpc: received message larger than max. |
Cloud SQL 傳遞至 Vertex AI 的要求大小超過 gRPC 的要求上限 (每個要求 4 MB)。 |
錯誤訊息: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 會嘗試向 Vertex AI 傳送要求。不過,執行個體位於某個地區,但 Vertex AI 端點位於不同地區。如要解決這個問題,執行個體和端點必須位於相同區域。 |
錯誤訊息:The Vertex AI endpoint isn't formatted properly. |
Vertex AI 端點格式不正確。詳情請參閱「使用私人端點進行線上預測」。 |
錯誤訊息:Quota exceeded for aiplatform.googleapis.com/online_prediction_requests_per_base_model with base model: textembedding-gecko. |
Cloud SQL 傳送至 Vertex AI 的要求數超出限制,也就是每個專案的每個模型在每個地區每分鐘最多可傳送 1,500 個要求。 |