1. מבוא
ב-Codelab הזה מפורטים השלבים לסיכום קוד מקור ממאגרי GitHub ולזיהוי שפת התכנות במאגר, באמצעות מודל שפה גדול (LLM) של Vertex AI ליצירת טקסט ( text-bison) כפונקציה מרוחקת מתארחת ב-BigQuery. בזכות פרויקט הארכיון של GitHub, יש לנו עכשיו תמונת מצב מלאה של יותר מ-2.8 מיליון מאגרי קוד פתוח ב-GitHub במערכי נתונים ציבוריים של Google BigQuery. רשימת השירותים שנעשה בהם שימוש:
- BigQuery ML
- Vertex AI PaLM API
מה תפַתחו
תצרו
- מערך נתונים ב-BigQuery שיכיל את המודל
- מודל BigQuery שמארח את Vertex AI PaLM API כפונקציה מרוחקת
- חיבור חיצוני כדי ליצור את החיבור בין BigQuery ל-Vertex AI
2. דרישות
3. לפני שמתחילים
- ב-מסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
- הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
- מוודאים שכל ממשקי ה-API הנדרשים (BigQuery API, Vertex AI API, BigQuery Connection API) מופעלים.
- תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud וכוללת את bq. אפשר לעיין במאמרי העזרה בנושא פקודות gcloud ושימוש בהן.
בפינה הימנית העליונה של Cloud Console, לוחצים על 'הפעלת Cloud Shell':

אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
- אפשר לעבור ישירות למסוף BigQuery על ידי הזנת כתובת ה-URL הבאה בדפדפן: https://console.cloud.google.com/bigquery
4. הנתונים בשלבי הכנה
בתרחיש השימוש הזה אנחנו משתמשים בתוכן של קוד המקור ממערך הנתונים github_repos במערכי הנתונים הציבוריים של Google BigQuery. כדי להשתמש בזה, במסוף BigQuery, מחפשים את github_repos ומקישים על Enter. לוחצים על הכוכב לצד מערך הנתונים שמופיע כתוצאת החיפוש. לאחר מכן לוחצים על האפשרות 'הצגת נתונים עם כוכב בלבד' כדי לראות את מערך הנתונים הזה רק מתוך מערכי הנתונים הציבוריים.

מרחיבים את הטבלאות במערך הנתונים כדי לראות את הסכימה ותצוגה מקדימה של הנתונים. אנחנו נשתמש ב-sample_contents, שמכיל רק דגימה (10%) של הנתונים המלאים בטבלת התוכן. זוהי תצוגה מקדימה של הנתונים:

5. יצירת מערך הנתונים ב-BigQuery
מערך נתונים ב-BigQuery הוא אוסף של טבלאות. כל הטבלאות במערך נתונים מאוחסנות באותו מיקום. אפשר גם לצרף אמצעי בקרת גישה מותאמים אישית כדי להגביל את הגישה למערך נתונים ולטבלאות שלו.
יוצרים קבוצת נתונים באזור 'ארה"ב' (או בכל אזור אחר לפי ההעדפה) בשם bq_llm

מערך הנתונים הזה יכיל את מודל ה-ML שייווצר בשלבים הבאים. בדרך כלל אנחנו גם מאחסנים את הנתונים שבהם אנחנו משתמשים באפליקציית ה-ML בטבלה במערך הנתונים הזה, אבל בתרחיש השימוש שלנו הנתונים כבר נמצאים במערך נתונים ציבורי ב-BigQuery, ואנחנו נפנה אליו ישירות ממערך הנתונים החדש שיצרנו לפי הצורך. אם אתם רוצים לבצע את הפרויקט הזה במערך נתונים משלכם שנמצא בקובץ CSV (או בכל קובץ אחר), אתם יכולים לטעון את הנתונים לטבלה במערך נתונים ב-BigQuery על ידי הפעלת הפקודה הבאה ממסוף Cloud Shell:
bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string
6. יצירת חיבור חיצוני
יוצרים חיבור חיצוני (אם עדיין לא עשיתם זאת, מפעילים את BQ Connection API) ורושמים את מזהה חשבון השירות מפרטי הגדרת החיבור:
- לוחצים על הלחצן +ADD בחלונית BigQuery Explorer (בצד ימין של מסוף BigQuery) ולוחצים על Connection to external data sources (חיבור למקורות נתונים חיצוניים) ברשימת המקורות הפופולריים.
- בוחרים באפשרות 'BigLake ופונקציות מרוחקות' בתור סוג החיבור ומזינים llm-conn בתור מזהה החיבור.

