Bewertung ausführen

Sie können das Gen AI-Bewertungsmodul des Vertex AI SDK for Python verwenden, um Ihre generativen Sprachmodelle und ‑anwendungen mit der Gen AI-Bewertungsservice-API programmatisch zu bewerten. Auf dieser Seite erfahren Sie, wie Sie Bewertungen mit dem Vertex AI SDK ausführen.

Hinweise

Vertex AI SDK installieren

Führen Sie den folgenden Befehl aus, um das Gen AI-Bewertungsmodul aus dem Vertex AI SDK für Python zu installieren:

!pip install -q google-cloud-aiplatform[evaluation]

Weitere Informationen finden Sie unter Vertex AI SDK für Python installieren.

Vertex AI SDK authentifizieren

Nachdem Sie das Vertex AI SDK für Python installiert haben, müssen Sie sich authentifizieren. In den folgenden Themen wird erläutert, wie Sie sich mit dem Vertex AI SDK authentifizieren, wenn Sie lokal und in Colaboratory arbeiten:

  • Wenn Sie lokal entwickeln, richten Sie Standardanmeldedaten für Anwendungen in Ihrer lokalen Umgebung ein:

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
      
    2. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

      gcloud auth application-default login
      

      Ein Anmeldebildschirm wird angezeigt. Nach der Anmeldung werden Ihre Anmeldedaten in der lokalen Anmeldedatendatei für ADC gespeichert. Weitere Informationen zum Arbeiten mit ADC in einer lokalen Umgebung finden Sie unter Lokale Entwicklungsumgebung.

  • Wenn Sie in Colaboratory arbeiten, führen Sie den folgenden Befehl in einer Colab-Zelle zur Authentifizierung aus:

    from google.colab import auth
    auth.authenticate_user()
    

    Mit diesem Befehl wird ein Fenster geöffnet, in dem Sie die Authentifizierung abschließen können.

Details zu Dienstkonten

Das Dienstkonto wird vom Gen AI-Bewertungsdienst verwendet, um Vorhersagen von der Gemini API in Vertex AI für modellbasierte Bewertungsmesswerte abzurufen. Dieses Dienstkonto wird dem Gen AI Evaluation Service bei der ersten Anfrage automatisch bereitgestellt.

Name Beschreibung E-Mail-Adresse Rolle
Vertex AI Rapid Eval Service Agent Das Dienstkonto, das zum Abrufen von Vorhersagen für die modellbasierte Bewertung verwendet wird. service-PROJECT_NUMBER@gcp-sa-vertex-eval.iam.gserviceaccount.com roles/aiplatform.rapidevalServiceAgent

Dem Dienst-Agent für die schnelle Bewertung sind folgende Berechtigungen zugewiesen:

Rolle Berechtigungen
Vertex AI Rapid Eval Service Agent (roles/aiplatform.rapidevalServiceAgent) aiplatform.endpoints.predict

Bewertung ausführen

Verwenden Sie die Klasse EvalTask, um Bewertungen für die folgenden Anwendungsfälle durchzuführen:

Klasse EvalTask

Mit der EvalTask-Klasse können Sie Modelle und Anwendungen anhand bestimmter Aufgaben bewerten. Um faire Vergleiche zwischen generativen Modellen zu ermöglichen, müssen Sie in der Regel verschiedene Modelle und Prompt-Vorlagen wiederholt im Vergleich zu einem festen Bewertungs-Dataset bewerten, anhand bestimmter Messwerte. Außerdem ist es wichtig, mehrere Messwerte in einem einzigen Bewertungslauf gleichzeitig zu bewerten.

EvalTask lässt sich auch in Vertex AI Experiments einbinden, um Konfigurationen und Ergebnisse für jeden Bewertungslauf zu erfassen. Vertex AI Experiments hilft Ihnen bei der Verwaltung und Interpretation von Bewertungsergebnissen, damit Sie fundierte Entscheidungen treffen können.

Das folgende Beispiel zeigt, wie die Klasse EvalTask instanziiert und eine Bewertung ausgeführt wird:

from vertexai.evaluation import (
    EvalTask,
    PairwiseMetric,
    PairwiseMetricPromptTemplate,
    PointwiseMetric,
    PointwiseMetricPromptTemplate,
    MetricPromptTemplateExamples
)

eval_task = EvalTask(
    dataset=DATASET,
    metrics=[METRIC_1, METRIC_2, METRIC_3],
    experiment=EXPERIMENT_NAME,
)

eval_result = eval_task.evaluate(
    model=MODEL,
    prompt_template=PROMPT_TEMPLATE,
    experiment_run=EXPERIMENT_RUN,
)

Bewertung mit modellbasierten Messwerten ausführen

Verwenden Sie für modellbasierte Messwerte die Klassen PointwiseMetric und PairwiseMetric, um Messwerte zu definieren, die auf Ihre spezifischen Kriterien zugeschnitten sind. Sie haben folgende Möglichkeiten, Bewertungen auszuführen:

Beispiele für modellbasierte Messwerte verwenden

