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

נקודת שמירה היא תמונת מצב של המודל בנקודה מסוימת בתהליך הכוונון. אתם יכולים להשתמש בנקודות ביניים לבדיקה בכוונון של מודל Gemini כדי:

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

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

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

מודלים נתמכים

המודלים הבאים של Gemini תומכים בנקודות ביקורת:

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

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

יצירת משימת כוונון שמייצאת נקודות ביקורת

אתם יכולים ליצור משימת כוונון שמייצאת נקודות ביקורת באמצעות Google Gen AI SDK או מסוף Google Cloud .

המסוף

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

Google Gen AI SDK

(גרסת טרום-השקה) אתם יכולים להגדיר את שירות ההערכה של ה-AI הגנרטיבי כך שיריץ הערכות באופן אוטומטי אחרי כל נקודת ביקורת. הגדרת ההערכה הזו זמינה באזור us-central1.

מתקינים את Google Gen AI SDK:

pip install --upgrade google-genai

מידע נוסף זמין במאמרי העזרה של ה-SDK.

מגדירים משתני סביבה כדי להשתמש ב-Google Gen AI SDK עם Gemini Enterprise Agent Platform:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_ENTERPRISE=True

יוצרים את משימת הכוונון:

import time

from google import genai
from google.genai.types import (
    CreateTuningJobConfig,
    EvaluationConfig,
    GcsDestination,
    HttpOptions,
    Metric,
    OutputConfig,
    TuningDataset,
)

# TODO(developer): Update and un-comment below line
# output_gcs_uri = "gs://your-bucket/your-prefix"

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",
)

evaluation_config = EvaluationConfig(
    metrics=[
        Metric(
            name="FLUENCY",
            prompt_template="""Evaluate this {prediction}"""
        )
    ],
    output_config=OutputConfig(
        gcs_destination=GcsDestination(
            output_uri_prefix=output_gcs_uri,
        )
    ),
)

tuning_job = client.tunings.tune(
    base_model="gemini-3.5-flash",
    training_dataset=training_dataset,
    config=CreateTuningJobConfig(
        tuned_model_display_name="Example tuning job",
        # Set to True to disable tuning intermediate checkpoints. Default is False.
        export_last_checkpoint_only=False,
        validation_dataset=validation_dataset,
        evaluation_config=evaluation_config,
    ),
)

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@1
# 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'

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

אפשר לראות את נקודות הבדיקה של משימת הכוונון שהושלמה במסוףGoogle Cloud או להציג אותן באמצעות Google Gen AI SDK.

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

המסוף

  1. כדי למצוא את המודל המכוונן במסוף Google Cloud , נכנסים לדף Tuning.

    עוברים אל Tuning.

  2. בכרטיסייה Tuning, מוצאים את המודל ולוחצים על Monitor.

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

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

Google Gen AI SDK

from google import genai
from google.genai.types import HttpOptions

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

# Get the tuning job and the tuned model.
# Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
tuning_job = client.tunings.get(name=tuning_job_name)

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'

הצגת פרטי המודל ונקודות הביקורת

אתם יכולים לראות את המודל המכוונן במסוף Google Cloud או להשתמש ב-Google Gen AI SDK כדי לקבל פרטים על המודל, כולל נקודות קצה ונקודות ביקורת.

השדה Endpoint של המודל מתעדכן באופן הבא:

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

המסוף

אתם יכולים לראות את המודל המכוונן ב-Model Registry של פלטפורמת הסוכנים של Gemini Enterprise, בדף נקודות הקצה (endpoint) של החיזוי אונליין.

  1. במסוף Google Cloud , בקטע Agent Platform, נכנסים לדף Model Registry.

    כניסה לדף Model Registry

  2. לוחצים על שם המודל.

    גרסת ברירת המחדל של המודל מופיעה.

  3. לוחצים על הכרטיסייה Version details כדי לראות מידע על גרסת המודל.

    שימו לב שהערך של Objective הוא Large model, הערך של Model type הוא Foundation והערך של Source הוא Agent Studio tuning.

  4. לוחצים על הכרטיסייה Deploy & test כדי לראות את נקודת הקצה שבה המודל פרוס.

  5. לוחצים על שם נקודת הקצה כדי לעבור לדף Endpoint ולראות את רשימת נקודות הבדיקה שנפרסו בנקודת הקצה. לכל נקודת בקרה מוצגים מזהה גרסת המודל ומזהה נקודת הבקרה. נקודת הבקרה שמוגדרת כברירת מחדל מסומנת במילה default לצד המזהה של נקודת הבקרה.

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

