Las métricas basadas en modelos proporcionan varios enfoques para personalizar y ayudarte a generar métricas de evaluación según tus criterios y casos de uso. En esta página, se describe cómo configurar tu modelo de juez para tu caso de uso ideal.
Para ver el flujo de trabajo de evaluación básico, consulta la guía de inicio rápido del servicio de evaluación de IA generativa. La serie de personalización avanzada del modelo de juez incluye las siguientes páginas:
- Evalúa un modelo de juez
- Solicitud de personalización del modelo de juez
- Configura un modelo de juez (página actual)
Descripción general
Tienes las siguientes opciones para configurar tu modelo de juez y mejorar la calidad:
- Instrucciones del sistema: El modelo del juez puede procesar un conjunto de instrucciones antes de procesar las indicaciones de evaluación.
- Juzga las configuraciones de los modelos:
- Reversión de respuestas: Revierte las respuestas del modelo de referencia y del modelo candidato para reducir el sesgo del modelo del juez durante la evaluación.
- Muestreo múltiple: Ajusta la cantidad de veces que se debe llamar al modelo juez para obtener la puntuación de evaluación y mejorar la coherencia.
- Modelo de juez ajustado: Usa un LLM ajustado como modelo de juez.
Instrucciones del sistema
Los modelos de Gemini pueden recibir instrucciones del sistema, que son un conjunto de instrucciones que afectan la forma en que el modelo procesa las instrucciones. Puedes usar instrucciones del sistema cuando inicializas o generas contenido a partir de un modelo para especificar el comportamiento a nivel del producto, como roles o arquetipos, información contextual y estilo y tono de explicación. Por lo general, el modelo del juez pondera la importancia de las instrucciones del sistema más que las indicaciones de entrada.
Para obtener una lista de los modelos que admiten instrucciones del sistema, consulta Modelos compatibles.
En el siguiente ejemplo, que usa el SDK de Vertex AI, se agrega system_instruction
a nivel de la métrica para PointwiseMetric
:
system_instruction = "You are an expert evaluator."
linguistic_acceptability = PointwiseMetric(
metric="linguistic_acceptability",
metric_prompt_template=linguistic_acceptability_metric_prompt_template,
system_instruction=system_instruction,
)
eval_result = EvalTask(
dataset=EVAL_DATASET,
metrics=[linguistic_acceptability]
).evaluate()
Puedes usar el mismo enfoque con PairwiseMetric
.
Configuración del modelo de juez
Puedes personalizar aún más el modelo de juez a través de autorater_config
:
Reversión de respuestas: Revierte las respuestas del modelo de referencia y del modelo candidato para reducir el sesgo del modelo del juez durante la evaluación.
Muestreo múltiple: Ajusta la cantidad de veces que se debe llamar al modelo juez para obtener la puntuación de evaluación y mejorar la coherencia.
Modelo de juez ajustado: Usa un LLM ajustado como modelo de juez.
Inmersión de respuestas
Para PairwiseMetrics
, el servicio de evaluación de IA generativa recibe respuestas para el modelo de referencia y el modelo candidato. El modelo de juez evalúa qué respuesta se alinea mejor con los criterios de metric_prompt_template
. Sin embargo, el modelo del juez puede estar sesgado hacia el modelo de referencia o el candidato en ciertos parámetros de configuración.
Para reducir el sesgo en los resultados de la evaluación, puedes habilitar el cambio de respuesta, en el que la mitad de las llamadas al modelo de juez invierte el modelo de referencia y la respuesta del modelo candidato con el SDK de Vertex AI:
from vertexai.preview.evaluation import AutoraterConfig
pairwise_relevance_prompt_template = """
# Instruction
…
### Response A
{baseline_model_response}
### Response B
{candidate_model_response}
"""
my_pairwise_metric = PairwiseMetric(
metric="my_pairwise_metric",
metric_prompt_template=pairwise_relevance_prompt_template,
candidate_response_field_name = "candidate_model_response",
baseline_response_field_name = "baseline_model_response"
)
# Define an AutoraterConfig with flip_enabled
my_autorater_config = AutoraterConfig(flip_enabled=True)
# Define an EvalTask with autorater_config
flip_enabled_eval_result = EvalTask(
dataset=EVAL_DATASET,
metrics=[my_pairwise_metric],
autorater_config=my_autorater_config,
).evaluate()
Muestreo múltiple
Cuando se realiza la evaluación, el modelo del juez puede mostrar cierta aleatoriedad en sus respuestas. El muestreo adicional puede ayudar a anular la aleatoriedad inherente del modelo del juez y generar resultados más coherentes.
Sin embargo, aumentar el muestreo también aumenta la latencia para completar la solicitud. Puedes actualizar el valor del recuento de muestreo con AutoraterConfig
a un número entero entre 1 y 32. Recomendamos usar el valor predeterminado de sampling_count
de 4 para equilibrar los dos factores de aleatoriedad y latencia.
Con el SDK de Vertex AI, puedes especificar la cantidad de muestras que se ejecutan para cada solicitud:
from vertexai.preview.evaluation import AutoraterConfig
# Define customized sampling count in AutoraterConfig
autorater_config = AutoraterConfig(sampling_count=6)
# Run evaluation with the sampling count.
eval_result = EvalTask(
dataset=EVAL_DATASET,
metrics=[METRICS],
autorater_config=autorater_config
).evaluate()
Modelo ajustado del juez
Si tienes buenos datos de ajuste para tu caso de uso de evaluación, puedes usar el SDK de Vertex AI para ajustar un modelo de Gemini como modelo de juez y usar el modelo ajustado para la evaluación. Puedes especificar un modelo ajustado como el modelo de juez a través de AutoraterConfig
:
from vertexai.preview.evaluation import {
AutoraterConfig,
PairwiseMetric,
tune_autorater,
evaluate_autorater,
}
# Tune a model to be the judge model. The tune_autorater helper function returns an AutoraterConfig with the judge model set as the tuned model.
autorater_config: AutoRaterConfig = tune_autorater(
base_model="gemini-2.0-flash",
train_dataset=f"{BUCKET_URI}/train/sft_train_samples.jsonl",
validation_dataset=f"{BUCKET_URI}/val/sft_val_samples.jsonl",
tuned_model_display_name=tuned_model_display_name,
)
# Alternatively, you can set up the judge model with an existing tuned model endpoint
autorater_config = AutoraterConfig(autorater_model=TUNED_MODEL)
# Use the tuned judge model
eval_result = EvalTask(
dataset=EVAL_DATASET,
metrics=[METRICS],
autorater_config=autorater_config,
).evaluate()