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:
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
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.
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.
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
- Prova un blocco note di esempio di valutazione.
- Scopri di più sulla valutazione dell'AI generativa.
- Scopri di più sulla valutazione di coppie basate su modello con la pipeline AutoSxS.
- Scopri di più sulla pipeline di valutazione basata sul calcolo.
- Scopri come ottimizzare un modello di base.