שילוב של Cloud SQL עם Vertex AI

בדף הזה מוסבר איך לשלב את Cloud SQL עם Vertex AI.

השילוב הזה מאפשר להחיל מודלים גדולים של שפה (LLM) שמתארחים ב-Vertex AI על מסד נתונים של Cloud SQL ל-PostgreSQL, מגרסה 12 ואילך.

כשמשלבים את Cloud SQL עם Vertex AI, אפשר להחיל על הנתונים את היכולות הסמנטיות ויכולות החיזוי של מודלים של למידת מכונה (ML). השילוב הזה מרחיב את תחביר ה-SQL באמצעות שתי פונקציות לשאילתות על מודלים:

  • להפעיל חיזויים כדי לקרוא למודל באמצעות SQL בתוך טרנזקציה.

  • יצירת הטמעות כדי שמודל הטמעה יתרגם פרומפטים טקסטואליים לווקטורים מספריים. לאחר מכן אפשר להחיל את הטמעות הווקטורים האלה כקלט לפונקציות של vector. זה כולל שיטות להשוואה ולמיון של דוגמאות טקסט לפי המרחק הסמנטי היחסי שלהן.

כתוצאה מכך, אתם יכולים ליצור תחזיות בזמן אמת ולקבל תובנות חשובות ישירות במסד הנתונים, לייעל את תהליכי העבודה ולשפר את יכולות קבלת ההחלטות.

מידע נוסף על Vertex AI זמין במאמר מבוא ל-Vertex AI.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. מפעילים את ממשקי ה-API הנדרשים של Google Cloud .

    המסוף

    1. נכנסים לדף APIs & Services.
    2. בוחרים את הפרויקט מרשימת הפרויקטים.
    3. אם ספריית ה-API לא פתוחה, בתפריט הניווט לוחצים על ספרייה.
    4. לוחצים על ממשקי ה-API שרוצים להפעיל. כדי לבצע את הפעולה, צריך להפעיל את האפשרויות הבאות:

      • Cloud SQL Admin API
      • Vertex AI API
      • Compute Engine API
    5. אחרי שבוחרים כל API, לוחצים על Enable.

    gcloud

    1. פותחים את Cloud Shell, שמאפשר גישה למשאבים של Google Cloud בשורת הפקודה ישירות מהדפדפן.
    2. כדי להפעיל את ממשקי ה-API הנדרשים, משתמשים בפקודה gcloud services enable:
      gcloud services enable sqladmin.googleapis.com \
        aiplatform.googleapis.com \
        compute.googleapis.com
      
    3. הפקודה הזו מפעילה את ממשקי ה-API הבאים:
      • Cloud SQL Admin API
      • Vertex AI API
      • Compute Engine API

  7. נותנים לחשבון השירות של Cloud SQL הרשאות לניהול זהויות והרשאות גישה (IAM) כדי לגשת ל-Vertex AI.
  8. gcloud

    כדי להוסיף את ההרשאות של Vertex AI לחשבון השירות של Cloud SQL בפרויקט שבו נמצאת המכונה של Cloud SQL, צריך ליצור תפקיד IAM בהתאמה אישית עם ההרשאות המינימליות הנדרשות, ואז להקצות את התפקיד הזה לחשבון השירות.

    1. כדי ליצור תפקיד בהתאמה אישית עם ההרשאה aiplatform.endpoints.predict, משתמשים בפקודה gcloud iam roles create:
      gcloud iam roles create ROLE_NAME \
        --project=PROJECT_ID \
        --title="Cloud SQL Vertex AI Predictor" \
        --description="Allows Cloud SQL to invoke Vertex AI predictions" \
        --permissions="aiplatform.endpoints.predict"
      
    2. כדי להקצות את התפקיד בהתאמה אישית לחשבון השירות של Cloud SQL, משתמשים בפקודה gcloud projects add-iam-policy-binding:
      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="projects/PROJECT_ID/roles/ROLE_NAME"
      
    מחליפים את הפרטים הבאים:
    • ‫ROLE_NAME: השם של תפקיד ה-IAM בהתאמה אישית שרוצים ליצור, למשל CloudSQLMLPredictor.
    • ‫PROJECT_ID: מזהה הפרויקט עם נקודת הקצה של Vertex AI. ‫Cloud SQL משתמש בנקודת הקצה הזו כדי לגשת ל-LLM שמתארח ב-Vertex AI.
    • ‫SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות ב-Cloud SQL.

      כדי למצוא את כתובת האימייל הזו, משתמשים בפקודה gcloud sql instances describe:

      gcloud sql instances describe INSTANCE_NAME | grep EmailAddress
      

      מחליפים את INSTANCE_NAME בשם של מכונת Cloud SQL.

