Esegui una valutazione rapida

Puoi utilizzare l'SDK Vertex AI per Python per valutare in modo programmatico i modelli di linguaggio generativo.

Installa l'SDK Vertex AI

Per installare la valutazione rapida dall'SDK Vertex AI per Python, esegui questo comando:

pip install --upgrade google-cloud-aiplatform[rapid_evaluation]

Per maggiori 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 eseguire l'autenticazione con l'SDK Vertex AI se lavori in locale e in Colaboratory:

  • Se stai sviluppando in locale, configura le Credenziali predefinite dell'applicazione (ADC) nel tuo ambiente locale:

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

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

      gcloud auth application-default login
      

      Viene visualizzata una schermata di accesso. Dopo l'accesso, le tue credenziali vengono archiviate nel file delle credenziali locali utilizzato da ADC. Per saperne di più su come utilizzare ADC in un ambiente locale, consulta Ambiente di sviluppo locale.

  • Se utilizzi Colaboratory, esegui questo comando in una cella di Colab per eseguire l'autenticazione:

    from google.colab import auth
    auth.authenticate_user()
    

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

Per scoprire di più sull'SDK di valutazione rapida, consulta l'articolo Riferimento all'SDK di valutazione rapida.

Crea un'attività di valutazione

Poiché la valutazione si basa principalmente sulle attività con i modelli di AI generativa, la valutazione online introduce l'astrazione dell'attività di valutazione per facilitare i casi d'uso della valutazione. Per ottenere confronti equi per i modelli generativi, in genere potresti eseguire valutazioni di modelli e modelli di prompt in base a un set di dati di valutazione e alle metriche associate ripetutamente. La classe EvalTask è progettata per supportare questo nuovo paradigma di valutazione. Inoltre, EvalTask ti consente di integrarsi facilmente con Vertex AI Experiments, che può aiutarti a monitorare le impostazioni e i risultati per ogni esecuzione di valutazione. Gli esperimenti di Vertex AI possono aiutarti a gestire e interpretare i risultati della valutazione, in modo da intervenire in meno tempo. L'esempio seguente mostra come creare un'istanza della classe EvalTask ed eseguire una valutazione:

from vertexai.preview.evaluation import EvalTask

eval_task = EvalTask(
  dataset=DATASET,
  metrics=["bleu", "rouge_l_sum"],
  experiment=EXPERIMENT_NAME
)

Il parametro metrics accetta un elenco di metriche, consentendo la valutazione simultanea di più metriche in una singola chiamata di valutazione.

Preparazione del set di dati di valutazione

I set di dati vengono passati a un'istanza EvalTask come DataFrame pandas, dove ogni riga rappresenta un esempio di valutazione separato (denominato istanza) e ogni colonna rappresenta un parametro di input della metrica. Consulta le metrics per conoscere gli input previsti da ogni metrica. Forniamo diversi esempi per la creazione di set di dati per diverse attività di valutazione.

Valutazione del riassunto

Crea un set di dati per un riassunto in punti con le seguenti metriche:

  • summarization_quality
  • groundedness
  • fulfillment
  • summarization_helpfulness
  • summarization_verbosity

Considerando i parametri di input delle metriche richiesti, devi includere le seguenti colonne nel nostro set di dati di valutazione:

  • instruction
  • context
  • response

In questo esempio, abbiamo due istanze di riassunto. Crea i campi instruction e context come input, obbligatori per le valutazioni delle attività di riepilogo:

instructions = [
  # example 1
  "Summarize the text in one sentence.",
  # example 2
  "Summarize the text such that a five-year-old can understand.",
]

contexts = [
  # example 1
  """As part of a comprehensive initiative to tackle urban congestion and foster
sustainable urban living, a major city has revealed ambitious plans for an
extensive overhaul of its public transportation system. The project aims not
only to improve the efficiency and reliability of public transit but also to
reduce the city\'s carbon footprint and promote eco-friendly commuting options.
City officials anticipate that this strategic investment will enhance
accessibility for residents and visitors alike, ushering in a new era of
efficient, environmentally conscious urban transportation.""",
# example 2
  """A team of archaeologists has unearthed ancient artifacts shedding light on a
previously unknown civilization. The findings challenge existing historical
narratives and provide valuable insights into human history.""",
]

Se hai pronto la risposta LLM (il riepilogo) e vuoi eseguire una valutazione BYOP (bring-your-own-prediction), puoi creare l'input di risposta come segue:

responses = [
  # example 1
  "A major city is revamping its public transportation system to fight congestion, reduce emissions, and make getting around greener and easier.",
  # example 2
  "Some people who dig for old things found some very special tools and objects that tell us about people who lived a long, long time ago! What they found is like a new puzzle piece that helps us understand how people used to live.",
]

Con questi input, possiamo creare il nostro set di dati di valutazione e EvalTask.

eval_dataset = pd.DataFrame(
  {
    "instruction": instructions,
    "context":  contexts,
    "response":  responses,
  }
)

eval_task = EvalTask(
  dataset=eval_dataset,
  metrics=[
    'summarization_quality',
    'groundedness',
    'fulfillment',
    'summarization_helpfulness',
    'summarization_verbosity'
  ],
  experiment=EXPERIMENT_NAME
)

Valutazione generale della generazione di testo

Alcune metriche basate su modelli, come coherence, fluency e safety, necessitano solo della risposta del modello per valutare la qualità:

