Translation LLM-Modelle erstellen und verwalten

In diesem Dokument wird beschrieben, wie Sie ein benutzerdefiniertes LLM-Übersetzungsmodell abstimmen und verwenden.

Hinweis

Bevor Sie beginnen, müssen Sie ein Dataset für die überwachte Feinabstimmung vorbereiten. Je nach Anwendungsfall gelten unterschiedliche Anforderungen.

  • Text-Dataset für das Tuning vorbereiten: Text-Tuning

Vertex AI API aktivieren

So optimieren Sie ein benutzerdefiniertes TLLM-Modell:

Aktivieren Sie die Vertex AI API, falls sie noch nicht aktiviert ist.

Rollen, die zum Aktivieren von APIs erforderlich sind

Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen

API aktivieren

Unterstützte Modelle

  • translation-llm-002

Abstimmungsjob erstellen

Sie können einen überwachten Feinabstimmungsjob mit der REST API oder dem Google Gen AI SDK erstellen.

REST

Senden Sie zum Erstellen eines Modellabstimmungsjobs eine POST-Anfrage mit der Methode tuningJobs.create. Einige Parameter werden nicht von allen Modellen unterstützt. Achten Sie darauf, dass Sie nur die für das abzustimmende Modell relevanten Parameter einfügen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: PROJECT_ID.
  • TUNING_JOB_REGION: Die Region, in der der Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird. Unterstützte Region: us-central1.
  • BASE_MODEL: Name des zu optimierenden Übersetzungsmodells. Unterstützte Werte: translation-llm-002.
  • TRAINING_DATASET_URI: Cloud Storage-URI Ihres Trainingsdatensatzes. Das Dataset muss als JSONL-Datei formatiert sein. Die besten Ergebnisse erzielen Sie, wenn Sie mindestens 100 bis 500 Beispiele angeben. Weitere Informationen finden Sie unter Überwachtes Abstimmungs-Dataset.
  • VALIDATION_DATASET_URIOptional: Der Cloud Storage-URI der Validierungs-Dataset-Datei.
  • TUNED_MODEL_DISPLAYNAMEOptional: Ein Anzeigename für das abgestimmte Modell. Wenn nicht festgelegt, wird ein zufälliger Name generiert.

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

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

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Python

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

Liste der Abstimmungsjobs ansehen

Sie können eine Liste der Abstimmungsjobs in Ihrem aktuellen Projekt über die Google Cloud Console, das Google Gen AI SDK oder durch Senden einer GET-Anfrage mit der Methode tuningJobs aufrufen.

REST

Wenn Sie eine Liste der Modellabstimmungsjobs aufrufen möchten, senden Sie eine GET-Anfrage mit der Methode tuningJobs.list.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • TUNING_JOB_REGION: Die Region, in der der Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird.

HTTP-Methode und URL:

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

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie diesen Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Python

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

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

responses = client.tunings.list()
for response in responses:
    print(response.name)
    # Example response:
    # projects/123456789012/locations/us-central1/tuningJobs/123456789012345

Console

  1. Wenn Sie Ihre Optimierungsjobs in der Google Cloud -Konsole aufrufen möchten, rufen Sie die Seite Agent Platform Studio auf.

    Agent Platform Studio aufrufen

  2. Ihre Tuning-Jobs für Übersetzungs-LLMs werden in der Tabelle im Bereich Abgestimmte Modelle für Übersetzungs-LLMs aufgeführt.

Details eines Abstimmungsjobs abrufen

Sie können die Details eines Feinabstimmungsjobs in Ihrem aktuellen Projekt über die Google Cloud Console, das Google Gen AI SDK oder durch Senden einer GET-Anfrage mit der Methode tuningJobs abrufen.

REST

Wenn Sie eine Liste der Modellabstimmungsjobs aufrufen möchten, senden Sie eine GET-Anfrage mit der Methode tuningJobs.get und geben Sie TuningJob_ID an.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • TUNING_JOB_REGION: Die Region, in der der Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird.
  • TUNING_JOB_ID: die ID des Abstimmungsjobs.

HTTP-Methode und URL:

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

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie diesen Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Python

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)

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

Console

  1. Details zu einem optimierten Modell in der Google Cloud Console finden Sie auf der Seite Agent Platform Studio.

    Agent Platform Studio aufrufen

  2. Suchen Sie in der Tabelle Optimierte Übersetzungs-LLMs nach Ihrem Modell und klicken Sie auf Details.

    Die Details Ihres Modells werden angezeigt.

Abstimmungsjob abbrechen

Sie können einen Abstimmungsjob in Ihrem aktuellen Projekt über die Google Cloud Console, das Google Gen AI SDK oder durch Senden einer POST-Anfrage mit der Methode tuningJobs abbrechen.

REST

