Esegui una valutazione rapida

Puoi utilizzare l'SDK Vertex AI per Python per valutare in modo programmatico i modelli linguistici generativi.

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

  • Se stai sviluppando localmente, 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 aver eseguito l'accesso, le credenziali vengono archiviate nel file delle credenziali locali utilizzato da ADC. Per ulteriori informazioni sull'utilizzo di ADC in un ambiente locale, consulta Ambiente di sviluppo locale.

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

    from google.colab import auth
    auth.authenticate_user()
    

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

Consulta Riferimento SDK Rapid Assessment per scoprire di più sull'SDK.

Crea un'attività di valutazione

Poiché la valutazione è prevalentemente basata su attività con modelli di AI generativa, la valutazione online introduce l'astrazione delle attività di valutazione per facilitare i casi d'uso della valutazione. Per ottenere confronti equi per i modelli generativi, in genere si possono eseguire valutazioni per modelli e modelli di prompt in base a un set di dati di valutazione e le relative metriche associate. La classe EvalTask è progettata per supportare questo nuovo paradigma di valutazione. Inoltre, EvalTask consente un'integrazione perfetta con Vertex AI Experiments, che può aiutare a monitorare impostazioni e risultati per ogni esecuzione di valutazione. Vertex AI Experiments può aiutarti a gestire e interpretare i risultati della valutazione, permettendoti di agire 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 un'unica 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 (chiamato istanza) e ogni colonna rappresenta un parametro di input della metrica. Consulta le metrics per gli input previsti da ciascuna metrica. Forniamo diversi esempi di creazione del set di dati di valutazione per diverse attività.

Valutazione del riassunto

Crea un set di dati per il riassunto puntuale con le seguenti metriche:

  • summarization_quality
  • groundedness
  • fulfillment
  • summarization_helpfulness
  • summarization_verbosity

Considerando i parametri di input della metrica 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, richiesti dalle valutazioni delle attività di riassunto:

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 la risposta LLM (riassunto) pronta e vuoi eseguire la 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, siamo pronti a 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 testi

Alcune metriche basate sul modello, come coherence, fluency e safety, hanno bisogno 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 corrispondenza esatta, bleu e rouge, confrontano una risposta con un riferimento e, di conseguenza, richiedono sia i campi di risposta che 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'uso degli strumenti

Per la valutazione dell'uso degli strumenti, è sufficiente 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
)

Gruppi di metriche

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

  • Attività di valutazione: sintesi, risposta alle domande e generazione di testi
  • Prospettive di valutazione: somiglianza, sicurezza e qualità
  • Coerenza dell'input: tutte le metriche nello stesso bundle utilizzano gli input dello stesso set di dati
  • Paradigma di valutazione: puntuale e a coppie

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

In questa tabella sono elencati i dettagli sui pacchetti di metriche disponibili:

Nome pacchetto di metriche Nome metrica Input utente
text_generation_similarity exact_match
bleu
rouge
riferimento
per la previsione
tool_call_quality tool_call_valid
tool_name_match
tool_parameter_key_match
tool_parameter_kv_match
riferimento
per la previsione
text_generation_quality coherence
fluency
la previsione.
text_generation_instruction_following fulfillment riferimento
per la previsione
text_generation_safety safety la previsione.
text_generation_factuality groundedness contesto
previsione
summarization_pointwise_reference_free summarization_quality
summarization_helpfulness
summarization_verbosity
istruzione
contesto
previsione
summary_pairwise_reference_free pairwise_summarization_quality istruzione
contesto
previsione
qa_pointwise_reference_free question_answering_quality
question_answering_relevance
question_answering_helpfulness
istruzione
contesto
previsione
qa_pointwise_reference_based question_answering_correctness previsione
contesto
istruzione
riferimento
qa_pairwise_reference_free pairwise_question_answering_quality istruzione
contesto
previsione

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 valutazione, che include metriche di riepilogo e una tabella delle metriche con un'istanza del set di dati di valutazione e 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 diversi modelli di prompt.

Grafico radar

Metriche del grafico a barre

API Rapid Assessment

Per informazioni sull'API di valutazione rapida, consulta la pagina relativa all'API di valutazione rapida.

Informazioni sugli account di servizio

Gli account di servizio vengono utilizzati dal servizio di valutazione online per ottenere dal servizio di previsione online le previsioni 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 online.

Nome Descrizione Indirizzo email Ruolo
Vertex AI Rapid Eval Service Agent L'account di servizio utilizzato per ottenere previsioni per la valutazione basata sul 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