הפעלת צינור לעיבוד נתונים לצורך הערכה

אתם יכולים להעריך את הביצועים של מודלים בסיסיים ושל מודלים של AI גנרטיבי שעברו כוונון בפלטפורמת הסוכנים של Gemini Enterprise. המודלים מוערכים באמצעות קבוצה של מדדים ביחס למערך נתונים להערכה שאתם מספקים. בדף הזה מוסבר איך פועלת ההערכה של מודלים מבוססת-חישוב באמצעות שירות צינור ההערכה, איך ליצור ולעצב את מערך הנתונים להערכה ואיך לבצע את ההערכה באמצעות Google Cloud המסוף, Agent Platform API או Agent Platform SDK for Python.

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

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

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

משימה מדד
סיווג מיקרו-F1, מאקרו-F1, ‏ F1 לכל מחלקה
סיכום ROUGE-L
מענה לשאלות התאמה מדויקת
יצירת טקסט ‫BLEU, ‏ ROUGE-L

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

הערכת מודלים נתמכת במודלים הבאים:

  • text-bison: גרסאות בסיסיות וגרסאות שעברו התאמה.

  • Gemini: כל המשימות חוץ מסיווג.

הכנת מערך נתונים להערכה

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

פורמט מערך הנתונים

ערכת הנתונים להערכה צריכה להיות בפורמט JSON Lines ‏ (JSONL), שבו כל שורה מכילה צמד של הנחיה ונתוני אמת שצוינו בשדות input_text ו-output_text, בהתאמה. השדה input_text מכיל את ההנחיה שרוצים להעריך, והשדה output_text מכיל את התגובה האידיאלית להנחיה.

האורך המקסימלי של טוקן עבור input_text הוא 8,192, והאורך המקסימלי של טוקן עבור output_text הוא 1,024.

העלאת מערך נתונים להערכה ל-Cloud Storage

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

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

ביצוע הערכת מודל

אפשר להעריך מודלים באמצעות ה-API בארכיטקטורת REST או מסוף Google Cloud .

REST

כדי ליצור משימת הערכת מודל, שולחים בקשת POST באמצעות השיטה pipelineJobs.

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

  • PROJECT_ID: הפרויקט Google Cloud שבו מופעלים רכיבי הצינור.
  • PIPELINEJOB_DISPLAYNAME: שם מוצג ל-PipelineJob.
  • LOCATION: האזור שבו יופעלו רכיבי צינור עיבוד הנתונים. בשלב הזה יש תמיכה רק ב-us-central1.
  • DATASET_URI: ה-URI של מערך הנתונים להשוואה ב-Cloud Storage. אפשר לציין URI אחד או יותר. הפרמטר הזה תומך בתווים כלליים לחיפוש. מידע נוסף על הפרמטר הזה זמין במאמר בנושא InputConfig.
  • OUTPUT_DIR: ה-URI של Cloud Storage שבו מאוחסן פלט ההערכה.
  • MODEL_NAME: מציינים מודל של בעל תוכן דיגיטלי או משאב של מודל שעבר התאמה באופן הבא:
    • מודל בעל התוכן הדיגיטלי: publishers/google/models/MODEL@MODEL_VERSION

      לדוגמה: publishers/google/models/text-bison@002

    • מודל שעבר התאמה: projects/PROJECT_NUMBER/locations/LOCATION/models/ENDPOINT_ID

      לדוגמה: projects/123456789012/locations/us-central1/models/1234567890123456789

    משימת ההערכה לא משפיעה על פריסות קיימות של המודל או על המשאבים שלהן.

  • EVALUATION_TASK: המשימה שרוצים להעריך את המודל לגביה. תהליך ההערכה מחשב קבוצה של מדדים שרלוונטיים למשימה הספציפית הזו. הערכים הקבילים כוללים את האפשרויות הבאות:
    • summarization
    • question-answering
    • text-generation
    • classification
  • INSTANCES_FORMAT: הפורמט של מערך הנתונים. בשלב הזה יש תמיכה רק ב-jsonl. מידע נוסף על הפרמטר הזה זמין במאמר בנושא InputConfig.
  • PREDICTIONS_FORMAT: הפורמט של פלט ההערכה. בשלב הזה, נתמך רק jsonl. מידע נוסף על הפרמטר הזה זמין במאמר בנושא InputConfig.
  • MACHINE_TYPE: (אופציונלי) סוג המכונה להרצת עבודת ההערכה. ערך ברירת המחדל הוא e2-highmem-16. רשימה של סוגי מכונות נתמכים זמינה במאמר סוגי מכונות.
  • SERVICE_ACCOUNT: (אופציונלי) חשבון השירות שישמש להרצת משימת ההערכה. במאמר הגדרת חשבון שירות עם הרשאות גרנולריות מוסבר איך ליצור חשבון שירות בהתאמה אישית. אם לא מציינים, המערכת משתמשת ב Gemini Enterprise Agent Platform Custom Code Service Agent.
  • NETWORK: (אופציונלי) השם המלא של רשת Compute Engine שאליה רוצים לבצע שיוך של משימת ההערכה. הפורמט של שם הרשת הוא projects/PROJECT_NUMBER/global/networks/NETWORK_NAME. אם מציינים את השדה הזה, צריך להיות VPC Network Peering for Gemini Enterprise Agent Platform. אם לא מציינים רשת, עבודת ההערכה לא מחוברת לשום רשת.
  • KEY_NAME: (אופציונלי) השם של מפתח ההצפנה בניהול הלקוח (CMEK). אם מוגדר, המשאבים שנוצרו על ידי עבודת ההערכה מוצפנים באמצעות מפתח ההצפנה שסופק. הפורמט של שם המפתח הוא projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY. המפתח צריך להיות באותו אזור שבו נמצאת משימת ההערכה.

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

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs

