Configurare un modello di giudice

Le metriche basate su modelli offrono vari approcci per personalizzare e generare metriche di valutazione in base ai tuoi criteri e casi d'uso. Questa pagina descrive come configurare il modello di valutazione per il tuo caso d'uso ideale.

Per il workflow di valutazione di base, consulta la guida rapida di Gen AI evaluation service. La serie di personalizzazione avanzata del modello di valutazione include le seguenti pagine:

  1. Valuta un modello giudice
  2. Configura un modello di valutazione (pagina corrente)

Panoramica

Per configurare il modello di valutazione in modo da migliorare la qualità, hai a disposizione le seguenti opzioni:

  • Istruzioni di sistema: il modello giudice può elaborare un insieme di istruzioni prima di elaborare i prompt di valutazione.
  • Configurazioni del modello di valutazione:
    • Inversione delle risposte: inverti le risposte del modello di base e del modello candidato per ridurre il bias del modello giudice durante la valutazione.
    • Multicampionamento: regola il numero di volte in cui chiamare il modello giudice per il punteggio di valutazione per migliorare la coerenza.
    • Modello di valutazione ottimizzato: utilizza un LLM ottimizzato come modello di valutazione.

Istruzioni di sistema

I modelli Gemini possono accettare istruzioni di sistema, ovvero un insieme di istruzioni che influiscono sul modo in cui il modello elabora i prompt. Puoi utilizzare le istruzioni di sistema durante l'inizializzazione o la generazione di contenuti da un modello per specificare il comportamento a livello di prodotto, ad esempio ruoli o personas, informazioni contestuali, stile e tono della spiegazione. Il modello giudice in genere attribuisce maggiore importanza alle istruzioni di sistema rispetto ai prompt di input.

L'esempio seguente che utilizza l'SDK Vertex AI aggiunge system_instruction a livello di metrica per 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()

Puoi utilizzare lo stesso approccio con PairwiseMetric.

Configurazione del modello di valutazione

Puoi personalizzare ulteriormente il modello di valutazione tramite autorater_config:

  • Inversione delle risposte: inverti le risposte del modello di riferimento e del modello candidato per ridurre il bias del modello giudice durante la valutazione.

  • Multicampionamento: regola il numero di volte in cui chiamare il modello giudice per il punteggio di valutazione per migliorare la coerenza.

  • Modello di valutazione ottimizzato: utilizza un LLM ottimizzato come modello di valutazione.

Inversione della risposta

Per PairwiseMetrics, Gen AI evaluation service accetta le risposte per il modello di riferimento e il modello candidato. Il modello di valutazione valuta quale risposta si allinea meglio ai criteri indicati in metric_prompt_template. Tuttavia, il modello giudice potrebbe essere sbilanciato verso il modello di base o candidato in determinate impostazioni.

Per ridurre i bias nei risultati della valutazione, puoi attivare l'inversione delle risposte, in cui metà delle chiamate al modello giudice inverte la risposta del modello di riferimento e del modello candidato utilizzando l'SDK 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()

Multicampionamento

Durante la valutazione, il modello giudice potrebbe mostrare una certa casualità nelle sue risposte. Un campionamento aggiuntivo può aiutare a contrastare la casualità intrinseca del modello giudice e portare a risultati più coerenti.

Tuttavia, l'aumento del campionamento aumenta anche la latenza per il completamento della richiesta. Puoi aggiornare il valore del conteggio di campionamento utilizzando AutoraterConfig con un numero intero compreso tra 1 e 32. Ti consigliamo di utilizzare il valore predefinito sampling_count di 4 per bilanciare i due fattori di casualità e latenza.

Utilizzando l'SDK Vertex AI, puoi specificare il numero di esempi eseguiti per ogni richiesta:

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

Modello di giudice ottimizzato

Se disponi di dati di ottimizzazione validi per il tuo caso d'uso di valutazione, puoi utilizzare l'SDK Vertex AI per ottimizzare un modello Gemini come modello giudice e utilizzare il modello ottimizzato per la valutazione. Puoi specificare un modello ottimizzato come modello giudice tramite 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()

Passaggi successivi