בדף הזה מוסבר איך לשפר את הביצועים של מודלים להטמעת טקסט.
מודלים של הטמעות בסיסיות מאומנים מראש על מערך נתונים עצום של טקסט, ומספקים בסיס חזק למשימות רבות. בתרחישים שבהם נדרש ידע מיוחד או ביצועים מותאמים במיוחד, כוונון המודל מאפשר לכם לשפר את הייצוגים של המודל באמצעות נתונים רלוונטיים משלכם. אפשר לבצע התאמה אישית של המודלים הבאים להטמעת טקסט:
לחצו כדי להרחיב את רשימת המודלים הנתמכים
text-embedding-004text-embedding-005text-multilingual-embedding-002
מודלים להטמעת טקסט תומכים בכוונון בפיקוח. בשיטת הכוונון המפוקח נעשה שימוש בדוגמאות מתויגות שמדגימות את סוג הפלט שרוצים לקבל ממודל הטמעת הטקסט במהלך ההסקה.
שיפור האיכות הצפוי
Gemini Enterprise Agent Platform משתמשת בשיטת כוונון יעילה לפרמטרים לצורך התאמה אישית. המתודולוגיה הזו מראה שיפורים משמעותיים באיכות, של עד 41% (ממוצע של 12%) בניסויים שבוצעו על מערכי נתונים ציבוריים של מדדי ביצועים לאחזור.
תרחיש לדוגמה לשיפור מודל הטמעה
כוונון של מודל הטמעות טקסט יכול לאפשר למודל להתאים את ההטמעות לדומיין או למשימה ספציפיים. האפשרות הזו יכולה להיות שימושית אם מודל ההטמעות שאומן מראש לא מתאים לצרכים הספציפיים שלכם. לדוגמה, אפשר לכוונן מודל הטמעה על מערך נתונים ספציפי של כרטיסי תמיכה בלקוחות עבור החברה שלכם. המידע הזה יכול לעזור לצ'אטבוט להבין את הסוגים השונים של בעיות בתמיכה בלקוחות שנתקלים בהן בדרך כלל הלקוחות שלכם, ולענות על השאלות שלהם בצורה יעילה יותר. בלי כוונון, המודל לא יודע את הפרטים של כרטיסי התמיכה של הלקוחות או את הפתרונות לבעיות ספציפיות במוצר.
תהליך העבודה של כוונון
תהליך העבודה של כוונון המודל ב-Gemini Enterprise Agent Platform הוא כזה:
- מכינים את מערך הנתונים לכוונון המודל.
- מעלים את מערך הנתונים לכוונון המודל לקטגוריה של Cloud Storage.
- מגדירים את הפרויקט לצינורות של Gemini Enterprise Agent Platform.
- יוצרים משימת כוונון של מודל.
- פורסים את המודל שעבר התאמה לנקודת קצה ב-Gemini Enterprise Agent Platform עם אותו שם. בניגוד למשימות של כוונון מודלים של טקסט, משימה של כוונון הטמעות טקסט לא פורסת את המודלים המכווננים שלכם לנקודת קצה של Gemini Enterprise Agent Platform.
הכנת מערך נתוני ההטבעות
מערך הנתונים שמשמש לשיפור מודל ההטבעות כולל נתונים שתואמים למשימה שרוצים שהמודל יבצע.
פורמט מערך הנתונים לכוונון מודל הטמעה
מערך נתוני האימון מורכב מהקבצים הבאים, שצריכים להיות ב-Cloud Storage. הנתיב של הקבצים מוגדר על ידי פרמטרים כשמפעילים את צינור העיבוד של ההתאמה. שלושת סוגי הקבצים הם קובץ הקורפוס, קובץ השאילתות והתוויות. צריך לספק רק תוויות אימון, אבל אפשר גם לספק תוויות אימות ובדיקה כדי לקבל שליטה רבה יותר.
קובץ הקורפוס: הנתיב מוגדר על ידי הפרמטר
corpus_path. זהו קובץ JSONL שבו כל שורה מכילה את השדות_id,titleו-textעם ערכים מסוג מחרוזת. המאפיינים_idו-textהם מאפייני חובה, והמאפייןtitleהוא אופציונלי. קובץcorpus.jsonlלדוגמה:{"_id": "doc1", "title": "Get an introduction to Agent Platform", "text": "Agent Platform Studio offers a Google Cloud console tool for rapidly prototyping and testing generative AI models. Learn how you can use Agent Platform Studio to test models using prompt samples, design and save prompts, tune a foundation model, and convert between speech and text."} {"_id": "doc2", "title": "Use gen AI for summarization, classification, and extraction", "text": "Learn how to create text prompts for handling any number of tasks with Agent Platform's generative AI support. Some of the most common tasks are classification, summarization, and extraction. Agent Platform's PaLM API for text lets you design prompts with flexibility in terms of their structure and format."} {"_id": "doc3", "title": "Custom ML training overview and documentation", "text": "Get an overview of the custom training workflow in Agent Platform, the benefits of custom training, and the various training options that are available. This page also details every step involved in the ML training workflow from preparing data to inferences."} {"_id": "doc4", "text": "Text embeddings are useful for clustering, information retrieval, retrieval-augmented generation (RAG), and more."} {"_id": "doc5", "title": "Text embedding tuning", "text": "Google's text embedding models can be tuned on Agent Platform."}קובץ שאילתות: קובץ השאילתות מכיל את השאילתות לדוגמה. הנתיב מוגדר על ידי הפרמטר
queries_path. קובץ השאילתות הוא בפורמט JSONL ויש בו את אותם שדות כמו בקובץ הקורפוס. קובץqueries.jsonlלדוגמה:{"_id": "query1", "text": "Does Vertex support generative AI?"} {"_id": "query2", "text": "What can I do with Vertex GenAI offerings?"} {"_id": "query3", "text": "How do I train my models using Vertex?"} {"_id": "query4", "text": "What is a text embedding?"} {"_id": "query5", "text": "Can text embedding models be tuned on Vertex?"} {"_id": "query6", "text": "embeddings"} {"_id": "query7", "text": "embeddings for rag"} {"_id": "query8", "text": "custom model training"} {"_id": "query9", "text": "Google Cloud PaLM API"}תוויות אימון: הנתיב מוגדר על ידי הפרמטר
train_label_path. הנתיב train_label_path הוא ה-URI של Cloud Storage למיקום של נתוני התוויות לאימון, והוא מצוין כשיוצרים את משימת ההתאמה. התוויות צריכות להיות בקובץ TSV עם כותרת. קבוצת משנה של השאילתות ומאגר המידע צריכים להיכלל בקובץ תוויות האימון. הקובץ צריך לכלול את העמודותquery-id,corpus-idו-score. query-idהיא מחרוזת שתואמת למפתח_idמקובץ השאילתות, ו-corpus-idהיא מחרוזת שתואמת ל-_idבקובץ הקורפוס. Scoreהוא ערך מספרי שלם לא שלילי. אם זוג של שאילתה ומסמך לא קשורים, אפשר להשמיט אותו מקובץ תוויות האימון או לכלול אותו עם ציון אפס. כל ציון שגדול מאפס מצביע על כך שהמסמך קשור לשאילתה. מספרים גדולים יותר מצביעים על רמת רלוונטיות גבוהה יותר. אם הציון לא מצוין, ערך ברירת המחדל הוא 1. קובץtrain_labels.tsvלדוגמה:query-id corpus-id score query1 doc1 1 query2 doc2 1 query3 doc3 2 query3 doc5 1 query4 doc4 1 query4 doc5 1 query5 doc5 2 query6 doc4 1 query6 doc5 1 query7 doc4 1 query8 doc3 1 query9 doc2 1תוויות לבדיקה: אופציונלי. תוויות הבדיקה הן באותו פורמט כמו תוויות האימון, והן מוגדרות באמצעות הפרמטר
test_label_path. אם לא מספקיםtest_label_path, המערכת תפצל אוטומטית את תוויות הבדיקה מתוויות האימון.תוויות אימות: אופציונלי. תוויות האימות הן באותו פורמט כמו תוויות האימון, והן מצוינות על ידי הפרמטר
validation_label_path. אם לא מספקיםvalidation_label_path, תוויות האימות יפוצלו אוטומטית מתוויות האימון.
הדרישות לגבי גודל מערך הנתונים
קובצי מערך הנתונים שאתם מספקים צריכים לעמוד במגבלות הבאות:
- מספר השאילתות חייב להיות בין 9 ל-10,000.
- מספר המסמכים בקורפוס חייב להיות בין 9 ל-500,000.
- כל קובץ תוויות של מערך נתונים חייב לכלול לפחות 3 מזהי שאילתות, ובכל הפיצולים של מערך הנתונים צריכים להיות לפחות 9 מזהי שאילתות.
- המספר הכולל של תוויות צריך להיות קטן מ-500,000.
הגדרת הפרויקט לצינורות של Gemini Enterprise Agent Platform
הכוונון מתבצע בפרויקט באמצעות פלטפורמת Gemini Enterprise Agent Platform Pipelines.
הגדרת הרשאות
צינור עיבוד הנתונים מריץ קוד אימון באמצעות שני סוכני שירות. כדי להתחיל באימון באמצעות הפרויקט ומערך הנתונים שלכם, צריך להקצות לסוכני השירות האלה תפקידים ספציפיים.
חשבון השירות של Compute Engine שמוגדר כברירת מחדל
PROJECT_NUMBER-compute@developer.gserviceaccount.com
חשבון השירות הזה צריך:
Storage Object Viewerגישה לכל קובץ של מערך נתונים שיצרתם ב-Cloud Storage.Storage Object Userגישה לספריית הפלט של צינור העברת הנתונים ב-Cloud Storage, PIPELINE_OUTPUT_DIRECTORY.- גישה ל
Agent Platform Userלפרויקט.
במקום חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, אתם יכולים לציין חשבון שירות מותאם אישית. מידע נוסף מופיע במאמר הגדרת חשבון שירות עם הרשאות מפורטות.
Gemini Enterprise Agent Platform Tuning Service Agent
service-PROJECT_NUMBER@gcp-sa-aiplatform-ft.iam.gserviceaccount.com
חשבון השירות הזה צריך:
Storage Object Viewerגישה לכל קובץ של מערך נתונים שיצרתם ב-Cloud Storage.Storage Object Userגישה לספריית הפלט של צינור העברת הנתונים ב-Cloud Storage, PIPELINE_OUTPUT_DIRECTORY.
מידע נוסף על הגדרת הרשאות של מערכי נתונים ב-Cloud Storage זמין במאמר הגדרת קטגוריה של Cloud Storage לארטיפקטים של צינורות.
שימוש במאיצים
כדי לבצע אופטימיזציה, צריך מאיצי GPU. אפשר להשתמש בכל אחד מהמאיצים הבאים לצינור ההתאמה של הטמעת טקסט:
NVIDIA_L4NVIDIA_TESLA_A100NVIDIA_TESLA_T4NVIDIA_TESLA_V100NVIDIA_TESLA_P100
כדי להפעיל משימת אופטימיזציה, צריך מכסת Restricted image training GPUs מספיקה לסוג המאיץ ולאזור שבחרתם, לדוגמה Restricted
image training Nvidia V100 GPUs per region. כדי להגדיל את המכסה של הפרויקט, אפשר לעיין במאמר בנושא בקשה להגדלת מכסה.
לא כל המאיצים זמינים בכל האזורים. מידע נוסף זמין במאמר בנושא שימוש במאיצים ב-Gemini Enterprise Agent Platform.
יצירת משימת כוונון של מודל הטמעה
אפשר ליצור משימת כוונון של מודל הטמעה באמצעות מסוף Google Cloud , API ל-REST או ספריות לקוח.
REST
כדי ליצור משימת כוונון של מודל הטמעה, משתמשים בשיטה projects.locations.pipelineJobs.create.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . PIPELINE_OUTPUT_DIRECTORY: הנתיב של פריטי הפלט של הצינור, שמתחיל ב-gs://.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/pipelineJobs
תוכן בקשת JSON:
{
"displayName": "tune_text_embeddings_model_sample",
"runtimeConfig": {
"gcsOutputDirectory": "PIPELINE_OUTPUT_DIRECTORY",
"parameterValues": {
"corpus_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/corpus.jsonl",
"queries_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/queries.jsonl",
"train_label_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/train.tsv",
"test_label_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/test.tsv",
"base_model_version_id":"text-embedding-004",
"task_type": "DEFAULT",
"batch_size": "128",
"train_steps": "1000",
"output_dimensionality": "768",
"learning_rate_multiplier": "1.0"
}
},
"templateUri": "https://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.3"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
אחרי שמפעילים את צינור העיבוד, אפשר לעקוב אחרי ההתקדמות של משימת ההתאמה דרך מסוףGoogle Cloud .
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
המסוף
כדי לכוונן מודל להטמעת טקסט באמצעות מסוף Google Cloud , אפשר להפעיל צינור עיבוד נתונים להתאמה אישית באמצעות השלבים הבאים:
- בקטע Agent Platform במסוף Google Cloud , עוברים לדף Gemini Enterprise Agent Platform Pipelines.
- לוחצים על יצירת הרצה כדי לפתוח את החלונית יצירת הרצת צינור.
- לוחצים על בחירה מתוך צינורות קיימים ומזינים את הפרטים הבאים:
- בתפריט הנפתח select a resource (בחירת משאב), בוחרים באפשרות ml-pipeline.
- בתפריט הנפתח Repository (מאגר), בוחרים באפשרות llm-text-embedding.
- בתפריט הנפתח Pipeline or component (צינור או רכיב), בוחרים באפשרות tune-text-embedding-model.
- בתפריט הנפתח Version, בוחרים בגרסה עם התווית v1.1.3.
- מציינים שם הפעלה כדי לזהות באופן ייחודי את ההפעלה של צינור עיבוד הנתונים.
- בתפריט הנפתח Region, בוחרים את האזור שבו רוצים ליצור את ההרצה של צינור הנתונים. זה יהיה אותו אזור שבו נוצר המודל המכוונן.
- לוחצים על Continue. מופיעה החלונית Runtime configuration.
- בקטע Cloud storage location (מיקום ב-Cloud Storage), לוחצים על Browse (עיון) כדי לבחור את קטגוריית Cloud Storage לאחסון פריטי הפלט של צינור העיבוד, ואז לוחצים על Select (בחירה).
- בקטע Pipeline parameters (פרמטרים של צינור העיבוד), מציינים את הפרמטרים של צינור העיבוד להתאמה. שלושת הפרמטרים הנדרשים הם
corpus_path,queries_pathו-train_label_path, והפורמטים שלהם מפורטים במאמר הכנת מערך הנתונים של ההטמעות. מידע מפורט יותר על כל פרמטר מופיע בכרטיסייה REST בקטע הזה. - לוחצים על שליחה כדי ליצור את ההרצה של צינור העיבוד.
תכונות נתמכות אחרות
התאמה אישית של הטמעת טקסט תומכת ב-VPC Service Controls, ואפשר להגדיר אותה להפעלה בענן וירטואלי פרטי (VPC) על ידי העברת הפרמטר network כשיוצרים את PipelineJob.
כדי להשתמש במפתחות הצפנה בניהול הלקוח (CMEK), מעבירים את המפתח לפרמטר הצינור parameterValues.encryption_spec_key_name, וגם לפרמטר encryptionSpec.kmsKeyName כשיוצרים את PipelineJob.
שימוש במודל שעבר התאמה
צפייה במודלים מכווננים במרשם המודלים
כשפעולת הכוונון מסתיימת, המודל המכוונן לא נפרס אוטומטית לנקודת קצה. הוא יהיה זמין כמשאב Model במרשם המודלים. אתם יכולים לראות רשימה של המודלים בפרויקט הנוכחי, כולל המודלים המותאמים, באמצעות מסוףGoogle Cloud .
כדי לראות את המודלים המכווננים במסוף Google Cloud , עוברים לדף Gemini Enterprise Agent Platform Model Registry.
מעבר למרשם המודלים של Gemini Enterprise Agent Platform
פריסת המודל
אחרי שמכווננים את מודל ההטמעות, צריך לפרוס את משאב המודל. כדי לפרוס את מודל ההטבעות שעבר כוונון, אפשר לעיין במאמר בנושא פריסת מודל לנקודת קצה.
בניגוד למודלים בסיסיים, מודלים מוטבים להטמעת טקסט מנוהלים על ידי המשתמש.
זה כולל ניהול של משאבי הצגה, כמו סוג המכונה ומאיצים.
כדי למנוע שגיאות שקשורות לחוסר זיכרון במהלך ההסקה, מומלץ לפרוס באמצעות סוג ה-GPU NVIDIA_TESLA_A100, שיכול לתמוך בגדלים של עד 5 אצווה לכל אורך קלט.
המודל המותאם תומך בעד 3,072 טוקנים ויכול לחתוך קלטים ארוכים יותר.
קבלת מסקנות לגבי מודל שנפרס
אחרי שפורסים את המודל המותאם, אפשר להשתמש באחת מהפקודות הבאות כדי לשלוח בקשות לנקודת הקצה של המודל המותאם.
דוגמאות לפקודות curl למודלים שעברו התאמה אישית textembedding-gecko@001
כדי לקבל מסקנות מגרסה שעברה כוונון של textembedding-gecko@001, משתמשים בפקודת ה-curl הבאה לדוגמה.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
ENDPOINT_URI=https://${LOCATION}-aiplatform.googleapis.com
MODEL_ENDPOINT=TUNED_MODEL_ENDPOINT_ID
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
${ENDPOINT_URI}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${MODEL_ENDPOINT}:predict \
-d '{
"instances": [
{
"content": "Dining in New York City"
},
{
"content": "Best resorts on the east coast"
}
]
}'
פקודות curl לדוגמה למודלים שאינם textembedding-gecko@001
גרסאות מותאמות של מודלים אחרים (לדוגמה, textembedding-gecko@003 ו-textembedding-gecko-multilingual@001) דורשות 2 קלטים נוספים: task_type ו-title.
מידע נוסף על הפרמטרים האלה זמין במאמר בנושא פקודת curl.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
ENDPOINT_URI=https://${LOCATION}-aiplatform.googleapis.com
MODEL_ENDPOINT=TUNED_MODEL_ENDPOINT_ID
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
${ENDPOINT_URI}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${MODEL_ENDPOINT}:predict \
-d '{
"instances": [
{
"content": "Dining in New York City",
"task_type": "DEFAULT",
"title": ""
},
{
"content": "There are many resorts to choose from on the East coast...",
"task_type": "RETRIEVAL_DOCUMENT",
"title": "East Coast Resorts"
}
]
}'
פלט לדוגמה
הפלט של בקשת הסקה למודל המשופר שנפרס לא זהה לפורמט הפלט של בקשה ל-API של הטמעת טקסט.
{
"predictions": [
[ ... ],
[ ... ],
...
],
"deployedModelId": "...",
"model": "projects/.../locations/.../models/...",
"modelDisplayName": "tuned-text-embedding-model",
"modelVersionId": "1"
}
המאמרים הבאים
- כדי לקבל מסקנות לגבי הטמעות של קבוצות, אפשר לעיין במאמר קבלת מסקנות לגבי הטמעות של קבוצות טקסט
- מידע נוסף על הטמעות multimodal זמין במאמר קבלת הטמעות multimodal
- למידע על תרחישי שימוש שמבוססים על טקסט בלבד (חיפוש סמנטי מבוסס-טקסט, אשכולות, ניתוח מסמכים ארוכים ותרחישי שימוש אחרים של אחזור טקסט או מענה לשאלות), אפשר לקרוא את המאמר קבלת הטמעות טקסט.