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

המדריך הזה יעזור לך להתחיל להשתמש בשירות הכוונון של Gemini API באמצעות Python SDK או 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)

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

כדי ליצור מודל שעבר כוונון, צריך להעביר את dataset את המודל ב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 שמאפשר לכם לבדוק את סטטוס המשימה של כוונון ה-ML או להמתין עד שהיא תושלם ולבדוק את התוצאה.

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

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

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

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

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

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

operation.cancel()

אני רוצה לנסות את המודל

אפשר להשתמש 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")