Eseguire una valutazione

Puoi utilizzare il modulo di valutazione dell'IA generativa dell'SDK Vertex AI per Python per valutare in modo programmatico i modelli linguistici generativi e le applicazioni con l'API Gen AI evaluation service. Questa pagina mostra come eseguire valutazioni con l'SDK Vertex AI.

Prima di iniziare

Installa l'SDK Vertex AI

Per installare il modulo di valutazione dell'IA generativa dall'SDK Vertex AI per Python, esegui il seguente comando:

!pip install -q google-cloud-aiplatform[evaluation]

Per ulteriori informazioni, consulta Installare l'SDK Vertex AI per Python.

Autentica l'SDK Vertex AI

Dopo aver installato l'SDK Vertex AI per Python, devi eseguire l'autenticazione. I seguenti argomenti spiegano come autenticarsi con l'SDK Vertex AI se si lavora in locale e in Colaboratory:

  • Se esegui lo sviluppo in locale, configura le credenziali predefinite dell'applicazione (ADC) nel tuo ambiente locale:

    1. Installa Google Cloud CLI, quindi inizializzalo eseguendo il seguente comando:

      gcloud init
      
    2. Crea le credenziali di autenticazione locale per il tuo Account Google:

      gcloud auth application-default login
      

      Viene visualizzata una schermata di accesso. Dopo l'accesso, le credenziali vengono memorizzate nel file delle credenziali locali utilizzato da ADC. Per ulteriori informazioni su come lavorare con ADC in un ambiente locale, consulta Ambiente di sviluppo locale.

  • Se stai lavorando in Colaboratory, esegui il seguente comando in una cella di Colab per autenticarti:

    from google.colab import auth
    auth.authenticate_user()
    

    Questo comando apre una finestra in cui puoi completare l'autenticazione.

Informazioni sugli account di servizio

L'account di servizio viene utilizzato dal servizio di valutazione dell'IA generativa per ottenere le predizioni dall'API Gemini in Vertex AI per le metriche di valutazione basate su modelli. Il provisioning di questo account di servizio viene eseguito automaticamente alla prima richiesta al servizio di valutazione dell'IA generativa.

Nome Descrizione Indirizzo email Ruolo
Vertex AI Rapid Eval Service Agent L'account di servizio utilizzato per ottenere le previsioni per la valutazione basata su modelli. service-PROJECT_NUMBER@gcp-sa-vertex-eval.iam.gserviceaccount.com roles/aiplatform.rapidevalServiceAgent

Le autorizzazioni associate all'agente di servizio di valutazione rapida sono:

Ruolo Autorizzazioni
Vertex AI Rapid Eval Service Agent (roles/aiplatform.rapidevalServiceAgent) aiplatform.endpoints.predict

Esegui la valutazione

Utilizza la classe EvalTask per eseguire valutazioni per i seguenti casi d'uso:

Classe EvalTask

La classe EvalTask ti aiuta a valutare modelli e applicazioni in base a attività specifiche. Per fare confronti equi tra i modelli generativi, in genere devi valutare ripetutamente vari modelli e modelli di prompt rispetto a un set di dati di valutazione fisso utilizzando metriche specifiche. È inoltre importante valutare più metriche contemporaneamente in un'unica esecuzione della valutazione.

EvalTask si integra anche con Vertex AI Experiments per aiutarti a monitorare le configurazioni e i risultati di ogni esecuzione di valutazione. Vertex AI Experiments ti aiuta a gestire e interpretare i risultati della valutazione, consentendoti di prendere decisioni consapevoli.

L'esempio seguente mostra come creare un'istanza della classe EvalTask ed eseguire una valutazione:

from vertexai.evaluation import (
    EvalTask,
    PairwiseMetric,
    PairwiseMetricPromptTemplate,
    PointwiseMetric,
    PointwiseMetricPromptTemplate,
    MetricPromptTemplateExamples
)

eval_task = EvalTask(
    dataset=DATASET,
    metrics=[METRIC_1, METRIC_2, METRIC_3],
    experiment=EXPERIMENT_NAME,
)

eval_result = eval_task.evaluate(
    model=MODEL,
    prompt_template=PROMPT_TEMPLATE,
    experiment_run=EXPERIMENT_RUN,
)

Esegui la valutazione con metriche basate su modelli

Per le metriche basate su modelli, utilizza le classi PointwiseMetric e PairwiseMetric per definire metriche personalizzate in base ai tuoi criteri specifici. Esegui le valutazioni utilizzando le seguenti opzioni:

Utilizzare esempi di metriche basate su modelli

