בדף הזה מוסבר איך לכוונן מודלים של הטמעת טקסט.
מודלים בסיסיים של הטמעה מאומנים מראש על קבוצת נתונים עצומה של טקסט, ומספקים בסיס חזק למשימות רבות. בתרחישים שבהם נדרש ידע מיוחד או ביצועים מותאמים אישית, כוונון המודל מאפשר לכם לשפר את הייצוגים של המודל באמצעות הנתונים הרלוונטיים שלכם. אפשר לכוונן את המודלים הבאים להטמעת טקסט:
לחצו כדי להרחיב את רשימת המודלים הנתמכים
text-embedding-004text-embedding-005text-multilingual-embedding-002
מודלים של הטמעת טקסט תומכים בכוונון מפוקח. בכוונון בפיקוח משתמשים בדוגמאות מתויגות שמדגימות את סוג הפלט שרוצים לקבל מהמודל להטמעת טקסט במהלך ההסקה.
שיפור צפוי באיכות
פלטפורמת הסוכנים של Gemini Enterprise משתמשת בשיטת כוונון יעילה של פרמטרים להתאמה אישית. המתודולוגיה הזו מראה שיפורים משמעותיים באיכות של עד 41% (בממוצע 12%) בניסויים שבוצעו בקבוצות נתונים ציבוריות להשוואה של אחזור.
תרחיש לדוגמה לכוונון של מודל הטמעה
כוונון של מודל הטמעות טקסט יכול לאפשר למודל להתאים את ההטמעות לדומיין או למשימה ספציפיים. האפשרות הזו יכולה להיות שימושית אם המודל המוטמע שאומן מראש לא מתאים לצרכים הספציפיים שלכם. לדוגמה, אתם יכולים לשפר מודל הטמעות באמצעות קבוצת נתונים ספציפית של כרטיסי תמיכה בלקוחות של החברה שלכם. כך הצ'אט בוט יוכל להבין את הסוגים השונים של בעיות בתמיכת הלקוחות שיש ללקוחות שלכם בדרך כלל, ולענות על השאלות שלהם בצורה יעילה יותר. בלי כוונון, המודל לא מכיר את הפרטים הספציפיים של כרטיסי התמיכה של הלקוחות שלכם או את הפתרונות לבעיות ספציפיות במוצר שלכם.
תהליך העבודה של הכוונון
תהליך העבודה של כוונון המודל ב-Gemini Enterprise Agent Platform הוא:
- מכינים את מערך הנתונים לכוונון המודל.
- מעלים את קבוצת הנתונים לכוונון המודל לקטגוריה של Cloud Storage.
- מגדירים את הפרויקט ל-Gemini Enterprise Agent Platform Pipelines.
- יוצרים משימת כוונון מודל.
- פורסים את המודל המכוונן בנקודת קצה של 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 Studio offers a Google Cloud console tool for rapidly prototyping and testing generative AI models. Learn how you can use Agent 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 Pipelines
הכוונון מתבצע בפרויקט שלכם באמצעות הפלטפורמה 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
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
כדי ליצור משימת כוונון של מודל הטמעה, משתמשים ב-method 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
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python שמפורטות במאמר התחלה מהירה של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
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.
- לוחצים על Create run כדי לפתוח את החלונית Create pipeline run.
- לוחצים על בחירה מתוך צינורות עיבוד נתונים קיימים ומזינים את הפרטים הבאים:
- בתפריט הנפתח 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, לוחצים על Browse כדי לבחור את הקטגוריה של Cloud Storage שבה יישמרו פריטי המידע שנוצרו בפלט של צינור עיבוד הנתונים, ואז לוחצים על Select.
- בקטע Pipeline parameters, מציינים את הפרמטרים של צינור עיבוד הנתונים לכוונון. שלושת הפרמטרים הנדרשים הם
corpus_path,queries_pathו-train_label_path, והפורמטים שלהם מתוארים במאמר הכנת קבוצת הנתונים של ההטמעות. מידע מפורט יותר על כל פרמטר זמין בכרטיסייה REST בקטע הזה. - לוחצים על Submit כדי ליצור את הרצת צינור עיבוד הנתונים.
תכונות נתמכות אחרות
כוונון הטמעת הטקסט תומך ב-VPC Service Controls, ואפשר להגדיר אותו כך שיפעל בתוך ענן וירטואלי פרטי (VPC) על ידי העברת הפרמטר network כשיוצרים את PipelineJob.
כדי להשתמש במפתחות הצפנה בניהול הלקוח (CMEK), מעבירים את המפתח לפרמטר של צינור עיבוד הנתונים parameterValues.encryption_spec_key_name, וגם לפרמטר encryptionSpec.kmsKeyName כשיוצרים את PipelineJob.
שימוש במודל המכוונן
הצגת מודלים מכווננים ב-Model Registry
כשמשימת הכוונון מסתיימת, המודל המכוונן לא נפרס באופן אוטומטי בנקודת קצה. הוא יהיה זמין כמשאב של מודל במרשם המודלים. אתם יכולים לראות את רשימת המודלים בפרויקט הנוכחי, כולל המודלים המכווננים, באמצעות מסוףGoogle Cloud .
כדי לראות את המודלים המכווננים במסוף Google Cloud , נכנסים לדף Gemini Enterprise Agent Platform Model Registry.
מעבר אל Gemini Enterprise Agent Platform Model Registry
פריסת המודל
אחרי שאתם מכווננים את מודל ההטמעות, אתם צריכים לפרוס את משאב המודל. כדי לפרוס את מודל ההטמעות שעבר כוונון, קראו את המאמר פריסת מודל בנקודת קצה.
בניגוד למודלים בסיסיים, המשתמש מנהל את המודלים המכווננים להטמעת טקסט.
זה כולל ניהול של משאבי הצגה, כמו סוג המכונה ומאיצים.
כדי למנוע שגיאות של מחסור בזיכרון במהלך ההסקה, מומלץ לפרוס באמצעות סוג ה-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"
}
המאמרים הבאים
- כדי לקבל הסקות באצווה להטמעות, ראו קבלת הסקות באצווה להטמעות טקסט
- איך יוצרים הטמעות מולטי-מודאליות
- כדי לקבל מידע על תרחישי שימוש בטקסט בלבד (חיפוש סמנטי מבוסס-טקסט, קיבוץ, ניתוח מסמכים ארוכים ותרחישי שימוש אחרים של אחזור טקסט או מענה על שאלות), קראו את המאמר קבלת הטמעות טקסט.