Esegui una valutazione rapida

Puoi utilizzare lo 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, vedi Installa l'SDK Vertex AI per Python.

Autentica l'SDK Vertex AI

Dopo aver installato l'SDK Vertex AI per Python, devi eseguire l'autenticazione. Le seguenti in cui viene spiegato come eseguire l'autenticazione con l'SDK Vertex AI a livello locale e se lavori in Colaboratory:

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

    1. Installa Google Cloud CLI, quindi inizializzala 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 memorizzate nel file delle credenziali locali utilizzato da ADC. Per ulteriori informazioni sul lavoro con ADC in un ambiente locale, vedi Ambiente di sviluppo locale.

  • Se stai lavorando in Colaboratory, esegui il comando seguente in un Cella Colab per l'autenticazione:

    from google.colab import auth
    auth.authenticate_user()
    

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

Consulta il riferimento per l'SDK di valutazione rapida per scoprire di più sull'SDK di valutazione rapida.

Crea un'attività di valutazione

Perché la valutazione è per lo più basata su attività grazie ai modelli di IA generativa, La valutazione introduce l'astrazione delle attività di valutazione per facilitare la valutazione e casi d'uso specifici. Per ottenere confronti equi tra i modelli generativi, esegui valutazioni per modelli e modelli di prompt in base a un set di dati di valutazione e le relative metriche associate ripetutamente. Il corso EvalTask è progettato per supportano questo nuovo paradigma di valutazione. Inoltre, EvalTask ti consente si integrano perfettamente con Esperimenti Vertex AI, che può aiutare a monitorare impostazioni e risultati per ogni esecuzione di valutazione. Vertex AI Experiments può aiutarti a gestire e interpretare i risultati delle valutazioni, consentendoti di intervenire in meno tempo. L'esempio seguente mostra come crea un'istanza della classe EvalTask ed esegui 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 il 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, in cui ogni riga rappresenta un esempio di valutazione separato (chiamato istanza) e ogni colonna rappresenta un parametro di input della metrica. Vedi le metriche per gli input previsti da ogni metrica. Forniamo diversi esempi per creare il set di dati di valutazione per diverse attività di valutazione.

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 seguenti colonne nel nostro set di dati di valutazione:

  • instruction
  • context
  • response

In questo esempio, abbiamo due istanze di riassunto. Costruire il instruction e context come input, obbligatori per 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 riassunto) e vuoi farlo la valutazione BYOP (Bring Your Own Prediction), puoi creare la 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 costruire il nostro set di dati di valutazione 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 basata su modello come coherence, fluency e safety, hanno bisogno solo del modello risposta 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

Metriche basate sul calcolo, come esatta, bleu e rouge, confrontare una risposta con un riferimento e, di conseguenza, aver bisogno sia di campi 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 di strumenti (chiamate di funzione)

Per la valutazione delle chiamate di strumenti (funzioni), è sufficiente includere la risposta e come 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 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 lo stesso set di dati input
  • 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
previsione
text_generation_instruction_following fulfillment previsione
istruzione
text_generation_safety safety previsione
text_generation_factuality groundedness prediction
context
summarization_pointwise_reference_free summarization_quality
summarization_helpfulness
summarization_verbosity
prediction
context
instruction
summary_pairwise_reference_free pairwise_summarization_quality prediction
context
instruction
qa_pointwise_reference_free question_answering_quality
question_answering_relevance
question_answering_helpfulness
prediction
context
instruction
qa_pointwise_reference_based question_answering_correctness prediction
context
instruction
reference
qa_pairwise_reference_free pairwise_question_answering_quality prediction
context
instruction

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 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 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. Questo la visualizzazione può essere utile per valutare modelli diversi e modelli di prompt.

Grafico radar

Metriche del grafico a barre

API Rapid Assessment

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

Informazioni sugli account di servizio

Gli account di servizio vengono usati dal servizio di valutazione online per Previsioni del servizio di previsione online per la valutazione basata su modelli metriche di valutazione. 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