Puoi utilizzare direttamente la costante Metric Prompt Template Examples integrata all'interno dell'SDK Vertex AI. In alternativa, modificale e incorporale nell'interfaccia di definizione delle metriche in formato libero.

Per l'elenco completo degli esempi di modelli di prompt delle metriche che coprono la maggior parte dei casi d'uso principali, consulta Modelli di prompt delle metriche.

Il seguente esempio di SDK Vertex AI mostra come utilizzare la classe MetricPromptTemplateExamples per definire le metriche:

# View all the available examples of model-based metrics
MetricPromptTemplateExamples.list_example_metric_names()

# Display the metric prompt template of a specific example metric
print(MetricPromptTemplateExamples.get_prompt_template('fluency'))

# Use the pre-defined model-based metrics directly
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[MetricPromptTemplateExamples.Pointwise.FLUENCY],
)

eval_result = eval_task.evaluate(
    model=MODEL,
)

Utilizza un'interfaccia basata su modelli di metriche basate su modelli

Personalizza le metriche compilando campi come Criteria e Rating Rubrics utilizzando le classi PointwiseMetricPromptTemplate e PairwiseMetricPromptTemplate nell'SDK Vertex AI. Ad alcuni campi, come Instruction, viene assegnato un valore predefinito se non fornisci un input.

Se vuoi, puoi specificare input_variables, ovvero un elenco di campi di input utilizzati dal modello di prompt delle metriche per generare risultati di valutazione basati su modelli. Per impostazione predefinita, la colonna response del modello è inclusa per le metriche punto per punto e le colonne response e baseline_model_response del modello candidato sono incluse per le metriche a coppie.

Per ulteriori informazioni, consulta la sezione "Strutturare un modello di prompt metrico" in Modelli di prompt metrico.

# Define a pointwise metric with two custom criteria
custom_text_quality = PointwiseMetric(
    metric="custom_text_quality",
    metric_prompt_template=PointwiseMetricPromptTemplate(
        criteria={
          "fluency": "Sentences flow smoothly and are easy to read, avoiding awkward phrasing or run-on sentences. Ideas and sentences connect logically, using transitions effectively where needed.",
          "entertaining": "Short, amusing text that incorporates emojis, exclamations and questions to convey quick and spontaneous communication and diversion.",
        },
        rating_rubric={
          "1": "The response performs well on both criteria.",
          "0": "The response is somewhat aligned with both criteria",
          "-1": "The response falls short on both criteria",
        },
        input_variables=["prompt"],
    ),
)

# Display the serialized metric prompt template
print(custom_text_quality.metric_prompt_template)

# Run evaluation using the custom_text_quality metric
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[custom_text_quality],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

Utilizzare l'interfaccia SDK di metriche basate su modelli di tipo libero

Per una maggiore flessibilità nella personalizzazione del modello di prompt della metrica, puoi definire una metrica direttamente utilizzando l'interfaccia in formato libero, che accetta un input di stringa diretto.

# Define a pointwise multi-turn chat quality metric
pointwise_chat_quality_metric_prompt = """Evaluate the AI's contribution to a meaningful conversation, considering coherence, fluency, groundedness, and conciseness.
 Review the chat history for context. Rate the response on a 1-5 scale, with explanations for each criterion and its overall impact.

# Conversation History
{history}

# Current User Prompt
{prompt}

# AI-generated Response
{response}
"""

freeform_multi_turn_chat_quality_metric = PointwiseMetric(
    metric="multi_turn_chat_quality_metric",
    metric_prompt_template=pointwise_chat_quality_metric_prompt,
)

# Run evaluation using the freeform_multi_turn_chat_quality_metric metric
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[freeform_multi_turn_chat_quality_metric],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

Valutare un modello di traduzione

Per valutare il modello di traduzione, puoi specificare BLEU, MetricX o COMET come metriche di valutazione quando utilizzi l'SDK Vertex AI.

#Prepare the dataset for evaluation.
sources = [
    "Dem Feuer konnte Einhalt geboten werden",
    "Schulen und Kindergärten wurden eröffnet.",
]

responses = [
    "The fire could be stopped",
    "Schools and kindergartens were open",
]

references = [
    "They were able to control the fire.",
    "Schools and kindergartens opened",
]

eval_dataset = pd.DataFrame({
    "source": sources,
    "response": responses,
    "reference": references,
})

# Set the metrics.

metrics = [
    "bleu",
    pointwise_metric.Comet(),
    pointwise_metric.MetricX(),
]

eval_task = evaluation.EvalTask(
    dataset=eval_dataset,
    metrics=metrics,
)
eval_result = eval_task.evaluate()

Esegui la valutazione con le metriche basate su calcolo

