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:
Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:
gcloud init
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:
Öffnen Sie in der Google Cloud Console die IAM- und Administrator-Seite Kontingente.
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
undMetric:aiplatform.googleapis.com/generate_content_requests_per_minute_per_project_per_base_model
.Klicken Sie für das Kontingent, das Sie erhöhen möchten, auf das Dreipunkt-Menü
.Klicken Sie im Drop-down-Menü auf Kontingent bearbeiten. Der Bereich Kontingentänderungen wird geöffnet.
Geben Sie unter Kontingent bearbeiten einen neuen Kontingentwert ein.
Klicken Sie auf Anfrage senden.
Anfragen zur Kontingenterhöhung werden per E-Mail bestätigt und in der Regel innerhalb von zwei Werktagen bearbeitet.
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
Probieren Sie ein Bewertungs-Beispielnotebook aus.