יצירה וניהול של מודלים

במסמך הזה מוסבר איך לכוונן מודל LLM מותאם אישית לתרגום ואיך להשתמש בו.

לפני שמתחילים

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

הפעלת Vertex AI API

כדי לכוונן מודל TLLM בהתאמה אישית, צריך לבצע את הפעולות הבאות:

Enable the Vertex AI API.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the API

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

יצירת משימת שיפור

אפשר ליצור משימת כוונון מפוקח (SFT) באמצעות API בארכיטקטורת REST או Vertex AI SDK ל-Python.

REST

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

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

  • PROJECT_ID: PROJECT_ID.
  • TUNING_JOB_REGION: האזור שבו פועלת משימת ההתאמה. זה גם האזור שמוגדר כברירת מחדל להעלאת המודל שעבר התאמה. אזור נתמך: us-central1.
  • BASE_MODEL: השם של מודל התרגום שרוצים לכוונן. ערכים נתמכים: translation-llm-002.
  • TRAINING_DATASET_URI: ה-URI של מערך הנתונים לאימון ב-Cloud Storage. מערך הנתונים צריך להיות בפורמט של קובץ JSONL. כדי לקבל את התוצאות הכי טובות, מומלץ לספק לפחות 100 עד 500 דוגמאות. מידע נוסף זמין במאמר מידע על מערך נתונים לשיפור מודלים בפיקוח.
  • VALIDATION_DATASET_URIאופציונלי: ה-URI של Cloud Storage של קובץ מערך הנתונים של האימות.
  • TUNED_MODEL_DISPLAYNAMEאופציונלי: שם תצוגה של המודל שעבר התאמה. אם לא מגדירים שם, המערכת יוצרת שם אקראי.

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

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

גוף בקשת JSON:

{
  "baseModel": "BASE_MODEL",
  "supervisedTuningSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME"
}

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

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 שדומה לזו:

Python

from vertexai.generative_models import GenerativeModel

sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))

import time

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line.
# PROJECT_ID = os.environ["GOOGLE_CLOUD_PROJECT"]
vertexai.init(project=PROJECT_ID, location="us-central1")

sft_tuning_job = sft.train(
  source_model="translation-llm-002",
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-2_0/text/sft_train_data.jsonl",
    # The following parameters are optional
    validation_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-2_0/text/sft_validation_data.jsonl",
    tuned_model_display_name="tuned_translation_llm_002",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
  time.sleep(60)
  sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@1
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# <google.cloud.aiplatform.metadata.experiment_resources.Experiment object at 0x7b5b4ae07af0>

צפייה ברשימה של משימות אופטימיזציה

אפשר לראות את רשימת משימות ההתאמה בפרויקט הנוכחי באמצעות מסוף Google Cloud, Vertex AI SDK for Python או שליחת בקשת GET באמצעות השיטה tuningJobs. Google Cloud

REST

כדי לראות רשימה של משימות כוונון מודלים, שולחים בקשת GET באמצעות ה-method ‏tuningJobs.list.

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

  • PROJECT_ID: PROJECT_ID.
  • TUNING_JOB_REGION: האזור שבו פועלת משימת ההתאמה. זה גם האזור שמוגדר כברירת מחדל להעלאת המודל שעבר התאמה.

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

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

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

curl

מריצים את הפקודה הבאה:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

מריצים את הפקודה הבאה:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

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

Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

responses = sft.SupervisedTuningJob.list()

for response in responses:
    print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7c85287b2680>
# resource name: projects/12345678/locations/us-central1/tuningJobs/123456789012345

המסוף

  1. כדי לראות את משימות ההתאמה האישית במסוף Google Cloud , עוברים לדף Vertex AI Studio.

    מעבר אל Vertex AI Studio

  2. הטבלה בקטע מודלים מכוונים של LLM לתרגום מציגה את המשימות של כוונון LLM לתרגום.

קבלת פרטים על משימת שיפור

אפשר לקבל את הפרטים של משימת התאמה אישית בפרויקט הנוכחי באמצעות המסוף, Vertex AI SDK ל-Python או שליחת בקשת GET באמצעות השיטה tuningJobs. Google Cloud

REST

כדי לראות רשימה של משימות כוונון מודלים, שולחים בקשת GET באמצעות השיטה tuningJobs.get ומציינים את TuningJob_ID.

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

  • PROJECT_ID: PROJECT_ID.
  • TUNING_JOB_REGION: האזור שבו פועלת משימת ההתאמה. זה גם האזור שמוגדר כברירת מחדל להעלאת המודל שעבר התאמה.
  • TUNING_JOB_ID: המזהה של משימת ההתאמה.

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

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

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

curl

מריצים את הפקודה הבאה:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"

PowerShell

מריצים את הפקודה הבאה:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content

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

Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
response = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)

print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7cc4bb20baf0>
# resource name: projects/1234567890/locations/us-central1/tuningJobs/4982013113894174720

המסוף

  1. כדי לראות את הפרטים של מודל שעבר כוונון במסוף Google Cloud , נכנסים לדף Vertex AI Studio.

    מעבר אל Vertex AI Studio

  2. בטבלה Translation LLM tuned models, מחפשים את המודל ולוחצים על Details.

    פרטי המודל מוצגים.

ביטול משימת שיפור

אפשר לבטל משימת שיפור בפרויקט הנוכחי באמצעות מסוף Google Cloud, Vertex AI SDK ל-Python או שליחת בקשת POST באמצעות המתודה tuningJobs. Google Cloud

