Configura un modelo de juez

Las métricas basadas en modelos te permiten personalizar la forma en que generas métricas de evaluación según tus criterios y casos de uso. En esta guía, se muestra cómo configurar un modelo de evaluación y se abarcan los siguientes temas:

  • Elige una opción de configuración: Compara los diferentes métodos disponibles para personalizar tu modelo de juez.
  • Instrucciones del sistema: Proporcionan instrucciones persistentes y de alto nivel al modelo de juez para influir en su comportamiento.
  • Inversión de respuestas: Reduce el posible sesgo posicional intercambiando la posición de las respuestas del modelo de referencia y del modelo candidato.
  • Muestreo múltiple: Mejora la coherencia llamando al modelo de evaluación varias veces para la misma entrada y agregando los resultados.
  • Modelo de juez ajustado: Usa un LLM ajustado como modelo de juez para tareas de evaluación especializadas.

Para conocer el flujo de trabajo de evaluación básico, consulta la guía de inicio rápido de Gen AI Evaluation Service. La serie de personalización avanzada del modelo de juez incluye las siguientes páginas:

  1. Evalúa un modelo de juez
  2. Indicaciones para la personalización del modelo de jueces
  3. Configura un modelo de juez (página actual)

Elige una opción de configuración

Tienes varias opciones para configurar tu modelo de juez y mejorar la calidad. En la siguiente tabla, se proporciona una comparación general de cada enfoque.

Opción Descripción Caso de uso
Instrucciones del sistema Proporciona instrucciones persistentes de alto nivel al modelo de juez que influyen en su comportamiento para todas las instrucciones de evaluación posteriores. Cuando necesitas definir un rol, una persona o un formato de salida coherentes para el modelo de juez en toda la tarea de evaluación.
Inversión de respuesta Intercambia la posición de las respuestas del modelo de referencia y del modelo candidato para la mitad de las llamadas de evaluación. Para reducir el posible sesgo posicional en las evaluaciones por pares, en las que el modelo de juez podría favorecer la respuesta en la primera o segunda posición
Muestreo múltiple Llama al modelo de juez varias veces para la misma entrada y agrega los resultados. Mejorar la coherencia y la confiabilidad de las puntuaciones de evaluación mitigando los efectos de la aleatoriedad en las respuestas del modelo de juez
Modelo de juez ajustado Usa un LLM ajustado como modelo de juez para la evaluación. Para tareas de evaluación especializadas que requieren una comprensión matizada o conocimientos específicos del dominio que un modelo de uso general no tiene.

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, arquetipos, información contextual, y estilo y tono de la explicación. Por lo general, el modelo de juez le da más importancia a las instrucciones del sistema que a las instrucciones de entrada.

Para obtener una lista de los modelos que admiten instrucciones del sistema, consulta Modelos compatibles.

En el siguiente ejemplo, se usa el SDK de Vertex AI para agregar 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.

Inversión de la respuesta

En el caso de PairwiseMetrics, el servicio de evaluación de IA generativa usa respuestas de un modelo de referencia y de un modelo candidato. El modelo de juez evalúa qué respuesta se alinea mejor con los criterios del metric_prompt_template. Sin embargo, el modelo de juez podría estar sesgado hacia el modelo de referencia o el modelo candidato en ciertos parámetros de configuración.

Para reducir el sesgo en los resultados de la evaluación, puedes habilitar la inversión de respuestas. Esta técnica intercambia las respuestas del modelo de referencia y del modelo candidato para la mitad de las llamadas al modelo de juez. En el siguiente ejemplo, se muestra cómo habilitar la inversión de respuestas 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

El modelo de juez puede mostrar aleatoriedad en sus respuestas durante una evaluación. Para mitigar los efectos de esta aleatoriedad y producir resultados más coherentes, puedes usar un muestreo adicional. Esta técnica también se conoce como muestreo múltiple.

Sin embargo, aumentar el muestreo también incrementa 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 sampling_count de 4 para equilibrar la aleatoriedad y la latencia.

Con el SDK de Vertex AI, puedes especificar la cantidad de muestras que se ejecutarán 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 de juez ajustado

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 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()

¿Qué sigue?