הפעלת שילוב של מסד נתונים עם Vertex AI

כדי להפעיל את השילוב של מסד הנתונים עם Vertex AI:

  1. יוצרים או מעדכנים מכונה של 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 \
    --enable-google-ml-integration \
    --database-flags cloudsql.enable_google_ml_integration=on

    מחליפים את הפרטים הבאים:

    • ‫INSTANCE_NAME: השם של המכונה
    • ‫DATABASE_VERSION: גרסת מסד הנתונים של המכונה (לדוגמה, POSTGRES_13)
    • ‫MACHINE_TYPE: סוג המכונה
    • ‫REGION_NAME: שם האזור של המכונה

    עדכון המכונה

    כדי לעדכן את המכונה, משתמשים בפקודה gcloud sql instances patch.

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

    אם העדכון הזה משנה ערך שדורש הפעלה מחדש, תופיע בקשה להמשיך בשינוי או לבטל אותו.

    REST v1

    יצירת המכונה

    אפשר להשתמש בדוגמה הזו כדי ליצור את המכונה. רשימה מלאה של הפרמטרים לקריאה הזו מופיעה בדף instances:insert. למידע על הגדרות של מכונות, כולל ערכים תקינים לאזור, ראו הגדרות של מכונות.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: המזהה או מספר הפרויקט ב- Google Cloud שמכיל את המכונה.
    • ‫INSTANCE_NAME: שם המכונה.
    • ‫REGION_NAME: שם האזור של המכונה.
    • ‫DATABASE_VERSION: מחרוזת enum של גרסת מסד הנתונים, למשל POSTGRES_13.
    • ‫PASSWORD: הסיסמה של המשתמש root.
    • ‫MACHINE_TYPE: מחרוזת של טיפוסים בני מנייה (enum) של סוג המכונה (רמה), למשל db-custom-[CPUS]-[MEMORY_MBS]. מידע נוסף זמין במאמר רמות של מכונות.
    • ‫EDITION_TYPE: מהדורת Cloud SQL, למשל ENTERPRISE.

    צריך גם לכלול את האובייקט enableGoogleMlIntegration בבקשה. מגדירים את הפרמטרים הבאים, לפי הצורך:

    • ‫enableGoogleMlIntegration: כשהפרמטר הזה מוגדר לערך true, מכונות של Cloud SQL יכולות להתחבר ל-Vertex AI כדי להעביר ל-AI בקשות לחיזויים בזמן אמת ולתובנות.
    • cloudsql.enable_google_ml_integration: כאשר פרמטר זה מוגדר ל-on, Cloud SQL יכול להשתלב עם Vertex AI.

    ה-method של ה-HTTP וכתובת ה-URL:

    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: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את המכונה
    • ‫INSTANCE_NAME: השם של המכונה

    ה-method של ה-HTTP וכתובת ה-URL:

    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

    יצירת המכונה

    אפשר להשתמש בדוגמה הזו כדי ליצור את המכונה. רשימה מלאה של הפרמטרים לקריאה הזו מופיעה בדף instances:insert. למידע על הגדרות של מכונות, כולל ערכים תקינים לאזור, ראו הגדרות של מכונות.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: המזהה או מספר הפרויקט ב- Google Cloud שמכיל את המכונה.
    • ‫INSTANCE_NAME: שם המכונה.
    • ‫REGION_NAME: שם האזור של המכונה.
    • ‫DATABASE_VERSION: מחרוזת enum של גרסת מסד הנתונים, למשל POSTGRES_13.
    • ‫PASSWORD: הסיסמה של המשתמש root.
    • ‫MACHINE_TYPE: מחרוזת של טיפוסים בני מנייה (enum) של סוג המכונה (רמה), למשל db-custom-[CPUS]-[MEMORY_MBS]. מידע נוסף זמין במאמר רמות של מכונות.
    • ‫EDITION_TYPE: מהדורת Cloud SQL, למשל ENTERPRISE.

    צריך גם לכלול את האובייקט enableGoogleMlIntegration בבקשה. מגדירים את הפרמטרים הבאים, לפי הצורך:

    • ‫enableGoogleMlIntegration: כשהפרמטר הזה מוגדר לערך true, מכונות של Cloud SQL יכולות להתחבר ל-Vertex AI כדי להעביר ל-AI בקשות לחיזויים בזמן אמת ולתובנות.
    • cloudsql.enable_google_ml_integration: כאשר פרמטר זה מוגדר ל-on, Cloud SQL יכול להשתלב עם Vertex AI.

    ה-method של ה-HTTP וכתובת ה-URL:

    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: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את המכונה
    • ‫INSTANCE_NAME: השם של המכונה

    ה-method של ה-HTTP וכתובת ה-URL:

    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"
    }
    
  2. מתקינים את התוסף google_ml_integration במסד נתונים של המכונה הראשית של Cloud SQL. מסד הנתונים הזה מכיל נתונים שאתם רוצים להריץ עליהם חיזויים.
    1. מחברים לקוח psql למכונה הראשית, כמו שמתואר במאמר חיבור באמצעות לקוח psql.
    2. בשורת הפקודה של psql, מתחברים למסד הנתונים:
      \c DB_NAME

      מחליפים את DB_NAME בשם של מסד הנתונים שבו רוצים להתקין את התוסף.

    3. מתקינים את התוסף:
      CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

