כוונון בעזרת Gemini API

אסטרטגיות לתכנון הנחיות, כמו הנחיות ב-few-shot, לא תמיד מניבות את התוצאות שאתם צריכים. התאמה אישית היא תהליך שיכול לשפר את הביצועים של המודל במשימות ספציפיות, או לעזור למודל לעמוד בדרישות ספציפיות של תוצאות כשההוראות לא מספיקות ויש לכם קבוצה של דוגמאות שממחישות את התוצאות הרצויות.

בדף הזה נספק סקירה כללית קונספטואלית של כוונון דגם הטקסט שמאחורי שירות הטקסט של Gemini API. כשתהיו מוכנים להתחיל לבצע שינויים, תוכלו לעיין במדריך לשיפור נוסף. למבוא כללי יותר להתאמה אישית של מודלים גדולים של שפה (LLM) לתרחישי שימוש ספציפיים, תוכלו לקרוא את המאמר מודלים גדולים של שפה (LLM): כוונון, זיקוק ותכנון של הנחיות בקורס המקוצר על למידת מכונה.

איך פועלת ההתאמה האישית

מטרת השיפור הוא לשפר את ביצועי המודל למשימה הספציפית שלכם. כדי לבצע שינוי מדויק, מספקים למודל מערך נתונים לאימון שמכיל הרבה דוגמאות למשימה. במשימות נישה, אפשר לשפר באופן משמעותי את ביצועי המודל על ידי התאמת המודל למספר מצומצם של דוגמאות. לפעמים קוראים לסוג הזה של כוונון מודל כוונון עדין בפיקוח, כדי להבדיל אותו מסוגים אחרים של כוונון עדין.

נתוני האימון צריכים להיות בנויים כדוגמאות עם קלט של הנחיות ופלט של תשובות צפויות. אפשר גם לשפר את המודלים באמצעות נתוני דוגמה ישירות ב-Google AI Studio. המטרה היא ללמד את המודל לחקות את ההתנהגות או את המשימה הרצויה, על ידי מתן דוגמאות רבות שממחישות את ההתנהגות או את המשימה הזו.

כשמריצים משימה של כוונון, המודל לומד פרמטרים נוספים שעוזרים לו לקודד את המידע הנדרש לביצוע המשימה הרצויה או ללמוד את ההתנהגות הרצויה. לאחר מכן אפשר להשתמש בפרמטרים האלה בזמן ההסקה. הפלט של משימה כוונון הוא מודל חדש, שהוא למעשה שילוב של הפרמטרים שנלמדו לאחרונה והמודל המקורי.

הכנת מערך הנתונים

לפני שמתחילים לבצע שיפורים, צריך מערך נתונים שבעזרתו אפשר לשפר את המודל. כדי ליהנות מהביצועים הכי טובים, הדוגמאות במערך הנתונים צריכות להיות איכותיות, מגוונות ומייצגות את הקלט והפלט האמיתיים.

פורמט

הדוגמאות שכלולות במערך הנתונים צריכות להתאים לתנועה הצפויה בסביבת הייצור. אם מערך הנתונים מכיל פורמט, מילות מפתח, הוראות או מידע ספציפיים, הפורמט של נתוני הייצור צריך להיות זהה ולכלול את אותן ההוראות.

לדוגמה, אם הדוגמאות במערך הנתונים כוללות את השדות "question:" ו-"context:", גם התנועה בסביבת הייצור צריכה להיות בפורמט שכולל את השדות "question:" ו-"context:" באותו הסדר שבו הם מופיעים בדוגמאות במערך הנתונים. אם תחרגו את ההקשר, המודל לא יוכל לזהות את הדפוס, גם אם השאלה המדויקת הופיעה בדוגמה במערך הנתונים.

דוגמה נוספת: אלה נתוני אימון ב-Python לאפליקציה שיוצרת את המספר הבא ברצף:

training_data = [
  {"text_input": "1", "output": "2"},
  {"text_input": "3", "output": "4"},
  {"text_input": "-3", "output": "-2"},
  {"text_input": "twenty two", "output": "twenty three"},
  {"text_input": "two hundred", "output": "two hundred one"},
  {"text_input": "ninety nine", "output": "one hundred"},
  {"text_input": "8", "output": "9"},
  {"text_input": "-98", "output": "-97"},
  {"text_input": "1,000", "output": "1,001"},
  {"text_input": "10,100,000", "output": "10,100,001"},
  {"text_input": "thirteen", "output": "fourteen"},
  {"text_input": "eighty", "output": "eighty one"},
  {"text_input": "one", "output": "two"},
  {"text_input": "three", "output": "four"},
  {"text_input": "seven", "output": "eight"},
]

הוספת הנחיה או מבוא לכל דוגמה במערך הנתונים יכולה גם היא לשפר את הביצועים של המודל המכוונן. הערה: אם הנחיה או מבוא כלולים בקבוצת הנתונים, צריך לכלול אותם גם בהנחיה שמוצגת למודל המכוונן בזמן ההסקה.

מגבלות

הערה: לערכות נתונים של כוונון מדויק ב-Gemini 1.5 Flash יש את המגבלות הבאות:

  • הגודל המקסימלי של קלט לכל דוגמה הוא 40,000 תווים.
  • הגודל המקסימלי של הפלט לכל דוגמה הוא 5,000 תווים.

גודל נתוני האימון