Wenn Sie eine Liste der Modellabstimmungsjobs aufrufen möchten, senden Sie eine GET-Anfrage mit der Methode tuningJobs.cancel und geben Sie TuningJob_ID an.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Projekt-ID.
  • TUNING_JOB_REGION: Die Region, in der der Abstimmungsjob ausgeführt wird. Dies ist auch die Standardregion, in der das abgestimmte Modell hochgeladen wird.
  • TUNING_JOB_ID: die ID des Abstimmungsjobs.

HTTP-Methode und URL:

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

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

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

Führen Sie diesen Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Python


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


def cancel_tuning_job(tuning_job_name: str) -> None:
    client = genai.Client(http_options=HttpOptions(api_version="v1"))

    # Cancel the tuning job.
    # Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
    client.tunings.cancel(name=tuning_job_name)

Console

  1. Rufen Sie in der Google Cloud Console die Seite Agent Platform Studio auf, um einen Tuning-Job abzubrechen.

    Agent Platform Studio aufrufen

  2. Klicken Sie in der Tabelle Translation tuned models (Für die Übersetzung optimierte Modelle) auf  Manage run (Lauf verwalten).

  3. Klicken Sie auf Abbrechen.

Informationen zu einem Modell abrufen

Nach Abschluss des Trainings können Sie Informationen zu dem Modell abrufen, z. B. die Modell-ID.

Eine Liste der verfügbaren Modelle finden Sie auf der Seite Agent Platform Studio.

Agent Platform Studio aufrufen

Abgestimmtes Modell verwenden

Im folgenden Beispiel wird Text mit einem benutzerdefinierten Modell mit der Modell-ID 1395675701985363739 übersetzt. Wenn Sie das benutzerdefinierte Translation LLM verwenden möchten, geben Sie models/translation-llm-custom/{model-id} als Modell-ID an.

Mit dem Abfrageparameter model können Sie das Modell für die Übersetzung festlegen.

REST

Bevor Sie die Anfragedaten verwenden, ersetzen Sie folgende Werte:

  • PROJECT_ID: Ihre Google Cloud Projekt-ID
  • LOCATION: Die Region, in der sich das benutzerdefinierte Modell befindet, z. B. us-central1

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

{
  "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."]
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

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

Python

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 tuned endpoint.
response = client.models.generate_content(
    model=tuning_job.tuned_model.endpoint,
    contents=contents,
)
print(response.text)
# Example response:
# The sky is blue because ...

Messwerte für Feinabstimmung und Validierung

Sie können einen Modellabstimmungsjob konfigurieren, um Messwerte zur Modellabstimmung und Modellbewertung zu erfassen und zu melden. Diese können dann in Agent Platform Studio visualisiert werden.

  1. Details zu einem optimierten Modell in der Google Cloud Console finden Sie auf der Seite Agent Platform Studio.

    Agent Platform Studio aufrufen

  2. Klicken Sie in der Tabelle Abstimmung und Destillation auf den Namen des abgestimmten Modells, für das Sie Messwerte aufrufen möchten.

    Die Optimierungsmesswerte werden auf dem Tab Monitor angezeigt.

Messwerte für die Modellabstimmung

Im Modellabstimmungsjob werden automatisch die folgenden Abstimmungsmesswerte für translation-llm-002 erfasst.

  • /train_total_loss: Verlust für das Abstimmungs-Dataset in einem Trainingsschritt.
  • /train_fraction_of_correct_next_step_preds: Die Tokengenauigkeit in einem Trainingsschritt. Eine einzelne Inferenz besteht aus einer Sequenz von vorhergesagten Tokens. Dieser Messwert misst die Genauigkeit der vorhergesagten Tokens im Vergleich zum Ground Truth im Abstimmungs-Dataset.
  • /train_num_predictions:: Anzahl der vorhergesagten Tokens in einem Trainingsschritt.

Modellvalidierungsmesswerte:

Sie können einen Modellabstimmungsjob konfigurieren, um die folgenden Validierungsmesswerte für translation-llm-002 zu erfassen.

  • /eval_total_loss: Verlust für das Validierungs-Dataset in einem Validierungsschritt.
  • /eval_fraction_of_correct_next_step_preds: Die Tokengenauigkeit in einem Validierungsschritt. Eine einzelne Inferenz besteht aus einer Sequenz von vorhergesagten Tokens. Dieser Messwert misst die Genauigkeit der vorhergesagten Tokens im Vergleich zur Grundwahrheit im Validierungs-Dataset.
  • /eval_num_predictions: Anzahl der vorhergesagten Tokens in einem Validierungsschritt.

Die Messwertvisualisierungen sind verfügbar, sobald der Abstimmungsjob ausgeführt wird. Es wird in Echtzeit aktualisiert, während die Optimierung fortschreitet. Wenn Sie beim Erstellen des Abstimmungsjobs kein Validierungs-Dataset angeben, sind nur die Visualisierungen für die Abstimmungsmesswerte verfügbar.

Nächste Schritte