לדף Tuning

Google Gen AI SDK

from google import genai
from google.genai.types import HttpOptions

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

# Get the tuning job and the tuned model.
# Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
tuning_job = client.tunings.get(name=tuning_job_name)
tuned_model = client.models.get(model=tuning_job.tuned_model.model)
print(tuned_model)
# Example response:
# Model(name='projects/123456789012/locations/us-central1/models/1234567890@1', ...)

print(f"Default checkpoint: {tuned_model.default_checkpoint_id}")
# Example response:
# Default checkpoint: 2

if tuned_model.checkpoints:
    for _, checkpoint in enumerate(tuned_model.checkpoints):
        print(f"Checkpoint {checkpoint.checkpoint_id}: ", checkpoint)
# Example response:
# Checkpoint 1:  checkpoint_id='1' epoch=1 step=10
# Checkpoint 2:  checkpoint_id='2' epoch=2 step=20

אם הגדרתם את שירות ההערכה של AI גנרטיבי להריץ הערכות אחרי כל נקודת ביקורת, אתם יכולים לראות את קטגוריה של Cloud Storage שהגדרתם לתוצאות ההערכה.

בדיקת נקודות הציון

אתם יכולים לראות רשימה של נקודות הביקורת ב-Model Registry של Gemini Enterprise Agent Platform ולבדוק כל אחת מהן. אפשר גם להשתמש ב-Google Gen AI SDK כדי להציג ולבדוק את נקודות הביקורת.

המסוף

  1. כדי למצוא את המודל המכוונן במסוף Google Cloud , נכנסים לדף Tuning.

    עוברים אל Tuning.

  2. בכרטיסייה Tuning, מוצאים את המודל ולוחצים על Monitor.

  3. בטבלת נקודות הבדיקה שבחלונית Monitor, לוחצים על הקישור Test ליד נקודת הבדיקה שנבחרה.

Google Gen AI SDK

from google import genai
from google.genai.types import HttpOptions

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

# Get the tuning job and the tuned model.
# Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
tuning_job = client.tunings.get(name=tuning_job_name)

contents = "Why is the sky blue?"

# Predicts with the default checkpoint.
response = client.models.generate_content(
    model=tuning_job.tuned_model.endpoint,
    contents=contents,
)
print(response.text)
# Example response:
# The sky is blue because ...

# Predicts with Checkpoint 1.
checkpoint1_response = client.models.generate_content(
    model=tuning_job.tuned_model.checkpoints[0].endpoint,
    contents=contents,
)
print(checkpoint1_response.text)
# Example response:
# The sky is blue because ...

# Predicts with Checkpoint 2.
checkpoint2_response = client.models.generate_content(
    model=tuning_job.tuned_model.checkpoints[1].endpoint,
    contents=contents,
)
print(checkpoint2_response.text)
# Example response:
# The sky is blue because ...

בחירת נקודת ציון חדשה כברירת מחדל

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

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

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

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

המסוף

  1. כדי למצוא את המודל המכוונן במסוף Google Cloud , נכנסים לדף Tuning.

    עוברים אל Tuning.

  2. בכרטיסייה Tuning, מוצאים את המודל ולוחצים על Monitor.

  3. בטבלת נקודות הבדיקה שבחלונית Monitor, לוחצים על Actions ליד נקודת הבדיקה הרצויה ובוחרים באפשרות Set as default.

  4. לוחצים על אישור.

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

Google Gen AI SDK

from google import genai
from google.genai.types import HttpOptions, UpdateModelConfig

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

# Get the tuning job and the tuned model.
# Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
tuning_job = client.tunings.get(name=tuning_job_name)
tuned_model = client.models.get(model=tuning_job.tuned_model.model)

print(f"Default checkpoint: {tuned_model.default_checkpoint_id}")
print(f"Tuned model endpoint: {tuning_job.tuned_model.endpoint}")
# Example response:
# Default checkpoint: 2
# projects/123456789012/locations/us-central1/endpoints/123456789012345

# Set a new default checkpoint.
# Eg. checkpoint_id = "1"
tuned_model = client.models.update(
    model=tuned_model.name,
    config=UpdateModelConfig(default_checkpoint_id=checkpoint_id),
)

print(f"Default checkpoint: {tuned_model.default_checkpoint_id}")
print(f"Tuned model endpoint: {tuning_job.tuned_model.endpoint}")
# Example response:
# Default checkpoint: 1
# projects/123456789012/locations/us-central1/endpoints/123456789000000

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