אפשר לבצע כוונון עדין של מודל באמצעות 20 דוגמאות בלבד. בדרך כלל, נתונים נוספים משפרים את איכות התשובות. מומלץ לטרגט בין 100 ל-500 דוגמאות, בהתאם לאפליקציה. בטבלה הבאה מפורטים גדלים מומלצים של מערכי נתונים לצורך כוונון מדויק של מודל טקסט למשימות נפוצות שונות:

משימה מספר הדוגמאות במערך הנתונים
סיווג 100+
סיכום 100-500+
חיפוש מסמכים 100+

העלאת מערך הנתונים לכוונון

הנתונים מועברים בתוך שורת קוד באמצעות ה-API או דרך קבצים שהועלו ב-Google AI Studio.

כדי להשתמש בספריית הלקוח, צריך לספק את קובץ הנתונים בקריאה ל-createTunedModel. גודל הקובץ המקסימלי הוא 4MB. כדי להתחיל, מומלץ לעיין במדריך למתחילים בנושא כוונון מדויק באמצעות Python.

כדי לקרוא ל-API ל-REST באמצעות cURL, צריך לספק דוגמאות לאימון בפורמט JSON לארגומנט training_data. כדי להתחיל, אפשר לעיין במדריך למתחילים בנושא התאמה אישית באמצעות cURL.

הגדרות כיוונון מתקדמות

כשיוצרים משימה של כוונון, אפשר לציין את ההגדרות המתקדמות הבאות:

  • Epochs: מעבר אימון מלא על כל קבוצת האימון, כך שכל דוגמה עוברת עיבוד פעם אחת.
  • Batch size:קבוצת הדוגמאות שנעשה בהן שימוש במחזור אחד של אימון. גודל האצווה קובע את מספר הדוגמאות באצווה.
  • שיעור למידה: מספר עם נקודה צפה שמציין לאלגוריתם את מידת ההתאמה של פרמטרים של המודל בכל חזרה. לדוגמה, שיעור למידה של 0.3 יתאים את המשקלים וההטיות בצורה חזקה פי שלושה מאשר שיעור למידה של 0.1. לשיעורי למידה גבוהים ונמוכים יש יתרונות וחסרונות ייחודיים משלהם, וצריך לשנות אותם בהתאם לתרחיש לדוגמה.
  • מכפיל של קצב הלמידה: מכפיל הקצב משנה את קצב הלמידה המקורי של המודל. כשהערך הוא 1, המערכת משתמשת בשיעור הלמידה המקורי של המודל. ערכים גדולים מ-1 מגדילים את קצב הלמידה, וערכים בין 1 ל-0 מקטינים את קצב הלמידה.

בטבלה הבאה מפורטות ההגדרות המומלצות לשיפור מודל הבסיס:

היפר-פרמטר ערך ברירת מחדל התאמות מומלצות
Epoch 5

אם האובדן מתחיל להגיע לשיא לפני 5 מחזורי אימון, צריך להשתמש בערך קטן יותר.

אם ההפסד מתקרב לערך מסוים ולא נראה שהוא יגיע לשיא, צריך להשתמש בערך גבוה יותר.

גודל האצווה 4
קצב למידה 0.001 כדאי להשתמש בערך קטן יותר למערכי נתונים קטנים יותר.

בעקומת האובדן מוצגת מידת ההטיה של התחזית של המודל מהתחזיות האידיאליות בדוגמאות האימון אחרי כל תקופת אימון. באופן אידיאלי, כדאי להפסיק את האימון בנקודה הנמוכה ביותר בגרף, ממש לפני שהוא מגיע לפסגה. לדוגמה, בגרף הבא אפשר לראות שגרף האובדן מגיע לשיא בסביבות 4-6 מחזורים, כלומר אפשר להגדיר את הפרמטר Epoch ל-4 ועדיין לקבל את אותם ביצועים.

תרשים קו שבו מוצגת עקומת ההפסד של המודל. יש עלייה חדה בקו בין התקופה הראשונה לתקופה השנייה, ואז ירידה חדה כמעט ל-0, ואז הוא מתייצב אחרי שלוש תקופות.

בדיקת הסטטוס של משימת ההתאמה

אפשר לבדוק את סטטוס המשימה של כוונון המודל ב-Google AI Studio בכרטיסייה My Library, או באמצעות המאפיין metadata של המודל המכוונן ב-Gemini API.

פתרון בעיות במקרה של שגיאות

בקטע הזה מפורטות דרכים לפתרון שגיאות שעשויות להתרחש במהלך יצירת המודל המכוונן.

אימות

כדי לבצע התאמה באמצעות ה-API וספריית הלקוח, נדרש אימות. אפשר להגדיר אימות באמצעות מפתח API (מומלץ) או באמצעות פרטי כניסה ל-OAuth. במאמר הגדרת מפתח API מוסבר איך מגדירים מפתח API.

אם מופיעה השגיאה 'PermissionDenied: 403 Request had insufficient authentication scopes', יכול להיות שתצטרכו להגדיר אימות משתמשים באמצעות פרטי כניסה של OAuth. כדי להגדיר את פרטי הכניסה ל-OAuth ב-Python, אפשר לעיין במדריך להגדרת OAuth.

מודלים שבוטלו

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

מגבלות של מודלים מותאמים

הערה: למודלים מותאמים יש את המגבלות הבאות:

  • מגבלת הקלט של מודל Gemini 1.5 Flash מכוונן היא 40,000 תווים.
  • אין תמיכה במצב JSON עם מודלים מותאמים.
  • אין תמיכה בהוראות מערכת במודלים שעברו כוונון.
  • יש תמיכה רק בהזנת טקסט.

המאמרים הבאים

כדאי להתחיל עם המדריכים לשיפור הנתונים: