Configurar un modelo de juez

Las métricas basadas en modelos ofrecen varios enfoques para personalizar y generar métricas de evaluación en función de tus criterios y casos prácticos. En esta página se describe cómo configurar el modelo de juez para su caso práctico ideal.

Para consultar el flujo de trabajo de evaluación básico, consulta la guía de inicio rápido del servicio de evaluación de la IA generativa. La serie de personalización avanzada de modelos de jueces incluye las siguientes páginas:

  1. Evaluar un modelo de juez
  2. Peticiones para personalizar el modelo de juez
  3. Configurar un modelo de juez (página actual)

Información general

Tiene las siguientes opciones para configurar su modelo de juez y mejorar la calidad:

  • Instrucciones del sistema: el modelo de juez puede procesar un conjunto de instrucciones antes de procesar las peticiones de evaluación.
  • Juzgar las configuraciones del modelo:
    • Inversión de respuestas: invierte las respuestas del modelo de referencia y del modelo candidato para reducir el sesgo del modelo de juez durante la evaluación.
    • Muestreo múltiple: ajusta el número de veces que se llama al modelo de 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 influyen en la forma en que el modelo procesa las peticiones. Puede usar instrucciones del sistema al inicializar o generar contenido a partir de un modelo para especificar el comportamiento a nivel de producto, como roles o perfiles, información contextual y estilo y tono de la explicación. Por lo general, el modelo de juez da más importancia a las instrucciones del sistema que a las peticiones de entrada.

Para ver 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 añade system_instruction a nivel de 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 método con PairwiseMetric.

Configuración del modelo de juez

Puedes personalizar aún más el modelo de juez mediante autorater_config:

  • Inversión de respuestas: invierte las respuestas del modelo de referencia y del modelo candidato para reducir el sesgo del modelo de juez durante la evaluación.

  • Muestreo múltiple: ajusta el número de veces que se llama al modelo de 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.

Inversión de respuestas

En el caso de PairwiseMetrics, el servicio de evaluación de la IA generativa recibe respuestas del modelo de referencia y del modelo candidato. El modelo de juez evalúa qué respuesta se ajusta mejor a los criterios del metric_prompt_template. Sin embargo, el modelo de juez puede estar sesgado hacia el modelo de referencia o el modelo candidato en determinados ajustes.

Para reducir el sesgo en los resultados de la evaluación, puedes habilitar la inversión de respuestas, donde la mitad de las llamadas al modelo de juez invierte la respuesta del modelo de referencia y del modelo candidato mediante 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

Al realizar una evaluación, el modelo de juez puede mostrar cierta aleatoriedad en sus respuestas. Un muestreo adicional puede ayudar a contrarrestar la aleatoriedad inherente del modelo de juez y dar lugar a resultados más coherentes.

Sin embargo, al aumentar el muestreo, también aumenta la latencia para completar la solicitud. Puede actualizar el valor del recuento de muestreo con AutoraterConfig a un número entero entre 1 y 32. Te recomendamos que uses el valor predeterminado sampling_count, que es 4, para equilibrar los dos factores: aleatoriedad y latencia.

Con el SDK de Vertex AI, puedes especificar el número de muestras que se ejecutan en 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 datos de ajuste de buena calidad para tu caso práctico 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 modelo de juez mediante 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()

Siguientes pasos