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

במדריך הזה נסביר איך להתחיל להשתמש בשירות לכוונון של 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.

import google.generativeai as genai

for model_info in genai.list_tuned_models():
    print(model_info.name)

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

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

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

import google.generativeai as genai

import time

base_model = "models/gemini-1.5-flash-001-tuning"
training_data = [
    {"text_input": "1", "output": "2"},
    # ... more examples ...
    # ...
    {"text_input": "seven", "output": "eight"},
]
operation = genai.create_tuned_model(
    # You can use a tuned model here too. Set `source_model="tunedModels/..."`
    display_name="increment",
    source_model=base_model,
    epoch_count=20,
    batch_size=4,
    learning_rate=0.001,
    training_data=training_data,
)

for status in operation.wait_bar():
    time.sleep(10)

result = operation.result()
print(result)
# # You can plot the loss curve with:
# snapshots = pd.DataFrame(result.tuning_task.snapshots)
# sns.lineplot(data=snapshots, x='epoch', y='mean_loss')

model = genai.GenerativeModel(model_name=result.name)
result = model.generate_content("III")
print(result.text)  # IV

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

כיוון שיכול להיות שיחלפו זמן רב עד שההתאמה של המודל תסתיים, ה-API הזה לא מחכה להשלמת ההתאמה. במקום זאת, היא מחזירה אובייקט google.api_core.operation.Operation שמאפשר לכם לבדוק את הסטטוס של משימה כוונון, או להמתין עד שהיא תושלם ולבדוק את התוצאה.

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

בדיקת התקדמות ההתאמה

אפשר לבדוק את ההתקדמות של פעולת הכוונון באמצעות השיטה wait_bar():

for status in operation.wait_bar():
    time.sleep(10)

אפשר גם להשתמש ב-operation.metadata כדי לבדוק את המספר הכולל של שלבי ההתאמה, וב-operation.update() כדי לרענן את סטטוס הפעולה.

אפשר לבטל את משימת הכוונון מתי שרוצים באמצעות השיטה cancel().

operation.cancel()

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

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

import google.generativeai as genai

model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text)  # "IV"

עדכון התיאור

אפשר לעדכן את התיאור של המודל המכוונן בכל שלב באמצעות השיטה genai.update_tuned_model.

genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})

מחיקת המודל

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

genai.delete_tuned_model("tunedModels/my-increment-model")