Sie können die vordefinierte Konstante Metric Prompt Template Examples direkt im Vertex AI SDK verwenden. Alternativ können Sie sie in der Benutzeroberfläche für die Definition von Messwerten im freien Format ändern und einbinden.

Eine vollständige Liste der Vorlagenbeispiele für Messwertprompts, die die meisten wichtigen Anwendungsfälle abdecken, finden Sie unter Vorlagen für Messwertprompts.

Im folgenden Vertex AI SDK-Beispiel wird gezeigt, wie Sie Messwerte mit der Klasse MetricPromptTemplateExamples definieren:

# View all the available examples of model-based metrics
MetricPromptTemplateExamples.list_example_metric_names()

# Display the metric prompt template of a specific example metric
print(MetricPromptTemplateExamples.get_prompt_template('fluency'))

# Use the pre-defined model-based metrics directly
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[MetricPromptTemplateExamples.Pointwise.FLUENCY],
)

eval_result = eval_task.evaluate(
    model=MODEL,
)

Oberfläche mit Vorlagen für modellbasierte Messwerte verwenden

Sie können Ihre Messwerte anpassen, indem Sie Felder wie Criteria und Rating Rubrics mit den Klassen PointwiseMetricPromptTemplate und PairwiseMetricPromptTemplate im Vertex AI SDK ausfüllen. Bestimmten Feldern wie Instruction wird ein Standardwert zugewiesen, wenn Sie keine Eingabe machen.

Optional können Sie input_variables angeben. Dies ist eine Liste von Eingabefeldern, die von der Vorlage für Messwert-Prompts zum Generieren von modellbasierten Bewertungsergebnissen verwendet wird. Für Punktbasierte Messwerte ist standardmäßig die Spalte response des Modells enthalten. Für paarweise Messwerte sind sowohl die Spalten response als auch baseline_model_response des Kandidatenmodells enthalten.

Weitere Informationen finden Sie im Abschnitt „Vorlage für Messwert-Prompts strukturieren“ unter Vorlagen für Messwert-Prompts.

# Define a pointwise metric with two custom criteria
custom_text_quality = PointwiseMetric(
    metric="custom_text_quality",
    metric_prompt_template=PointwiseMetricPromptTemplate(
        criteria={
          "fluency": "Sentences flow smoothly and are easy to read, avoiding awkward phrasing or run-on sentences. Ideas and sentences connect logically, using transitions effectively where needed.",
          "entertaining": "Short, amusing text that incorporates emojis, exclamations and questions to convey quick and spontaneous communication and diversion.",
        },
        rating_rubric={
          "1": "The response performs well on both criteria.",
          "0": "The response is somewhat aligned with both criteria",
          "-1": "The response falls short on both criteria",
        },
        input_variables=["prompt"],
    ),
)

# Display the serialized metric prompt template
print(custom_text_quality.metric_prompt_template)

# Run evaluation using the custom_text_quality metric
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[custom_text_quality],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

SDK-Schnittstelle für die freie Eingabe von modellbasierten Messwerten verwenden

Für mehr Flexibilität bei der Anpassung der Vorlage für Messwert-Prompts können Sie einen Messwert direkt über die Benutzeroberfläche für das freie Format definieren, die eine direkte Stringeingabe akzeptiert.

# Define a pointwise multi-turn chat quality metric
pointwise_chat_quality_metric_prompt = """Evaluate the AI's contribution to a meaningful conversation, considering coherence, fluency, groundedness, and conciseness.
 Review the chat history for context. Rate the response on a 1-5 scale, with explanations for each criterion and its overall impact.

# Conversation History
{history}

# Current User Prompt
{prompt}

# AI-generated Response
{response}
"""

freeform_multi_turn_chat_quality_metric = PointwiseMetric(
    metric="multi_turn_chat_quality_metric",
    metric_prompt_template=pointwise_chat_quality_metric_prompt,
)

# Run evaluation using the freeform_multi_turn_chat_quality_metric metric
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[freeform_multi_turn_chat_quality_metric],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

Übersetzungsmodell bewerten

Wenn Sie das Vertex AI SDK verwenden, können Sie BLEU, MetricX oder COMET als Bewertungsmesswerte für Ihr Übersetzungsmodell angeben.

#Prepare the dataset for evaluation.
sources = [
    "Dem Feuer konnte Einhalt geboten werden",
    "Schulen und Kindergärten wurden eröffnet.",
]

responses = [
    "The fire could be stopped",
    "Schools and kindergartens were open",
]

references = [
    "They were able to control the fire.",
    "Schools and kindergartens opened",
]

eval_dataset = pd.DataFrame({
    "source": sources,
    "response": responses,
    "reference": references,
})

# Set the metrics.

metrics = [
    "bleu",
    pointwise_metric.Comet(),
    pointwise_metric.MetricX(),
]

eval_task = evaluation.EvalTask(
    dataset=eval_dataset,
    metrics=metrics,
)
eval_result = eval_task.evaluate()

Bewertung mit berechnungsbasierten Messwerten ausführen

Sie können berechnungsbasierte Messwerte einzeln oder zusammen mit modellbasierten Messwerten verwenden.

# Combine computation-based metrics "ROUGE" and "BLEU" with model-based metrics
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=["rouge_l_sum", "bleu", custom_text_quality],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

