מדריך לכוונון עדין

במדריך הזה נסביר איך להתחיל להשתמש בשירות לכוונון של Gemini API באמצעות ה-SDK ל-Python או באמצעות ה-API ל-REST באמצעות curl. בדוגמאות מוסבר איך לשפר את מודל הטקסט שמאחורי שירות היצירה של טקסט ב-Gemini API.

הצגה ב-ai.google.dev רוצים לנסות notebook של Colab? הצגת ה-notebook ב-GitHub

מגבלות

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

כוונון עדין של מערכי נתונים

כשמשנים את מערכי הנתונים של Gemini 1.5 Flash, יש מגבלות הבאות:

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

מודלים מותאמים

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

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

לפני שמתחילים: מגדירים את הפרויקט ומפתח ה-API

לפני שמפעילים את Gemini API, צריך להגדיר את הפרויקט ולהגדיר את מפתח ה-API.

הצגת רשימה של מודלים שעברו כוונון

אפשר לבדוק את המודלים המכווננים הקיימים באמצעות השיטה tunedModels.list.

from google import genai
client = genai.Client() # Get the key from the GOOGLE_API_KEY env variable

for model_info in client.models.list():
    print(model_info.name)

יצירת מודל שעבר כוונון

כדי ליצור מודל שעבר כוונון, צריך להעביר את מערך הנתונים למודל בשיטה tunedModels.create.

בדוגמה הזו, תכווננו מודל כדי ליצור את המספר הבא ברצף. לדוגמה, אם הקלט הוא 1, הפלט של המודל אמור להיות 2. אם הקלט הוא one hundred, הפלט אמור להיות one hundred one.

# create tuning model
training_dataset =  [
    ["1", "2"],
    ["3", "4"],
    ["-3", "-2"],
    ["twenty two", "twenty three"],
    ["two hundred", "two hundred one"],
    ["ninety nine", "one hundred"],
    ["8", "9"],
    ["-98", "-97"],
    ["1,000", "1,001"],
    ["10,100,000", "10,100,001"],
    ["thirteen", "fourteen"],
    ["eighty", "eighty one"],
    ["one", "two"],
    ["three", "four"],
    ["seven", "eight"],
]
training_dataset=types.TuningDataset(
        examples=[
            types.TuningExample(
                text_input=i,
                output=o,
            )
            for i,o in training_dataset
        ],
    )
tuning_job = client.tunings.tune(
    base_model='models/gemini-1.0-pro-001',
    training_dataset=training_dataset,
    config=types.CreateTuningJobConfig(
        epoch_count= 5,
        batch_size=4,
        learning_rate=0.001,
        tuned_model_display_name="test tuned model"
    )
)

# generate content with the tuned model
response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III',
)

print(response.text)

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

ניסיון של המודל

כדי לבדוק את הביצועים של המודל המכוונן, אפשר להשתמש ב-method‏ tunedModels.generateContent ולציין את השם שלו.

response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III'
)

לא מיושם

חלק מהתכונות (דיווח על התקדמות, עדכון התיאור ומחיקה של מודלים מותאמים) עדיין לא יושמו ב-SDK החדש.