Configurare un modello di giudice

Le metriche basate sul modello forniscono vari approcci per personalizzare e aiutarti a generare metriche di valutazione in base ai tuoi criteri e casi d'uso. Questa pagina descrive come configurare il modello di giudice per il tuo caso d'uso ideale.

Per il flusso di lavoro 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. Valutare un modello giudice
  2. Richiesta di personalizzazione del modello di valutazione
  3. Configurare un modello di giudice (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 di valutazione può elaborare un insieme di istruzioni prima di elaborare i prompt di valutazione.
  • Configurazioni del modello di valutazione:
    • Inversione delle risposte: inverte le risposte del modello di riferimento e del modello candidato per ridurre il bias del modello giudice durante la valutazione.
    • Multi-sampling: regola il numero di volte in cui chiamare il modello 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 ricevere 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 quando inizializzi o generi contenuti da un modello per specificare il comportamento a livello di prodotto, ad esempio ruoli o buyer persona, informazioni contestuali e stile e tono della spiegazione. Il modello di valutazione in genere assegna un peso maggiore all'importanza delle istruzioni di sistema rispetto ai prompt di input.

Per un elenco dei modelli che supportano le istruzioni di sistema, consulta la sezione Modelli supportati.

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 giudice

Puoi personalizzare ulteriormente il modello di giudice tramite autorater_config:

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

  • Multi-sampling: regola il numero di volte in cui chiamare il modello 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 riceve le risposte per il modello di base e il modello candidato. Il modello giudice valuta quale risposta è più in linea con i criteri indicati in metric_prompt_template. Tuttavia, il modello di valutazione potrebbe essere influenzato dal modello di base o candidato in determinate impostazioni.

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

Multi-sampling

Durante la valutazione, il modello giudice potrebbe mostrare una certa casualità nelle risposte. Un campionamento aggiuntivo può contribuire a neutralizzare la casualità intrinseca del modello di valutazione e a ottenere risultati più coerenti.

Tuttavia, l'aumento del campionamento aumenta anche la latenza per completare la richiesta. Puoi aggiornare il valore del conteggio del 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 campioni 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