- אחרי שיוצרים את החיבור, רושמים את חשבון השירות שנוצר מפרטי הגדרת החיבור.
7. מתן הרשאות
בשלב הזה ניתן הרשאות לחשבון השירות לגשת לשירות Vertex AI:
פותחים את IAM ומוסיפים את חשבון השירות שהעתקתם אחרי שיצרתם את החיבור החיצוני כ-Principal, ובוחרים בתפקיד Vertex AI User.

8. יצירת מודל ML מרוחק
יוצרים את המודל המרוחק שמייצג מודל שפה גדול (LLM) שמתארח ב-Vertex AI:
CREATE OR REPLACE MODEL bq_llm.llm_model
REMOTE WITH CONNECTION `us.llm-conn`
OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');
הפונקציה יוצרת מודל בשם llm_model במערך הנתונים bq_llm, שמסתמך על CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 API של Vertex AI כפונקציה מרוחקת. התהליך יימשך כמה שניות.
9. יצירת טקסט באמצעות מודל למידת מכונה
אחרי שהמודל נוצר, אפשר להשתמש בו כדי ליצור, לסכם או לסווג טקסט.
SELECT
ml_generate_text_result['predictions'][0]['content'] AS generated_text,
ml_generate_text_result['predictions'][0]['safetyAttributes']
AS safety_attributes,
* EXCEPT (ml_generate_text_result)
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens));
**הסבר:
ml_generate_text_result** היא התגובה של מודל יצירת הטקסט בפורמט JSON, שמכילה גם תוכן וגם מאפייני בטיחות: א. התוכן מייצג את תוצאת הטקסט שנוצרה b. מאפייני הבטיחות מייצגים את מסנן התוכן המובנה עם סף מתכוונן שמופעל ב-Vertex AI Palm API כדי למנוע תשובות לא מכוונות או בלתי צפויות ממודל השפה הגדול – התשובה נחסמת אם היא חורגת מסף הבטיחות
ML.GENERATE_TEXT הוא מבנה שמשתמשים בו ב-BigQuery כדי לגשת ל-LLM של Vertex AI ולבצע משימות של יצירת טקסט
CONCAT מוסיפה את הצהרת ה-PROMPT ואת רשומת מסד הנתונים
github_repos הוא שם מערך הנתונים, ו-sample_contents הוא שם הטבלה שמכילה את הנתונים שבהם נשתמש בתכנון ההנחיה.
Temperature הוא פרמטר ההנחיה ששולט באקראיות של התשובה – ככל שהערך נמוך יותר, כך התשובה רלוונטית יותר
Max_output_tokens הוא מספר המילים שרוצים בתשובה
התגובה לשאילתה נראית כך:

10. השטחת תוצאת השאילתה
נשטח את התוצאה כדי שלא נצטרך לפענח את ה-JSON באופן מפורש בשאילתה:
SELECT *
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output));
**הסבר:
Flatten_json_output** מייצג את הערך הבוליאני, שאם הוא מוגדר כ-True, מחזיר טקסט שטוח וברור שחולץ מתגובת ה-JSON.
התגובה לשאילתה נראית כך:

11. הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם במאמר הזה:
- במסוף Google Cloud, עוברים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על סמל המחיקה.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
12. מזל טוב
מעולה! השתמשתם בהצלחה בתוכנית Vertex AI Text Generation LLM באופן פרוגרמטי כדי לבצע ניתוח טקסט על הנתונים שלכם באמצעות שאילתות SQL בלבד. מידע נוסף על המודלים הזמינים מופיע בתיעוד המוצר Vertex AI LLM.