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 flusso di lavoro di valutazione di base, consulta la guida introduttiva al servizio di valutazione dell'AI generativa. La serie di articoli sulla personalizzazione del modello di giudice avanzato include le seguenti pagine:

  1. Valutare un modello di giudice
  2. Richiesta di personalizzazione del modello di giudice
  3. Configurare un modello di giudice (pagina corrente)

Panoramica

Per migliorare la qualità, hai a disposizione le seguenti opzioni per configurare il modello di giudice:

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

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 personalità, informazioni contestuali, stile e tono delle spiegazioni. In genere, il modello di valutazione attribuisce maggiore importanza alle istruzioni di sistema rispetto ai prompt di input.

Per un elenco dei modelli che supportano le istruzioni di sistema, vedi Modelli supportati.

Il seguente esempio 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 giudizio

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 di giudizio durante la valutazione.

  • Campionamento multiplo: regola il numero di volte in cui chiamare il modello di valutazione per il punteggio di valutazione al fine di migliorare la coerenza.

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

Inversione della risposta

Per PairwiseMetrics, il servizio di valutazione dell'IA generativa prende in input le risposte per il modello di riferimento e il modello candidato. Il modello di giudice valuta quale risposta è più in linea con i criteri in metric_prompt_template. Tuttavia, il modello di valutazione potrebbe essere orientato verso il modello di riferimento o il modello candidato in determinate impostazioni.

Per ridurre il bias nei risultati della valutazione, puoi attivare il ribaltamento della risposta, in cui metà delle chiamate al modello di valutazione inverte il modello di riferimento e la risposta del modello candidato utilizzando l'SDK Vertex AI:

from vertexai.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()

Multisampling

Durante la valutazione, il modello di giudice potrebbe mostrare una certa casualità nelle risposte. Un campionamento aggiuntivo può contribuire a eliminare la casualità intrinseca del modello di giudice 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 per un numero intero compreso tra 1 e 32. Ti consigliamo di utilizzare il valore predefinito di sampling_count pari a 4 per bilanciare i due fattori di casualità e latenza.

Con l'SDK Vertex AI, puoi specificare il numero di esempi da eseguire per ogni richiesta:

from vertexai.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 di giudizio e utilizzarlo per la valutazione. Puoi specificare un modello ottimizzato come modello di valutazione tramite AutoraterConfig:

from vertexai.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-1.5-pro-002",
    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