במאמר הזה מוסבר איך לבצע כוונון לפי העדפות במודל Gemini.
לפני שמתחילים
לפני שמתחילים, צריך להכין מערך נתונים לפי ההוראות במאמר הכנת נתונים לכוונון לפי העדפות במודלים של Gemini.
יצירת משימת כוונון
המסוף
כדי להגדיר כוונון העדפות באמצעות מסוף Cloud de Confiance :
בקטע Gemini Enterprise Agent Platform במסוף Cloud de Confiance , נכנסים לדף Tuning.
לוחצים על Create tuned model.
לוחצים על כוונון ההעדפות.
בקטע Model details, קובעים את ההגדרות הבאות:
- בשדה Tuned model name, נותנים שם למודל המכוונן החדש (עד 128 תווים).
- בשדה Base model, בוחרים את מודל הבסיס שרוצים לכוונן.
- בשדה הנפתח Region, בוחרים את האזור שבו פועלת משימת הכוונון של צינור עיבוד הנתונים ושבו נפרס המודל המכוונן.
בקטע Tuning setting, קובעים את ההגדרות הבאות:
- בשדה Number of epochs, מזינים את מספר השלבים להרצה של כוונון המודל.
- בשדה Adapter Size, מזינים את גודל המתאם שבו רוצים להשתמש לכוונון המודל.
- אופציונלי: בשדה בטא, מזינים את ערך הבטא הרצוי. Beta הוא המקדם שקובע עד כמה המודל המכוונן תואם למודל הבסיס שלו.
- בשדה Learning rate multiplier, מזינים את גודל השלב בכל איטרציה. ערך ברירת המחדל הוא 1. .
אופציונלי: כדי להשבית את נקודות הביקורת האמצעיות ולהשתמש רק בנקודת הביקורת האחרונה, לוחצים על המתג Export last checkpoint only.
לוחצים על Continue.
הדף Tuning dataset נפתח.
כדי להעלות קובץ של מערך נתונים, בוחרים באחת מהאפשרויות הבאות:
- אם עדיין לא העליתם מערך נתונים, לחצו על כפתור הבחירה Upload file to Cloud Storage.
- בשדה Select JSONL file, לוחצים על Browse ובוחרים את קובץ מערך הנתונים.
- בשדה Dataset location, לוחצים על Browse ובוחרים את הקטגוריה של Cloud Storage שבה רוצים לאחסן את קובץ מערך הנתונים.
- אם קובץ מערך הנתונים כבר נמצא בקטגוריה של Cloud Storage, בוחרים באפשרות Existing file on Cloud Storage.
- בשדה Cloud Storage file path, לוחצים על Browse ובוחרים את הקטגוריה של Cloud Storage שבה נמצא קובץ מערך הנתונים.
(אופציונלי) כדי לקבל מדדי אימות במהלך האימון, לוחצים על המתג Enable model validation.
- בשדה Validation dataset, מזינים את הנתיב של מערך נתוני האימות ב-Cloud Storage.
לוחצים על התחלת הכוונון.
המודל החדש מופיע בקטע Managed tuning בדף Tune and Distill. כשהכוונון של המודל מסתיים, הסטטוס משתנה ל-Succeeded.
REST
כדי ליצור משימת כוונון של מודל, שולחים בקשת POST באמצעות ה-method tuningJobs.create. חלק מהפרמטרים לא נתמכים בכל המודלים. חשוב לכלול רק את הפרמטרים הרלוונטיים למודל שאתם מכווננים.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- TUNING_JOB_REGION: האזור שבו פועלת משימת הכוונון. זה גם האזור שבו המודל המכוונן מועלה כברירת מחדל.
- BASE_MODEL: השם של מודל הבסיס לכוונון.
- TRAINING_DATASET_URI: ה-URI של מערך נתוני האימון ב-Cloud Storage. קבוצת הנתונים צריכה להיות בפורמט של קובץ JSONL. כדי לקבל את התוצאות הכי טובות, מומלץ לספק בין 100 ל-500 דוגמאות. מידע נוסף זמין במאמר מידע על מערכי נתונים לכוונון בפיקוח .
- VALIDATION_DATASET_URIאופציונלי: ה-URI של Cloud Storage של קובץ מערך הנתונים לאימות.
- EPOCH_COUNTאופציונלי: מספר המעברים המלאים שהמודל מבצע על כל מערך הנתונים לאימון במהלך האימון. אם לא מגדירים את המדיניות, המערכת משתמשת בערך המומלץ שמאוכלס מראש.
- BETAאופציונלי: המקדם שקובע עד כמה המודל המכוונן תואם למודל הבסיס שלו.
- ADAPTER_SIZEאופציונלי: גודל המתאם שבו משתמשים במשימת הכוונון. גודל המתאם משפיע על מספר הפרמטרים שאפשר לאמן במשימת הכוונון. ככל שהמתאם גדול יותר, המודל יכול ללמוד משימות מורכבות יותר, אבל נדרשת קבוצת נתונים גדולה יותר לאימון וזמני האימון ארוכים יותר.
- LEARNING_RATE_MULTIPLIER: אופציונלי: מכפיל שיוחל על קצב הלמידה המומלץ. אם לא מגדירים את המדיניות, המערכת משתמשת בערך המומלץ.
- EXPORT_LAST_CHECKPOINT_ONLYאופציונלי: מגדירים את הערך
trueכדי להשתמש רק בנקודת השמירה האחרונה. - TUNED_MODEL_DISPLAYNAMEאופציונלי: שם לתצוגה של המודל המכוונן. אם לא מגדירים שם, המערכת יוצרת שם אקראי.
- KMS_KEY_NAMEאופציונלי: מזהה המשאב ב-Cloud KMS של מפתח ההצפנה בניהול הלקוח שמשמש להגנה על משאב. המפתח הוא בפורמט:
projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. המפתח צריך להיות באותו אזור שבו נוצר משאב המחשוב. מידע נוסף זמין במאמר מפתחות הצפנה בניהול הלקוח (CMEK). - SERVICE_ACCOUNTאופציונלי: חשבון השירות שבו פועל עומס העבודה של tuningJob. אם לא מציינים סוכן שירות, המערכת משתמשת בסוכן השירות Agent Platform Secure Fine-Tuning בפרויקט. סוכן שירות לכוונון אם אתם מתכננים להשתמש בחשבון שירות בניהול הלקוח, אתם צריכים להקצות לחשבון השירות את התפקיד
roles/aiplatform.tuningServiceAgent. צריך גם להקצות את התפקיד סוכן שירות לכוונון (roles/iam.serviceAccountTokenCreator) לחשבון השירות בניהול הלקוח.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
תוכן בקשת JSON:
{
"baseModel": "BASE_MODEL",
"preferenceOptimizationSpec" : {
"trainingDatasetUri": "TRAINING_DATASET_URI",
"validationDatasetUri": "VALIDATION_DATASET_URI",
"hyperParameters": {
"epochCount": "EPOCH_COUNT",
"beta": "BETA",
"adapterSize": "ADAPTER_SIZE",
"learningRateMultiplier": "LEARNING_RATE_MULTIPLIER"
},
"exportLastCheckpointOnly": EXPORT_LAST_CHECKPOINT_ONLY,
},
"tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME",
"encryptionSpec": {
"kmsKeyName": "KMS_KEY_NAME"
},
"serviceAccount": "SERVICE_ACCOUNT"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
דוגמה לפקודת curl
PROJECT_ID=myproject
LOCATION=global
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/tuningJobs" \
-d \
$'{
"baseModel": "${BASE_MODEL}",
"preferenceOptimizationSpec" : {
"trainingDatasetUri": "gs://mybucket/preference_tuning/data/train_data.jsonl",
"validationDatasetUri": "gs://mybucket/preference_tuning/data/validation_data.jsonl"
},
"tunedModelDisplayName": "tuned_gemini"
}'
Google Gen AI SDK
כוונון היפר-פרמטרים
מומלץ לשלוח את משימת הכוונון הראשונה בלי לשנות את הפרמטרים של ההיפר. ערך ברירת המחדל הוא הערך המומלץ על סמך תוצאות ההשוואה שלנו, כדי להניב את איכות הפלט הטובה ביותר מהמודל.
- תקופות של זמן מערכת (epoch): מספר המעברים המלאים שהמודל מבצע על כל מערך הנתונים לאימון במהלך האימון. פלטפורמת Gemini Enterprise Agent Platform מתאימה באופן אוטומטי את ערך ברירת המחדל לגודל של מערך הנתונים לאימון. הערך הזה מבוסס על תוצאות של נקודות השוואה (benchmarking) כדי לשפר את איכות הפלט מהמודל.
- Beta: המקדם שקובע עד כמה המודל המכוונן תואם למודל הבסיס שלו. ערך בטא נמוך יותר פירושו עדכונים אגרסיביים יותר לתשובות מועדפות. הטווח המומלץ הוא בין 0.01 ל-0.5, כולל. ערך בטא של 0 מפסיק את הלמידה של המודל.
- גודל המתאם: גודל המתאם שבו משתמשים במשימת הכוונון. גודל המתאם משפיע על מספר הפרמטרים שאפשר לאמן במשימת הכוונון. גודל מתאם גדול יותר מאפשר למודל ללמוד משימות מורכבות יותר, אבל הוא דורש מערך נתונים גדול יותר לאימון וזמני אימון ארוכים יותר.
- מכפיל קצב הלמידה: מכפיל שמוחל על קצב הלמידה המומלץ. אפשר להגדיל את הערך כדי להגיע להתכנסות מהר יותר, או להקטין את הערך כדי להימנע מהתאמת יתר (overfitting).
איך רואים או מבטלים משימת כוונון
כדי להציג רשימה של משימות כוונון, לראות את הפרטים של משימת כוונון, לבטל משימת כוונון או למחוק מודל מכוונן, עיינו בקטעים הבאים במסמכי התיעוד של הכוונון המפוקח:
מדדים של כוונון מודל
משימת כוונון המודל אוספת באופן אוטומטי את מדדי הכוונון הבאים:
-
/preference_optimization_train_loss: אובדן העדפה של מערך הנתונים לכוונון בשלב אימון.
מדדים של אימות מודל
כשמספקים נתוני אימות, משימת כוונון המודל אוספת באופן אוטומטי את מדדי האימות הבאים:
/eval_total_loss: אובדן העדפה של מערך נתוני האימות בשלב אימות.
התרשימים של המדדים זמינים אחרי שמשימת הכוונון מתחילה לפעול. הם מתעדכנים בזמן אמת ככל שהכוונון מתקדם. אם לא תציינו מערך נתונים לאימות כשתצרו את משימת הכוונון, רק התצוגות החזותיות של מדדי הכוונון יהיו זמינות.