פתרון בעיות

בקטע הזה מפורט מידע על בעיות שקשורות לשילוב של Cloud SQL עם Vertex AI, וגם שלבים לפתרון הבעיות.

שגיאה פתרון בעיות
הודעת שגיאה: Google ML integration API is supported only on Postgres version 12 or above. כדי להפעיל את השילוב של Vertex AI ב-Cloud SQL, צריך מסד נתונים של Cloud SQL ל-PostgreSQL בגרסה 12 ואילך. כדי לשדרג את מסד הנתונים לגרסה הזו, קראו את המאמר שדרוג הגרסה הראשית של מסד הנתונים במקום.
הודעת שגיאה: Google ML Integration API is not supported on shared core instance. Please upsize your machine type. אם בחרתם בליבת מעבד משותפת לסוג המכונה של המכונה שלכם, אתם לא יכולים להפעיל את השילוב של Vertex AI ב-Cloud SQL. לשדרג את סוג המכונה לליבה ייעודית. מידע נוסף זמין במאמר בנושא סוג מכונה.
הודעת שגיאה: Google ML Integration is unsupported for this maintenance version. Please follow https://docs.cloud.google.com/sql/docs/postgres/self-service-maintenance to update the maintenance version of the instance. כדי להפעיל את השילוב של Vertex AI ב-Cloud SQL, גרסת התחזוקה של המכונה צריכה להיות 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
--enable-google-ml-integration


מחליפים את 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. מידע נוסף על הוספת ההרשאות האלה לחשבון השירות זמין במאמר מתן הרשאות של ניהול זהויות והרשאות גישה (IAM) לחשבון השירות של 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, שהיא 4MB לכל בקשה.
הודעת שגיאה: 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 בקשות לדקה לכל אזור, לכל מודל ולכל פרויקט.

המאמרים הבאים