שימוש בכוונון מתמשך של מודלים של Gemini

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

אפשר להשתמש בכוונון מתמשך למטרות הבאות:

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

המודלים הבאים של Gemini תומכים בכוונון מתמשך:

לחצו כדי להרחיב את רשימת המודלים הנתמכים

מידע מפורט על גרסאות של מודלים של Gemini זמין במאמרים מודלים של Google וגרסאות של מודלים ומחזור החיים שלהם.

הגדרת כוונון רציף

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

  • התאמה מתמשכת נתמכת ב-Google Gen AI SDK. היא לא נתמכת ב-Agent Platform SDK ל-Python.
  • חובה לציין שם משאב של מודל:

    • במסוף Google Cloud , שם המשאב של המודל מופיע בדף Gemini Enterprise Agent Platform Tuning בשדה Tuning details > Model Name.
    • הפורמט של שם המשאב של המודל הוא:
    projects/{project}/locations/{location}/models/{modelId}@{version_id}
    
    • הפרמטר {version_id} הוא אופציונלי, והוא יכול להיות מזהה הגרסה שנוצר או כינוי גרסה שסופק על ידי המשתמש. אם לא מציינים גרסה, המערכת משתמשת בגרסת ברירת המחדל.
  • אם לא מציינים גרסת מודל, המערכת משתמשת בגרסת ברירת המחדל.

  • אם משתמשים בנקודת ביקורת כמודל בסיס ולא מציינים מזהה של נקודת ביקורת, המערכת משתמשת בנקודת הביקורת שמוגדרת כברירת מחדל. מידע נוסף זמין במאמר בנושא שימוש בנקודות ביקורת בכוונון מפוקח (SFT) של מודלי Gemini. במסוף Google Cloud , אפשר למצוא את נקודת הבדיקה שמוגדרת כברירת מחדל באופן הבא:

    1. עוברים לדף מרשם המודלים.
    2. לוחצים על שם המודל של המודל.
    3. לוחצים על הצגת כל הגרסאות.
    4. לוחצים על הגרסה הרצויה כדי לראות רשימה של נקודות ביקורת. נקודת הבדיקה שמוגדרת כברירת מחדל מסומנת במילה default לצד מזהה נקודת הבדיקה.
  • כברירת מחדל, גרסת מודל חדשה נוצרת באותו מודל אב כמו המודל שעבר התאמה. אם מספקים שם חדש לתצוגה של מודל שעבר התאמה, נוצר מודל חדש.

  • אפשר להשתמש רק במודלים בסיסיים מכווננים בפיקוח שעברו כוונון ב-11 ביולי 2025 או אחריו כמודלים בסיסיים לכוונון מתמשך.

  • אם אתם משתמשים במפתחות הצפנה בניהול הלקוח (CMEK), אתם צריכים להשתמש באותו מפתח CMEK שבו השתמשתם במשימת ההתאמה של המודל שעבר התאמה מראש.

המסוף

כדי להגדיר כוונון מתמשך למודל שעבר כוונון מראש באמצעות מסוףGoogle Cloud :

  1. בקטע Gemini Enterprise Agent Platform במסוף Google Cloud , עוברים לדף Agent Platform Studio.

    אל Agent Platform Studio

  2. לוחצים על יצירת מודל שעבר התאמה.

  3. בקטע פרטי המודל, מגדירים את האפשרויות הבאות:

    1. בוחרים באפשרות שיפור של מודל שכבר שופר.
    2. בשדה Pre-tuned model (מודל שעבר התאמה מראש), בוחרים את השם של המודל שעבר התאמה מראש.
    3. אם למודל יש לפחות נקודת ביקורת אחת, מופיע שדה התפריט הנפתח Checkpoint. בוחרים את נקודת הבדיקה הרצויה.
  4. לוחצים על Continue.

REST

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

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

ה-method של ה-HTTP וכתובת ה-URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

גוף בקשת JSON:

{
  "preTunedModel": {
      "tunedModelName": "TUNED_MODEL_NAME",
      "checkpointId": "CHECKPOINT_ID",
  },
  "supervisedTuningSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
      "hyperParameters": {
          "epochCount": EPOCH_COUNT,
          "adapterSize": "ADAPTER_SIZE",
          "learningRateMultiplier": "LEARNING_RATE_MULTIPLIER"
      },
      "exportLastCheckpointOnly": EXPORT_LAST_CHECKPOINT_ONLY,
      "evaluationConfig": {
          "metrics": [
              {
                  "aggregation_metrics": ["AVERAGE", "STANDARD_DEVIATION"],
                  "METRIC_SPEC": {
                      "METRIC_SPEC_FIELD_NAME":
                          METRIC_SPEC_FIELD_CONTENT
                  }
              },
          ],
          "outputConfig": {
              "gcs_destination": {
                  "output_uri_prefix": "CLOUD_STORAGE_BUCKET"
              }
          },
      },
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME",
  "encryptionSpec": {
    "kmsKeyName": "KMS_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT"
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

דוגמה לפקודת 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 \
$'{
   "preTunedModel": "gemini-3.5-flash",
   "supervisedTuningSpec" : {
      "trainingDatasetUri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
      "validationDatasetUri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

Google Gen AI SDK

בדוגמה הבאה מוצג איך להגדיר כוונון מתמשך באמצעות Google Gen AI SDK.

import time

from google import genai
from google.genai.types import HttpOptions, TuningDataset, CreateTuningJobConfig

# TODO(developer): Update and un-comment below line
# tuned_model_name = "projects/123456789012/locations/us-central1/models/1234567890@1"
# checkpoint_id = "1"

client = genai.Client(http_options=HttpOptions(api_version="v1beta1"))

training_dataset = TuningDataset(
    gcs_uri="gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
)
validation_dataset = TuningDataset(
    gcs_uri="gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_validation_data.jsonl",
)

tuning_job = client.tunings.tune(
    base_model=tuned_model_name,  # Note: Using a Tuned Model
    training_dataset=training_dataset,
    config=CreateTuningJobConfig(
        tuned_model_display_name="Example tuning job",
        validation_dataset=validation_dataset,
        pre_tuned_model_checkpoint_id=checkpoint_id,
    ),
)

running_states = set([
    "JOB_STATE_PENDING",
    "JOB_STATE_RUNNING",
])

while tuning_job.state in running_states:
    print(tuning_job.state)
    tuning_job = client.tunings.get(name=tuning_job.name)
    time.sleep(60)

print(tuning_job.tuned_model.model)
print(tuning_job.tuned_model.endpoint)
print(tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@2
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# projects/123456789012/locations/us-central1/metadataStores/default/contexts/tuning-experiment-2025010112345678

if tuning_job.tuned_model.checkpoints:
    for i, checkpoint in enumerate(tuning_job.tuned_model.checkpoints):
        print(f"Checkpoint {i + 1}: ", checkpoint)
    # Example response:
    # Checkpoint 1:  checkpoint_id='1' epoch=1 step=10 endpoint='projects/123456789012/locations/us-central1/endpoints/123456789000000'
    # Checkpoint 2:  checkpoint_id='2' epoch=2 step=20 endpoint='projects/123456789012/locations/us-central1/endpoints/123456789012345'