טיפול בשגיאות שקשורות למכסה באמצעות קריאה חוזרת ל-ML.GENERATE_EMBEDDING

במדריך הזה נסביר איך להשתמש בפרוצדורה המאוחסנת הציבורית bqutil.procedure.bqml_generate_embeddings של BigQuery כדי לבצע איטרציה על קריאות לפונקציה ML.GENERATE_EMBEDDING. הפעלת הפונקציה באופן איטרטיבי מאפשרת לטפל בשגיאות שניתן לנסות שוב לפתור, שמתרחשות בגלל חריגה מהקצאות ומהמגבלות שחלות על הפונקציה.

כדי לבדוק את קוד המקור של bqutil.procedure.bqml_generate_embeddings הפרוצדורה המאוחסנת ב-GitHub, אפשר לעיין ב-bqml_generate_embeddings.sqlx. מידע נוסף על הפרמטרים והשימוש של הפרוצדורה המאוחסנת זמין בקובץ ה-README.

במדריך הזה מוסבר איך לבצע את הפעולות הבאות:

  • יצירת מודל מרוחק על בסיס מודל text-embedding-005.
  • חזרה על קריאות לפונקציה ML.GENERATE_EMBEDDING, באמצעות המודל המרוחק וטבלת הנתונים הציבוריים bigquery-public-data.bbc_news.fulltext עם הפרוצדורה המאוחסנת bqutil.procedure.bqml_generate_embeddings.

ההרשאות הנדרשות

כדי להפעיל את המדריך הזה, אתם צריכים את התפקידים הבאים בניהול הזהויות והרשאות הגישה (IAM):

  • יצירה ושימוש במערכי נתונים, בחיבורים ובמודלים של BigQuery: אדמין של BigQuery‏ (roles/bigquery.admin).
  • נותנים הרשאות לחשבון השירות של החיבור: אדמין IAM של פרויקט (roles/resourcemanager.projectIamAdmin).

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

ההרשאות הנדרשות

  • יצירת מערך נתונים: bigquery.datasets.create
  • יצירה, הקצאה ושימוש בחיבור: bigquery.connections.*
  • הגדרת החיבור המוגדר כברירת מחדל: bigquery.config.*
  • מגדירים את ההרשאות לחשבון השירות: resourcemanager.projects.getIamPolicy ו- resourcemanager.projects.setIamPolicy
  • יצירת מודל והרצת הסקה:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

יכול להיות שתוכלו לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

  • BigQuery ML: You incur costs for the data that you process in BigQuery.
  • Vertex AI: You incur costs for calls to the Vertex AI model.

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

יכול להיות שמשתמשים חדשים ב- Google Cloud זכאים לתקופת ניסיון בחינם.

מידע נוסף על התמחור של BigQuery זמין במאמר תמחור ב-BigQuery.

מידע נוסף על התמחור של Vertex AI זמין במאמר תמחור של Vertex AI.

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

  1. 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

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

  3. Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

יצירת מערך נתונים

יוצרים מערך נתונים ב-BigQuery לאחסון המודלים ונתונים לדוגמה:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    לדף BigQuery

  2. בחלונית Explorer, לוחצים על שם הפרויקט.

  3. לוחצים על הצגת פעולות > יצירת מערך נתונים.

  4. בדף Create dataset, מבצעים את הפעולות הבאות:

    1. בשדה Dataset ID (מזהה מערך הנתונים), מזינים target_dataset.

    2. בקטע Location type, בוחרים באפשרות במספר אזורים ואז באפשרות US (multiple regions in United States).

    3. משאירים את שאר הגדרות ברירת המחדל כמו שהן ולוחצים על Create dataset (יצירת מערך נתונים).

יצירת מודל ליצירת הטמעת טקסט

יצירת מודל מרוחק שמייצג מודל Vertex AItext-embedding-005 שמתארח:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מריצים את ההצהרה הבאה:

    CREATE OR REPLACE MODEL `target_dataset.embedding_model`
      REMOTE WITH CONNECTION DEFAULT
      OPTIONS (ENDPOINT = 'text-embedding-005');

    השאילתה תימשך כמה שניות, ואז המודל embedding יופיע במערך הנתונים sample בחלונית Explorer. מכיוון שהשאילתה משתמשת בהצהרה CREATE MODEL כדי ליצור מודל, אין תוצאות לשאילתה.

הפעלת התהליך המאוחסן

מריצים את bqutil.procedure.bqml_generate_embeddings הפרוצדורה המאוחסנת, שחוזרת על קריאות לפונקציה ML.GENERATE_EMBEDDING באמצעות המודל target_dataset.embedding_model וטבלת הנתונים הציבוריים bigquery-public-data.bbc_news.fulltext:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בעורך השאילתות, מריצים את ההצהרה הבאה:

    CALL `bqutil.procedure.bqml_generate_embeddings`(
        "bigquery-public-data.bbc_news.fulltext",            -- source table
        "PROJECT_ID.target_dataset.news_body_embeddings",  -- destination table
        "PROJECT_ID.target_dataset.embedding_model",       -- model
        "body",                                              -- content column
        ["filename"],                                        -- key columns
        '{}'                                                 -- optional arguments encoded as a JSON string
    );

    מחליפים את PROJECT_ID במזהה הפרויקט שבו אתם משתמשים במדריך הזה.

    התהליך המאוחסן יוצר טבלה target_dataset.news_body_embeddings שתכיל את הפלט של הפונקציה ML.GENERATE_EMBEDDING.

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

    SELECT *
    FROM `target_dataset.news_body_embeddings`
    WHERE ml_generate_embedding_status LIKE '%A retryable error occurred%';

    השאילתה מחזירה את ההודעה No data to display.

הסרת המשאבים

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.