שימוש בכוונון ובהערכה כדי לשפר את הביצועים של המודל
במאמר הזה מוסבר איך ליצור מודל מרוחק של BigQuery ML שמפנה אל מודל של Vertex AI gemini-2.0-flash-001.
לאחר מכן משתמשים בכוונון בפיקוח כדי לכוונן את המודל באמצעות נתוני אימון חדשים, ואז מעריכים את המודל באמצעות הפונקציה ML.EVALUATE.
התאמה יכולה לעזור לכם לטפל בתרחישים שבהם אתם צריכים להתאים אישית את המודל המתארח ב-Vertex AI, למשל כשקשה להגדיר באופן תמציתי בהנחיה את ההתנהגות הצפויה של המודל, או כשההנחיות לא מניבות תוצאות צפויות באופן עקבי מספיק. התאמה מונחית משפיעה על המודל גם בדרכים הבאות:
- הנחיית המודל להחזרת סגנונות תשובה ספציפיים – לדוגמה, תמציתי יותר או מפורט יותר.
- אימון המודל להתנהגויות חדשות – למשל, להגיב להנחיות בתור פרסונה ספציפית.
- גורם למודל לעדכן את עצמו במידע חדש.
במדריך הזה, המטרה היא שהמודל ייצור טקסט שהסגנון והתוכן שלו יהיו דומים ככל האפשר לתוכן האמת שסופק.
התפקידים הנדרשים
כדי להפעיל את המדריך הזה, אתם צריכים את התפקידים הבאים בניהול הזהויות והרשאות הגישה (IAM):
- יצירה ושימוש במערכי נתונים, בחיבורים ובמודלים של BigQuery:
אדמין של BigQuery (
roles/bigquery.admin). - נותנים הרשאות לחשבון השירות של החיבור: אדמין IAM של פרויקט (
roles/resourcemanager.projectIamAdmin).
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות לביצוע המשימות שמתוארות במסמך הזה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
- יצירת מערך נתונים:
bigquery.datasets.create - יצירת טבלה:
bigquery.tables.create - יצירה, הקצאה ושימוש בחיבור:
bigquery.connections.* - הגדרת החיבור המוגדר כברירת מחדל:
bigquery.config.* - מגדירים את ההרשאות לחשבון השירות:
resourcemanager.projects.getIamPolicyו-resourcemanager.projects.setIamPolicy - יצירת מודל והרצת הסקה:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
יכול להיות שתוכלו לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
לפני שמתחילים
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, Vertex AI, and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
- BigQuery: You incur costs for the queries that you run in BigQuery.
- BigQuery ML: You incur costs for the model that you create and the processing that you perform in BigQuery ML.
- Vertex AI: You incur costs for calls to and
supervised tuning of the
gemini-2.0-flash-001model.
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אפשר להשתמש במחשבון התמחור.
מידע נוסף זמין במקורות המידע הבאים:
יצירת מערך נתונים
יוצרים מערך נתונים ב-BigQuery לאחסון מודל ה-ML.
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית Explorer, לוחצים על שם הפרויקט.
לוחצים על הצגת פעולות > יצירת מערך נתונים.
בדף Create dataset, מבצעים את הפעולות הבאות:
בשדה Dataset ID (מזהה מערך הנתונים), מזינים
bqml_tutorial.בקטע Location type, בוחרים באפשרות במספר אזורים ואז באפשרות US (multiple regions in United States).
משאירים את שאר הגדרות ברירת המחדל כמו שהן ולוחצים על Create dataset (יצירת מערך נתונים).
BQ
כדי ליצור מערך נתונים חדש, משתמשים בפקודה bq mk עם הדגל --location. רשימה מלאה של הפרמטרים האפשריים זמינה במאמר בנושא הפקודה bq mk --dataset.
יוצרים מערך נתונים בשם
bqml_tutorialעם מיקום הנתונים שמוגדר ל-USותיאור שלBigQuery ML tutorial dataset:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
במקום להשתמש בדגל
--dataset, הפקודה משתמשת בקיצור הדרך-d. אם לא מציינים את-dואת--dataset, ברירת המחדל של הפקודה היא יצירת מערך נתונים.בודקים שמערך הנתונים נוצר:
bq ls
API
מבצעים קריאה לשיטה datasets.insert עם משאב מוגדר של מערך נתונים.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
יצירת טבלאות בדיקה
ליצור טבלאות של נתוני אימון והערכה על סמך מערך הנתונים הציבורי task955_wiki_auto_style_transfer מ-Hugging Face.
פותחים את Cloud Shell.
ב-Cloud Shell, מריצים את הפקודות הבאות כדי ליצור טבלאות של נתוני בדיקה והערכה:
python3 -m pip install pandas pyarrow fsspec huggingface_hub python3 -c "import pandas as pd; df_train = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/train-00000-of-00001.parquet').drop('id', axis=1); df_train['output'] = [x[0] for x in df_train['output']]; df_train.to_json('wiki_auto_style_transfer_train.jsonl', orient='records', lines=True);" python3 -c "import pandas as pd; df_valid = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/valid-00000-of-00001.parquet').drop('id', axis=1); df_valid['output'] = [x[0] for x in df_valid['output']]; df_valid.to_json('wiki_auto_style_transfer_valid.jsonl', orient='records', lines=True);" bq rm -t bqml_tutorial.wiki_auto_style_transfer_train bq rm -t bqml_tutorial.wiki_auto_style_transfer_valid bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_train wiki_auto_style_transfer_train.jsonl input:STRING,output:STRING bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_valid wiki_auto_style_transfer_valid.jsonl input:STRING,output:STRING
יצירת מודל בסיסי
יוצרים מודל מרוחק על בסיס מודל gemini-2.0-flash-001 של Vertex AI.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה כדי ליצור מודל מרוחק:
CREATE OR REPLACE MODEL `bqml_tutorial.gemini_baseline` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT ='gemini-2.0-flash-001');
השלמת השאילתה אורכת כמה שניות, ואז מודל
gemini_baselineמופיע במערך הנתוניםbqml_tutorialבחלונית Explorer. השאילתה משתמשת בהצהרתCREATE MODELכדי ליצור מודל, ולכן אין תוצאות לשאילתה.
בדיקת ביצועי המודל הבסיסי
מריצים את הפונקציה AI.GENERATE_TEXT עם המודל המרוחק כדי לראות את הביצועים שלו בנתוני ההערכה בלי לבצע התאמות.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
SELECT result, ground_truth FROM AI.GENERATE_TEXT( MODEL `bqml_tutorial.gemini_baseline`, ( SELECT input AS prompt, output AS ground_truth FROM `bqml_tutorial.wiki_auto_style_transfer_valid` LIMIT 10 ));
אם בוחנים את נתוני הפלט ומשווים את הערכים של
resultושלground_truth, אפשר לראות שבעוד שמודל הבסיס יוצר טקסט שמשקף בצורה מדויקת את העובדות שמופיעות בתוכן האמת, הסגנון של הטקסט שונה למדי.
הערכת מודל הבסיס
כדי לבצע הערכה מפורטת יותר של ביצועי המודל, אפשר להשתמש בפונקציה ML.EVALUATE.
הפונקציה הזו מחשבת מדדי מודל שמודדים את הדיוק והאיכות של הטקסט שנוצר, כדי להשוות בין התשובות של המודל לבין תשובות אידיאליות.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.gemini_baseline`, ( SELECT input AS input_text, output AS output_text FROM `bqml_tutorial.wiki_auto_style_transfer_valid` ), STRUCT('text_generation' AS task_type));
הפלט אמור להיראות כך:
+---------------------+---------------------+-------------------------------------------+--------------------------------------------+
| bleu4_score | rouge-l_precision | rouge-l_recall | rouge-l_f1_score | evaluation_status |
+---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
| 0.23317359667074181 | 0.37809145226740043 | 0.45902937167791508 | 0.40956844061733139 | { |
| | | | | "num_successful_rows": 176, |
| | | | | "num_total_rows": 176 |
| | | | | } |
+---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
אפשר לראות שהביצועים של מודל הבסיס לא רעים, אבל הדמיון בין הטקסט שנוצר לבין נתוני האמת נמוך, על סמך מדדי ההערכה. המשמעות היא שכדאי לבצע כוונון בפיקוח כדי לבדוק אם אפשר לשפר את ביצועי המודל בתרחיש השימוש הזה.
יצירת מודל שעבר כוונון
יוצרים מודל מרוחק שדומה מאוד למודל שיצרתם במאמר יצירת מודל, אבל הפעם מציינים את הפסקה AS SELECT כדי לספק את נתוני האימון לצורך כוונון המודל.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה כדי ליצור מודל מרוחק:
CREATE OR REPLACE MODEL `bqml_tutorial.gemini_tuned` REMOTE WITH CONNECTION DEFAULT OPTIONS ( endpoint = 'gemini-2.0-flash-001', max_iterations = 500, data_split_method = 'no_split') AS SELECT input AS prompt, output AS label FROM `bqml_tutorial.wiki_auto_style_transfer_train`;
השאילתה תימשך כמה דקות, ולאחר מכן מודל
gemini_tunedיופיע במערך הנתוניםgemini_tunedבחלונית Explorer.bqml_tutorialמכיוון שהשאילתה משתמשת בהצהרהCREATE MODELכדי ליצור מודל, אין תוצאות לשאילתה.
בדיקת הביצועים של מודל שעבר התאמה
מריצים את הפונקציה AI.GENERATE_TEXT כדי לראות את הביצועים של המודל המותאם על נתוני ההערכה.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
SELECT result, ground_truth FROM AI.GENERATE_TEXT( MODEL `bqml_tutorial.gemini_tuned`, ( SELECT input AS prompt, output AS ground_truth FROM `bqml_tutorial.wiki_auto_style_transfer_valid` LIMIT 10 ));
אם בודקים את נתוני הפלט, אפשר לראות שהמודל שעבר התאמה מייצר טקסט בסגנון שדומה הרבה יותר לתוכן האמת.
הערכת המודל שעבר התאמה
אפשר להשתמש בפונקציה ML.EVALUATE כדי לראות איך התשובות של המודל שעבר התאמה משתוות לתשובות אידיאליות.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מריצים את ההצהרה הבאה:
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.gemini_tuned`, ( SELECT input AS prompt, output AS label FROM `bqml_tutorial.wiki_auto_style_transfer_valid` ), STRUCT('text_generation' AS task_type));
הפלט אמור להיראות כך:
+---------------------+---------------------+-------------------------------------------+--------------------------------------------+
| bleu4_score | rouge-l_precision | rouge-l_recall | rouge-l_f1_score | evaluation_status |
+---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
| 0.416868792119966 | 0.642001000843349 | 0.55910008048151372 | 0.5907226262084847 | { |
| | | | | "num_successful_rows": 176, |
| | | | | "num_total_rows": 176 |
| | | | | } |
+---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
אפשר לראות שגם אם מערך הנתונים לאימון כלל רק 1,408 דוגמאות, יש שיפור ניכר בביצועים, כפי שמצוין במדדי ההערכה הגבוהים יותר.
הסרת המשאבים
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.