Puoi utilizzare le metriche basate su calcoli in modo autonomo o insieme alle metriche basate su modelli.

# Combine computation-based metrics "ROUGE" and "BLEU" with model-based metrics
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=["rouge_l_sum", "bleu", custom_text_quality],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

Personalizzazione aggiuntiva delle metriche

Se devi personalizzare ulteriormente le metriche, ad esempio scegliere un modello di valutazione diverso per le metriche basate su modelli o definire una nuova metrica basata su calcoli, puoi utilizzare la classe CustomMetric nell'SDK Vertex AI. Per maggiori dettagli, consulta i seguenti notebook:

Esegui la valutazione basata su modelli con limiti di frequenza e quota più elevati

Una singola richiesta di valutazione per una metrica basata su modello genera più richieste sottostanti all'API Gemini in Vertex AI e consuma la quota del modello di valutazione gemini-1.5-pro. La quota di richieste al modello al minuto (RPM) viene calcolata in base al progetto, il che significa che sia le richieste al modello di valutazione gemini-1.5-pro sia le richieste al servizio di valutazione dell'IA generativa per le metriche basate su modelli vengono conteggiate ai fini della quota RPM del modello di valutazione del progetto in una regione specifica per gemini-1.5-pro.

Devi aumentare la quota RPM del modello di giudice e impostare un limite di frequenza del servizio di valutazione evaluation_service_qps più elevato nei seguenti casi d'uso:

  • Aumento del volume di dati: se elabori molti più dati utilizzando le metriche basate su modelli, probabilmente raggiungerai la quota RPM predefinita. L'aumento della quota ti consente di gestire il volume maggiore senza interruzioni o cali delle prestazioni.

  • Valutazione più rapida:se la tua applicazione richiede tempi di risposta più rapidi per le valutazioni, potresti aver bisogno di una quota RPM più alta. Questo è particolarmente importante per le applicazioni che richiedono tempi rapidi o con interazioni in tempo reale, in cui i ritardi nella valutazione possono influire sull'esperienza utente.

  • Attività di valutazione complesse: una quota RPM più elevata ti garantisce una capacità sufficiente per gestire valutazioni che richiedono molte risorse per attività complesse o grandi quantità di testo.

  • Elevata concorrenza degli utenti:se prevedi che un numero elevato di utenti richieda contemporaneamente valutazioni e inferenze basate su modelli all'interno del tuo progetto, un limite RPM del modello più elevato è fondamentale per evitare colli di bottiglia e mantenere la reattività.

Per aumentare la quota del modello e utilizzare l'SDK del servizio di valutazione dell'IA generativa con limiti di frequenza più elevati, procedi nel seguente modo:

  1. Nella console Google Cloud, vai alla pagina Quote di IAM e amministrazione.

    Visualizzare le quote nella console

  2. Nel campo Filtro, specifica la dimensione (identificatore del modello) e la metrica (identificatore della quota per i modelli Gemini): base_model:gemini-1.5-pro e Metric:aiplatform.googleapis.com/generate_content_requests_per_minute_per_project_per_base_model.

  3. Per la quota che vuoi aumentare, fai clic sul pulsante del menu Altre azioni.

  4. Nel menu a discesa, fai clic su Modifica quota. Viene visualizzato il riquadro Modifiche alla quota.

  5. In Modifica quota, inserisci un nuovo valore di quota.

  6. Fai clic su Invia richiesta.

  7. Una richiesta di aumento della quota verrà confermata via email e in genere richiede due giorni lavorativi per essere elaborata.

  8. Una volta approvata la richiesta di aumento della quota via email, puoi impostare il parametro evaluation_service_qps come segue:

from vertexai.evaluation import EvalTask

# GEMINI_RPM is the requests per minute (RPM) quota for gemini-1.5-pro in your region
# Evaluation Service QPS limit is equal to (gemini-1.5-pro RPM / 60 sec / default number of samples)
CUSTOM_EVAL_SERVICE_QPS_LIMIT = GEMINI_RPM / 60 / 4

eval_task = EvalTask(
    dataset=DATASET,
    metrics=[METRIC_1, METRIC_2, METRIC_3],
)

eval_result = eval_task.evaluate(
    evaluation_service_qps=CUSTOM_EVAL_SERVICE_QPS_LIMIT,
    # Specify a retry_timeout limit for a more responsive evaluation run
    # the default value is 600 (in seconds, or 10 minutes)
    retry_timeout=RETRY_TIMEOUT,
)

Per ulteriori informazioni su quote e limiti, consulta Quote del servizio di valutazione dell'IA generativa e API del servizio di valutazione dell'IA generativa.

Passaggi successivi