גוף בקשת JSON:

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "location": "LOCATION",
      "batch_predict_gcs_source_uris": ["gs://DATASET_URI"],
      "batch_predict_gcs_destination_output_uri": "gs://OUTPUT_DIR",
      "model_name": "MODEL_NAME",
      "evaluation_task": "EVALUATION_TASK",
      "batch_predict_instances_format": "INSTANCES_FORMAT",
      "batch_predict_predictions_format: "PREDICTIONS_FORMAT",
      "machine_type": "MACHINE_TYPE",
      "service_account": "SERVICE_ACCOUNT",
      "network": "NETWORK",
      "encryption_spec_key_name": "KEY_NAME"
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1"
}

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

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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs"

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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו: שימו לב שהערך pipelineSpec קוצר כדי לחסוך במקום.

פקודת curl לדוגמה

PROJECT_ID=myproject
REGION=us-central1
MODEL_NAME=publishers/google/models/text-bison@002
TEST_DATASET_URI=gs://my-gcs-bucket-uri/dataset.jsonl
OUTPUT_DIR=gs://my-gcs-bucket-uri/output

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs" -d \
$'{
  "displayName": "evaluation-llm-text-generation-pipeline",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "location": "'${REGION}'",
      "batch_predict_gcs_source_uris": ["'${TEST_DATASET_URI}'"],
      "batch_predict_gcs_destination_output_uri": "'${OUTPUT_DIR}'",
      "model_name": "'${MODEL_NAME}'",
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1"
}'

Python

במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.

import os

from google.auth import default

import vertexai
from vertexai.preview.language_models import (
    EvaluationTextClassificationSpec,
    TextGenerationModel,
)

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")


def evaluate_model() -> object:
    """Evaluate the performance of a generative AI model."""

    # Set credentials for the pipeline components used in the evaluation task
    credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])

    vertexai.init(project=PROJECT_ID, location="us-central1", credentials=credentials)

    # Create a reference to a generative AI model
    model = TextGenerationModel.from_pretrained("text-bison@002")

    # Define the evaluation specification for a text classification task
    task_spec = EvaluationTextClassificationSpec(
        ground_truth_data=[
            "gs://cloud-samples-data/ai-platform/generative_ai/llm_classification_bp_input_prompts_with_ground_truth.jsonl"
        ],
        class_names=["nature", "news", "sports", "health", "startups"],
        target_column_name="ground_truth",
    )

    # Evaluate the model
    eval_metrics = model.evaluate(task_spec=task_spec)
    print(eval_metrics)
    # Example response:
    # ...
    # PipelineJob run completed.
    # Resource name: projects/123456789/locations/us-central1/pipelineJobs/evaluation-llm-classification-...
    # EvaluationClassificationMetric(label_name=None, auPrc=0.53833705, auRoc=0.8...

    return eval_metrics

המסוף

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

  1. נכנסים לדף Gemini Enterprise Agent Platform מרשם המודלים במסוף Google Cloud .

    כניסה ל-Gemini Enterprise Agent Platform מרשם המודלים

  2. לוחצים על שם המודל שרוצים להעריך.
  3. בכרטיסייה הערכה, לוחצים על יצירת הערכה ומגדירים אותה כך:
    • יעד: בוחרים את המשימה שרוצים להעריך.
    • עמודת יעד או שדה יעד: (סיווג בלבד) מזינים את עמודת היעד לחיזוי. דוגמה: ground_truth.
    • נתיב המקור: מזינים או בוחרים את ה-URI של קבוצת הנתונים להערכה.
    • פורמט פלט: מזינים את הפורמט של פלט ההערכה. בשלב הזה יש תמיכה רק ב-jsonl.
    • נתיב Cloud Storage: מזינים או בוחרים את ה-URI לאחסון הפלט של ההערכה.
    • שמות כיתות: (סיווג בלבד) מזינים את רשימת שמות הכיתות האפשריים.
    • מספר צמתי מחשוב: מזינים את מספר צמתי המחשוב להרצת משימת ההערכה.
    • Machine type: בוחרים את סוג המכונה שבה רוצים להשתמש להרצת משימת ההערכה.
  4. לוחצים על התחלת ההערכה.

צפייה בתוצאות ההערכה

תוצאות ההערכה נמצאות בספריית הפלט של Cloud Storage שציינתם כשיצרתם את משימת ההערכה. שם הקובץ הוא evaluation_metrics.json.

בנוסף, אפשר לראות את תוצאות ההערכה של מודלים שעברו התאמה במסוף Google Cloud :

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

    מעבר למרשם המודלים של Gemini Enterprise Agent Platform

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

  3. בכרטיסייה Evaluate (הערכה), לוחצים על השם של ההרצה של ההערכה שרוצים לראות.

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