eval_dataset = pd.DataFrame({
  "response": ["""The old lighthouse, perched precariously on the windswept cliff,
had borne witness to countless storms. Its once-bright beam, now dimmed by time
and the relentless sea spray, still flickered with stubborn defiance."""]
})

  eval_task = EvalTask(
  dataset=eval_dataset,
  metrics=["coherence", "fluency", "safety"],
  experiment=EXPERIMENT_NAME
)

Valutazione basata sul calcolo

Le metriche basate sul calcolo, come la corrispondenza esatta, il blu e il rosso, confrontano una risposta a un riferimento e, di conseguenza, hanno bisogno dei campi di risposta e di riferimento nel set di dati di valutazione:

eval_dataset = pd.DataFrame({
  "response": ["The Roman Senate was filled with exuberance due to Pompey's defeat in Asia."],
  "reference": ["The Roman Senate was filled with exuberance due to successes against Catiline."],
})

eval_task = EvalTask(
  dataset=eval_dataset,
  metrics=["exact_match", "bleu", "rouge"],
  experiment=EXPERIMENT_NAME
)

Valutazione dell'utilizzo degli strumenti

Per la valutazione tramite l'uso degli strumenti, devi solo includere la risposta e il riferimento nel set di dati di valutazione.

eval_dataset = pd.DataFrame({
  "response": ["""{
    "content": "",
    "tool_calls":[{
      "name":"get_movie_info",
      "arguments": {"movie":"Mission Impossible", "time": "today 7:30PM"}
    }]
  }"""],
  "reference": ["""{
    "content": "",
    "tool_calls":[{
      "name":"book_tickets",
      "arguments":{"movie":"Mission Impossible", "time": "today 7:30PM"}
      }]
  }"""],
})

eval_task = EvalTask(
  dataset=eval_dataset,
  metrics=["tool_call_valid", "tool_name_match", "tool_parameter_key_match",
"tool_parameter_kv_match"],
  experiment=EXPERIMENT_NAME
)

Pacchetti di metriche

I pacchetti di metriche combinano metriche comunemente associate per semplificare il processo di valutazione. Le metriche sono classificate in questi quattro pacchetti:

  • Attività di valutazione: riepilogo, risposta alle domande e generazione di testi
  • Prospettive di valutazione: somiglianza, sicurezza e qualità
  • Coerenza input: tutte le metriche nello stesso bundle prendono gli stessi input per set di dati
  • Paradigma di valutazione: a punti o a coppie

Puoi utilizzare questi bundle di metriche nel servizio di valutazione online per ottimizzare il flusso di lavoro di valutazione personalizzata.

Questa tabella elenca i dettagli sui pacchetti di metriche disponibili:

Nome pacchetto metriche Nome metrica Colonna del set di dati obbligatoria
text_generation_similarity exact_match
bleu
rouge
riferimento
risposta
tool_call_quality tool_call_valid
tool_name_match
tool_parameter_key_match
tool_parameter_kv_match
riferimento
risposta
text_generation_quality coherence
fluency
risposta
text_generation_instruction_following fulfillment riferimento
risposta
text_generation_safety safety risposta
text_generation_factuality groundedness contesto
risposta
summarization_pointwise_reference_free summarization_quality
summarization_helpfulness
summarization_verbosity
istruzione
contesto
risposta
summary_pairwise_reference_free pairwise_summarization_quality istruzione
contesto
risposta
qa_pointwise_reference_free question_answering_quality
question_answering_relevance
question_answering_helpfulness
istruzione
contesto
risposta
qa_pointwise_reference_based question_answering_correctness risposta
contesto
istruzione
riferimento
qa_pairwise_reference_free pairwise_question_answering_quality istruzione
contesto
risposta

Visualizza i risultati di una valutazione

Dopo aver definito l'attività di valutazione, eseguila per ottenere i risultati della valutazione, come segue:

eval_result: EvalResult = eval_task.evaluate(
  model=MODEL,
  prompt_template=PROMPT_TEMPLATE
)

La classe EvalResult rappresenta il risultato di un'esecuzione di una valutazione, che include metriche di riepilogo e una tabella delle metriche con un'istanza del set di dati di valutazione e le metriche per istanza corrispondenti. Definisci la classe come segue:

@dataclasses.dataclass
class EvalResult:
  """Evaluation result.

  Attributes:
    summary_metrics: the summary evaluation metrics for an evaluation run.
    metrics_table: a table containing eval inputs, ground truth, and
      metrics per row.
  """
  summary_metrics: Dict[str, float]
  metrics_table: Optional[pd.DataFrame] = None

Con l'uso delle funzioni helper, i risultati della valutazione possono essere visualizzati nel blocco note di Colab.

Qualità del riassunto

Visualizzazioni

Puoi tracciare metriche di riepilogo in un grafico radar o a barre per la visualizzazione e il confronto tra i risultati di diverse esecuzioni di valutazione. Questa visualizzazione può essere utile per valutare diversi modelli e modelli di prompt.

Grafico radar

Metriche del grafico a barre

API Rapid Evaluation

Per informazioni sull'API di valutazione rapida, consulta l'articolo sull'API di valutazione rapida.

Informazioni sugli account di servizio

Gli account di servizio vengono utilizzati dal servizio di valutazione online per ottenere previsioni dal servizio di previsione online per le metriche di valutazione basate su modelli. Viene eseguito automaticamente il provisioning di questo account di servizio alla prima richiesta al servizio di valutazione online.

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

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

Ruolo Autorizzazioni
Agente di servizio Vertex AI Rapid Eval (roles/aiplatform.rapidevalServiceAgent) aiplatform.endpoints.predict

Passaggi successivi