REST

כדי לראות רשימה של משימות כוונון מודלים, שולחים בקשת GET באמצעות השיטה tuningJobs.cancel ומציינים את TuningJob_ID.

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

  • PROJECT_ID: PROJECT_ID.
  • TUNING_JOB_REGION: האזור שבו פועלת משימת ההתאמה. זה גם האזור שמוגדר כברירת מחדל להעלאת המודל שעבר התאמה.
  • TUNING_JOB_ID: המזהה של משימת ההתאמה.

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

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

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

curl

מריצים את הפקודה הבאה:

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

PowerShell

מריצים את הפקודה הבאה:

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

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content

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

Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
job = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)
job.cancel()

המסוף

  1. כדי לבטל משימת התאמה אישית במסוף Google Cloud , עוברים לדף Vertex AI Studio.

    מעבר אל Vertex AI Studio

  2. בטבלה Translation tuned models (מודלים מותאמים לתרגום), לוחצים על Manage run (ניהול הרצה).

  3. לוחצים על ביטול.

קבלת מידע על מודל

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

כדי לראות רשימה של המודלים הזמינים, עוברים לדף Vertex AI Endpoints.

כניסה לדף Vertex AI Endpoints

שימוש במודל שעבר התאמה

בדוגמה הבאה מתורגם טקסט באמצעות מודל בהתאמה אישית עם מזהה מודל של 1395675701985363739. כדי להשתמש במודל LLM מותאם אישית לתרגום, מציינים את המזהה models/translation-llm-custom/{model-id}.

אפשר לציין את המודל שבו רוצים להשתמש לתרגום באמצעות פרמטר השאילתה model.

REST

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • LOCATION: האזור שבו נמצא המודל בהתאמה אישית, למשל us-central1.

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

POST https://translation.googleapis.com/v3/projects/PROJECT_ID/locations/LOCATION:translateText

גוף בקשת JSON:

{
  "model": "projects/PROJECT_ID/locations/LOCATION/model/translation-llm-custom/1395675701985363739",
  "sourceLanguageCode": "en",
  "targetLanguageCode": "ru",
  "contents": ["Dr. Watson, please discard your trash. You've shared unsolicited email with me.
  Let's talk about spam and importance ranking in a confidential mode."]
}

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

curl

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

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://translation.googleapis.com/v3/projects/PROJECT_ID/locations/LOCATION:translateText"

PowerShell

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

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }

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

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

{
  "translation": {
    "translatedText": "Доктор Ватсон, пожалуйста, откажитесь от своего мусора.
    Вы поделились нежелательной электронной почтой со мной. Давайте поговорим о
    спаме и важности рейтинга в конфиденциальном режиме.",
    "model": "projects/PROJECT_NUMBER/locations/LOCATION/model/translation-llm-custom/1395675701985363739"
  }
}

Python

from google.cloud import translate
def translate_text_with_model(
    text: str = "YOUR_TEXT_TO_TRANSLATE",
    project_id: str = "YOUR_PROJECT_ID",
    model_id: str = "YOUR_MODEL_ID",
) -> translate.TranslationServiceClient:
    """Translates a given text using Translation custom model."""

    client = translate.TranslationServiceClient()

    location = "us-central1"
    parent = f"projects/{project_id}/locations/{location}"
    model_path = f"{parent}/models/translation-llm-custom/{model_id}"

    # Supported language codes: https://cloud.google.com/translate/docs/languages
    response = client.translate_text(
        request={
            "contents": [text],
            "target_language_code": "ja",
            "model": model_path,
            "source_language_code": "en",
            "parent": parent,
            "mime_type": "text/plain",  # mime types: text/plain, text/html
        }
    )
    # Display the translation for each input text provided
    for translation in response.translations:
        print(f"Translated text: {translation.translated_text}")

    return response

מדדים של התאמה ואימות

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

  1. כדי לראות את הפרטים של מודל שעבר כוונון במסוף Google Cloud , נכנסים לדף Vertex AI Studio.

    מעבר אל Vertex AI Studio

  2. בטבלה Tune and Distill (כוונון וזיקוק), לוחצים על השם של המודל המכוונן שרוצים לראות את המדדים שלו.

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

מדדים של התאמת מודל

תהליך ההתאמה של המודל אוסף באופן אוטומטי את מדדי ההתאמה הבאים של translation-llm-002.

  • /train_total_loss: Loss for the tuning dataset at a training step.
  • /train_fraction_of_correct_next_step_preds: רמת הדיוק של האסימון בשלב אימון. הסקה יחידה מורכבת מרצף של טוקנים חזויים. המדד הזה מודד את הדיוק של הטוקנים החזויים בהשוואה לנתוני האמת במערך הנתונים של הכוונון.
  • /train_num_predictions: מספר הטוקנים החזוי בשלב ההדרכה.

מדדי אימות של המודל:

אתם יכולים להגדיר משימת כוונון של מודל כדי לאסוף את מדדי האימות הבאים עבור translation-llm-002.

  • /eval_total_loss: הפסד עבור מערך נתוני האימות בשלב האימות.
  • /eval_fraction_of_correct_next_step_preds: רמת הדיוק של האסימון בשלב האימות. הסקה יחידה מורכבת מרצף של טוקנים חזויים. המדד הזה מודד את הדיוק של הטוקנים הצפויים בהשוואה לנתוני האמת במערך הנתונים של האימות.
  • /eval_num_predictions: מספר האסימונים החזויים בשלב האימות.

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

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