Zusätzliche Anpassung von Messwerten

Wenn Sie Ihre Messwerte weiter anpassen möchten, z. B. ein anderes Bewertungsmodell für modellbasierte Messwerte auswählen oder einen neuen berechnungsbasierten Messwert definieren möchten, können Sie die Klasse CustomMetric im Vertex AI SDK verwenden. Hier finden Sie weitere Informationen:

Modellbasierte Bewertung mit erhöhten Ratenlimits und Kontingenten ausführen

Eine einzelne Bewertungsanfrage für einen modellbasierten Messwert führt zu mehreren zugrunde liegenden Anfragen an die Gemini API in Vertex AI und verbraucht das gemini-1.5-pro-Kontingent des Bewertungsmodells. Das Kontingent für Modellanfragen pro Minute (RPM) wird pro Projekt berechnet. Das bedeutet, dass sowohl die Anfragen an das Bewertungsmodell gemini-1.5-pro als auch die Anfragen an den Gen AI-Bewertungsdienst für modellbasierte Messwerte auf das RPM-Kontingent des Projektbewertungsmodells in einer bestimmten Region für gemini-1.5-pro angerechnet werden.

In den folgenden Fällen sollten Sie das RPM-Kontingent für das Bewertungsmodell erhöhen und ein höheres Bewertungsdienst-Ratenlimit evaluation_service_qps festlegen:

  • Erhöhtes Datenvolumen:Wenn Sie mit den modellbasierten Messwerten deutlich mehr Daten verarbeiten, wird wahrscheinlich das Standard-RPM-Kontingent erreicht. Wenn Sie das Kontingent erhöhen, können Sie das größere Volumen ohne Leistungseinbußen oder Unterbrechungen verarbeiten.

  • Schnellere Bewertung:Wenn für Ihre Anwendung eine kürzere Bearbeitungszeit für Bewertungen erforderlich ist, benötigen Sie möglicherweise ein höheres RPM-Kontingent. Dies ist besonders wichtig für zeitkritische Anwendungen oder solche mit Echtzeitinteraktionen, bei denen Verzögerungen bei der Auswertung sich auf die Nutzerfreundlichkeit auswirken können.

  • Komplexe Bewertungsaufgaben:Mit einem höheren RPM-Kontingent haben Sie genügend Kapazität, um ressourcenintensive Bewertungen für komplexe Aufgaben oder große Textmengen zu verarbeiten.

  • Hohe Nutzerparallelität:Wenn Sie davon ausgehen, dass eine große Anzahl von Nutzern gleichzeitig modelbasierte Bewertungen und Modellinferenzen in Ihrem Projekt anfordert, ist ein höheres RPM-Limit für das Modell erforderlich, um Engpässe zu vermeiden und die Reaktionsfähigkeit aufrechtzuerhalten.

So erhöhen Sie das Modellkontingent und verwenden das Gen AI Evaluation Service SDK mit erhöhten Ratenlimits:

  1. Öffnen Sie in der Google Cloud Console die IAM- und Administrator-Seite Kontingente.

    Kontingente in der Console ansehen

  2. Geben Sie im Feld Filter die Dimension (Modell-ID) und den Messwert (Kontingent-ID für Gemini-Modelle) an: base_model:gemini-1.5-pro und Metric:aiplatform.googleapis.com/generate_content_requests_per_minute_per_project_per_base_model.

  3. Klicken Sie für das Kontingent, das Sie erhöhen möchten, auf das Dreipunkt-Menü .

  4. Klicken Sie im Drop-down-Menü auf Kontingent bearbeiten. Der Bereich Kontingentänderungen wird geöffnet.

  5. Geben Sie unter Kontingent bearbeiten einen neuen Kontingentwert ein.

  6. Klicken Sie auf Anfrage senden.

  7. Anfragen zur Kontingenterhöhung werden per E-Mail bestätigt und in der Regel innerhalb von zwei Werktagen bearbeitet.

  8. Sobald Ihre Anfrage zur Kontingenterhöhung per E-Mail genehmigt wurde, können Sie den Parameter evaluation_service_qps so festlegen:

from vertexai.evaluation import EvalTask

# GEMINI_RPM is the requests per minute (RPM) quota for gemini-1.5-pro in your region
# Evaluation Service QPS limit is equal to (gemini-1.5-pro RPM / 60 sec / default number of samples)
CUSTOM_EVAL_SERVICE_QPS_LIMIT = GEMINI_RPM / 60 / 4

eval_task = EvalTask(
    dataset=DATASET,
    metrics=[METRIC_1, METRIC_2, METRIC_3],
)

eval_result = eval_task.evaluate(
    evaluation_service_qps=CUSTOM_EVAL_SERVICE_QPS_LIMIT,
    # Specify a retry_timeout limit for a more responsive evaluation run
    # the default value is 600 (in seconds, or 10 minutes)
    retry_timeout=RETRY_TIMEOUT,
)

Weitere Informationen zu Kontingenten und Limits finden Sie unter Kontingente für den Gen AI Evaluation Service und Gen AI Evaluation Service API.

Nächste Schritte