Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Usa la fmeval
libreria per eseguire una valutazione automatica
L'utilizzo della fmeval
libreria nel proprio codice offre la massima flessibilità per personalizzare il flusso di lavoro. È possibile utilizzare la fmeval
libreria per valutare qualsiasi LLM e anche per avere maggiore flessibilità con i set di dati di input personalizzati. I passaggi seguenti mostrano come configurare l'ambiente e come eseguire sia un flusso di lavoro iniziale che uno personalizzato utilizzando la fmeval
libreria.
Inizia a usare la fmeval
libreria
Puoi configurare la valutazione del modello di base e personalizzarlo in base al tuo caso d'uso in un notebook Studio. La configurazione dipende sia dal tipo di attività che il modello di base è progettato per prevedere, sia dal modo in cui si desidera valutarla. FMEval supporta attività aperte di generazione, riepilogo del testo, risposta alle domande e classificazione. I passaggi di questa sezione mostrano come impostare un flusso di lavoro iniziale. Questo flusso di lavoro iniziale include la configurazione dell'ambiente e l'esecuzione di un algoritmo di valutazione utilizzando un modello di base Amazon Bedrock JumpStart o uno con set di dati integrati. Se devi utilizzare un set di dati di input e un flusso di lavoro personalizzati per un caso d'uso più specifico, consulta. Personalizza il tuo flusso di lavoro utilizzando la libreria fmeval
Se non desideri eseguire una valutazione del modello in un notebook Studio, vai al passaggio 11 della seguente sezione Guida introduttiva a Studio.
Prerequisiti
-
Per eseguire una valutazione del modello in un'interfaccia utente di Studio, il ruolo AWS Identity and Access Management (IAM) e tutti i set di dati di input devono disporre delle autorizzazioni corrette. Se non disponi di un dominio SageMaker AI o di un ruolo IAM, segui i passaggi indicati. Guida alla configurazione con Amazon SageMaker AI
Per impostare le autorizzazioni per il tuo bucket Amazon S3
Dopo aver creato il dominio e il ruolo, segui i passaggi seguenti per aggiungere le autorizzazioni necessarie per valutare il tuo modello.
Apri la console Amazon SageMaker AI all'indirizzo https://console.aws.amazon.com/sagemaker/
. -
Nel riquadro di navigazione,
S3
accedi alla barra di ricerca nella parte superiore della pagina. -
Scegli S3 in Servizi.
-
Scegli Bucket dal pannello di navigazione.
-
Nella sezione General Purpose Bucket, sotto Nome, scegli il nome del bucket S3 che desideri utilizzare per memorizzare l'input e l'output del modello nella console. Se non disponi di un bucket S3, procedi come segue:
-
Seleziona Crea bucket per aprire una nuova pagina Crea bucket.
-
Nella sezione Configurazione generale, in AWS Regione, seleziona la AWS regione in cui si trova il modello di base.
-
Assegna un nome al bucket S3 nella casella di immissione sotto Nome del bucket.
-
Accetta tutte le scelte predefinite.
-
Seleziona Crea bucket.
-
Nella sezione General Purpose bucket, sotto Nome, seleziona il nome del bucket S3 che hai creato.
-
-
Scegli la scheda Autorizzazioni.
-
Scorri fino alla sezione Cross-origin resource sharing (CORS) nella parte inferiore della finestra. Scegli Modifica.
-
Per aggiungere le autorizzazioni al tuo bucket per le valutazioni della fondazione, assicurati che nella casella di input compaia il codice seguente. Puoi anche copiare e incollare quanto segue nella casella di input.
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [ "Access-Control-Allow-Origin" ] } ]
-
Scegli Save changes (Salva modifiche).
Per aggiungere autorizzazioni alla tua policy IAM
-
Nella barra di ricerca nella parte superiore della pagina, inserisci
IAM
. -
In Servizi, seleziona Identity and Access Management (IAM).
-
Scegli Politiche dal riquadro di navigazione.
-
Inserisci AmazonSageMakerFullAccessnella barra di ricerca. Seleziona il pulsante radio accanto alla politica che appare. Il pulsante Azioni può ora essere selezionato.
-
Scegli la freccia rivolta verso il basso accanto a Azioni. Vengono visualizzate due opzioni.
-
Scegli Collega.
-
Nell'elenco IAM visualizzato, cerca il nome del ruolo che hai creato. Seleziona la casella di controllo accanto al nome.
-
Scegli Collega policy.
Inizia a usare Studio
-
Nella barra di ricerca nella parte superiore della pagina, inserisci
SageMaker AI
. -
In Servizi, seleziona Amazon SageMaker AI.
-
Scegli Studio dal pannello di navigazione.
-
Scegli il tuo dominio dalla sezione Guida introduttiva, dopo aver espanso la freccia rivolta verso il basso sotto Seleziona dominio.
-
Scegli il tuo profilo utente dalla sezione Guida introduttiva dopo aver espanso la freccia rivolta verso il basso sotto Seleziona profilo utente.
-
Scegli Open Studio per aprire la pagina di destinazione di Studio.
-
Seleziona il browser di file dal pannello di navigazione e vai alla directory principale.
-
Seleziona Crea taccuino.
-
Nella finestra di dialogo relativa all'ambiente del notebook che si apre, seleziona l'immagine Data Science 3.0.
-
Scegli Seleziona.
-
Installa il
fmeval
pacchetto nel tuo ambiente di sviluppo, come mostrato nel seguente esempio di codice:!pip install fmeval
Nota
Installa la
fmeval
libreria in un ambiente che utilizza Python 3.10. Per ulteriori informazioni sui requisiti necessari per l'esecuzionefmeval
, consultafmeval
dipendenze.
FMEval utilizza un wrapper di alto livello chiamato per ModelRunner
comporre l'input, richiamare ed estrarre l'output dal modello. Il fmeval
pacchetto può valutare qualsiasi LLM, tuttavia la procedura da configurare ModelRunner
dipende dal tipo di modello che si desidera valutare. Questa sezione spiega come configurare ModelRunner
per un JumpStart modello Amazon Bedrock. Se desideri utilizzare un set di dati di input personalizzato e personalizzatoModelRunner
, consulta. Personalizza il tuo flusso di lavoro utilizzando la libreria fmeval
Usa un modello JumpStart
Da utilizzare ModelRunner
per valutare un JumpStart modello, creare o fornire un endpoint, definire il modello e il set di dati integrato, configurare e testare. ModelRunner
Definire un JumpStart modello e configurare un ModelRunner
-
Fornisci un endpoint effettuando una delle seguenti operazioni:
-
EndpointNameSpecificare su un JumpStart endpoint esistente, il
model_id
, e.model_version
-
Specificate la
model_id
emodel_version
per il modello e create un JumpStart endpoint.
Il seguente esempio di codice mostra come creare un endpoint per un Llama 2 foundation model
disponibile tramite JumpStart. import sagemaker from sagemaker.jumpstart.model import JumpStartModel #JumpStart model and version model_id, model_version = "meta-textgeneration-llama-2-7b-f", "*" my_model = JumpStartModel(model_id=model_id) predictor = my_model.deploy() endpoint_name = predictor.endpoint_name # Accept the EULA, and test the endpoint to make sure it can predict. predictor.predict({"inputs": [[{"role":"user", "content": "Hello how are you?"}]]}, custom_attributes='accept_eula=true')
L'esempio di codice precedente si riferisce a EULA, che sta per end-use-license-agreement (EULA). L'EULA si trova nella descrizione della scheda modello del modello che si sta utilizzando. Per utilizzare alcuni JumpStart modelli, è necessario specificare
accept_eula=true
, come mostrato nella precedente chiamata apredict
. Per ulteriori informazioni sull'EULA, consulta la sezione Licenze e fonti dei modelli in. Fonti dei modelli e contratti di licenzaÈ possibile trovare un elenco dei JumpStart modelli disponibili in Built-in Algorithms with pre-training
Model Table. -
-
Configura
ModelRunner
utilizzandoJumpStartModelRunner
, come illustrato nel seguente esempio di configurazione:from fmeval.model_runners.sm_jumpstart_model_runner import JumpStartModelRunner js_model_runner = JumpStartModelRunner( endpoint_name=endpoint_name, model_id=model_id, model_version=model_version )
Nell'esempio di configurazione precedente, utilizza gli stessi valori per
endpoint_name
emodel_version
che hai usato per creare l'endpoint.model_id
-
Metti alla prova il tuo.
ModelRunner
Invia una richiesta di esempio al tuo modello come mostrato nel seguente esempio di codice:js_model_runner.predict("What is the capital of London")
Usa un modello Amazon Bedrock
Per valutare un modello Amazon Bedrock, devi definire il modello e il set di dati integrato e configurarlo. ModelRunner
Definisci un modello Amazon Bedrock e configura un ModelRunner
-
Per definire e stampare i dettagli del modello, utilizza il seguente esempio di codice per un modello Titan disponibile tramite Amazon Bedrock:
import boto3 import json bedrock = boto3.client(service_name='bedrock') bedrock_runtime = boto3.client(service_name='bedrock-runtime') model_id = "amazon.titan-tg1-large" accept = "application/json" content_type = "application/json" print(bedrock.get_foundation_model(modelIdentifier=modelId).get('modelDetails'))
Nell'esempio di codice precedente, il
accept
parametro specifica il formato dei dati che desideri utilizzare per valutare il tuo LLM.contentType
specifica il formato dei dati di input nella richiesta.MIME_TYPE_JSON
È supportato solo peraccept
econtentType
per i modelli Amazon Bedrock. Per ulteriori informazioni su questi parametri, consultare InvokeModelWithResponseStream. -
Per configurare
ModelRunner
, usaBedrockModelRunner
, come mostrato nel seguente esempio di configurazione:from fmeval.model_runners.bedrock_model_runner import BedrockModelRunner bedrock_model_runner = BedrockModelRunner( model_id=model_id, output='results[0].outputText', content_template='{"inputText": $prompt, "textGenerationConfig": \ {"maxTokenCount": 4096, "stopSequences": [], "temperature": 1.0, "topP": 1.0}}', )
Parametrizzate la
ModelRunner
configurazione come segue.-
Utilizzate gli stessi valori
model_id
utilizzati per distribuire il modello. -
Utilizzare
output
per specificare il formato dellajson
risposta generata. Ad esempio, se il tuo LLM ha fornito la risposta[{"results": "this is the output"}]
,output='results[0].outputText'
restituiscethis is the output
. -
Usa
content_template
per specificare come il tuo LLM interagisce con le richieste. Il seguente modello di configurazione è dettagliato esclusivamente per spiegare l'esempio di configurazione precedente e non è obbligatorio.-
Nell'esempio di configurazione precedente, la variabile
inputText
specifica il prompt, che acquisisce la richiesta effettuata dall'utente. -
La variabile
textGenerationConfig
specifica in che modo l'LLM genera le risposte come segue:-
Il parametro
maxTokenCount
viene utilizzato per limitare la lunghezza della risposta limitando il numero di token restituiti dal LLM. -
Il parametro
stopSequences
viene utilizzato per specificare un elenco di sequenze di caratteri che indicano al LLM di interrompere la generazione di una risposta. L'output del modello viene interrotto la prima volta che una delle stringhe elencate viene rilevata nell'output. Ad esempio, potete utilizzare una sequenza di restituzione del carrello per limitare la risposta del modello a una singola riga. -
Il parametro
topP
controlla la casualità limitando l'insieme di token da considerare nella generazione del token successivo. Questo parametro accetta valori compresi tra e.0.0
1.0
I valori più alti ditopP
allow per un set contenente un vocabolario più ampio e i valori più bassi limitano l'insieme di token a parole più probabili. -
Il parametro
temperature
controlla la casualità del testo generato e accetta valori positivi. I valori più alti ditemperature
indicano al modello di generare risposte più casuali e diversificate. I valori più bassi generano risposte più prevedibili. Intervalli tipicitemperature
compresi tra0.2
e2.0
.
Per ulteriori informazioni sui parametri per uno specifico modello di base Amazon Bedrock, consulta Parametri di inferenza per modelli di base.
-
Il formato del parametro content_template dipende dagli input e dai parametri supportati dal tuo LLM. Ad esempio, .Anthropic’s Claude 2 il modello
può supportare quanto segue: content_template
"content_template": "{\"prompt\": $prompt, \"max_tokens_to_sample\": 500}"
Come altro esempio, il modello Falcon 7b
può supportare quanto segue. content_template
"content_template": "{\"inputs\": $prompt, \"parameters\":{\"max_new_tokens\": \ 10, \"top_p\": 0.9, \"temperature\": 0.8}}"
Infine, prova il tuo.
ModelRunner
Invia una richiesta di esempio al tuo modello come mostrato nel seguente esempio di codice:bedrock_model_runner.predict("What is the capital of London?")
-
-
Dopo aver configurato i datiModelRunner
, puoi eseguire un algoritmo di valutazione sulle risposte generate dal tuo LLM. Per visualizzare un elenco di tutti gli algoritmi di valutazione disponibili, esegui il codice seguente:
from fmeval.eval_algo_mapping import EVAL_ALGORITHMS print(EVAL_ALGORITHMS.keys())
Ogni algoritmo ha sia una valutazione che un evaluate_sample
metodo. Il evaluate
metodo calcola un punteggio per l'intero set di dati. Il evaluate_sample
metodo valuta il punteggio per una singola istanza.
Il evaluate_sample
metodo restituisce EvalScore
oggetti. EvalScore
gli oggetti contengono punteggi aggregati delle prestazioni del modello durante la valutazione. Il evaluate_sample
metodo ha i seguenti parametri opzionali:
-
model_output
— Il modello di risposta per una singola richiesta. -
model_input
— Un prompt contenente la richiesta al modello. -
target_output
— La risposta prevista dal prompt contenuto in.model_input
Il seguente esempio di codice mostra come utilizzare: evaluate_sample
#Evaluate your custom sample model_output = model_runner.predict("London is the capital of?")[0] eval_algo.evaluate_sample(target_output="UK<OR>England<OR>United Kingdom", model_output=model_output)
Il evaluate
metodo ha i seguenti parametri opzionali:
-
model
— Un'istanza diModelRunner
utilizzo del modello che si desidera valutare. -
dataset_config
— La configurazione del set di dati. Se nondataset_config
viene fornito, il modello viene valutato utilizzando tutti i set di dati incorporati configurati per questa attività. -
prompt_template
— Un modello utilizzato per generare prompt. Se nonprompt_template
viene fornito, il modello viene valutato utilizzando un modello di prompt predefinito. -
save
— Se impostato suTrue
, le risposte ai prompt e i punteggi registrati vengono salvati nel file.EvalAlgorithmInterface.EVAL_RESULTS_PATH
L'impostazione predefinita èFalse
. -
num_records
— Il numero di record che vengono campionati casualmente dal set di dati di input per la valutazione. L'impostazione predefinita è300
.
L'evaluate
algoritmo restituisce un elenco di EvalOutput
oggetti che possono includere quanto segue:
-
eval_name
— Il nome dell'algoritmo di valutazione.dataset_name
— Il nome del set di dati utilizzato dall'algoritmo di valutazione.prompt_template
— Un modello utilizzato per comporre prompt che viene utilizzato se il parametro nonmodel_output
è fornito nel set di dati. Per ulteriori informazioni, consulta la sezione Configurareprompt_template
un. JumpStartModelRunner
dataset_scores
— Un punteggio aggregato calcolato sull'intero set di dati.category_scores
— Un elenco diCategoryScore
oggetti che contengono i punteggi per ogni categoria nel set di dati.output_path
— Il percorso locale dell'output di valutazione. Questo output contiene risposte tempestive con punteggi di valutazione record.error
— Un messaggio di errore di tipo stringa relativo a un processo di valutazione non riuscito.
Le seguenti dimensioni sono disponibili per la valutazione del modello:
-
Accuratezza
-
Conoscenza fattuale
-
Stereotipi rapidi
-
Robustezza semantica
-
Tossicità
Accuratezza
È possibile eseguire un algoritmo di precisione per un'attività di risposta a domande, riepilogo del testo o classificazione. Gli algoritmi sono diversi per ogni attività, al fine di adattarsi ai diversi tipi e problemi di input dei dati, come segue:
-
Per le attività di risposta alle domande, esegui l'
QAAccuracy
algoritmo con unQAAccuracyConfig
file. -
Per le attività di riepilogo del testo, esegui l'
SummarizationAccuracy
algoritmo con un.SummarizationAccuracyConfig
-
Per le attività di classificazione, esegui l'
ClassificationAccuracy
algoritmo con aClassificationAccuracyConfig
.
L'QAAccuracy
algoritmo restituisce un elenco di EvalOutput
oggetti che contiene un punteggio di precisione per ogni campione. Per eseguire l'algoritmo di precisione della risposta alla domanda, istanzia a QAAccuracygeConfig
e inseriscilo <OR>
o None
come. target_output_delimiter
L'algoritmo di precisione della risposta alla domanda confronta la risposta generata dal modello con una risposta nota. Se passate <OR>
come delimitatore di destinazione, l'algoritmo valuta la risposta come corretta se genera uno qualsiasi dei contenuti separati da quelli presenti <OR>
nella risposta. Se si passa None
una stringa vuota come latarget_output_delimiter
, il codice genera un errore.
Chiamate il evaluate
metodo e inserite i parametri desiderati come mostrato nel seguente esempio di codice:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.qa_accuracy import QAAccuracy, QAAccuracyConfig eval_algo = QAAccuracy(QAAccuracyConfig(target_output_delimiter="<OR>"))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
L'SummarizationAccuracy
algoritmo restituisce un elenco di EvalOutput
oggetti che contengono punteggi per ROUGE-NSummarizationAccuracyConfig
e inserite quanto segue:
-
Specificate il tipo di ROUGE
metrica per cui desideri utilizzare nella valutazione. rouge_type
È possibile scegliererouge1
,rouge2
, oppurerougeL
. Queste metriche confrontano i riepiloghi generati con i riepiloghi di riferimento. ROUGE-1 confronta i riepiloghi generati e i riepiloghi di riferimento utilizzando unigrammi sovrapposti (sequenze di un elemento come «the», «is»). ROUGE-2 confronta i riepiloghi generati e quelli di riferimento utilizzando i bigrammi (gruppi di due sequenze come «the large», «is home»). ROUGE-L confronta la sequenza di parole corrispondenti più lunga. Per ulteriori informazioni sull' ROUGE, vedi ROUGE: Un pacchetto per la valutazione automatica dei riepiloghi. -
Imposta
use_stemmer_for_rouge
suTrue
oFalse
. Uno stemmer rimuove gli affissi dalle parole prima di confrontarle. Ad esempio, uno stemmer rimuove gli affissi da «swing» e «swam» in modo che entrambi «nuotino» dopo la stampigliatura. -
Imposta model_type_for_bertscore sul modello che vuoi usare per calcolare un BERTScore
. Puoi scegliere ROBERTA_MODEL o il più avanzato MICROSOFT_DEBERTA_MODEL .
Infine, chiamate il evaluate
metodo e passate i parametri desiderati come mostrato nel seguente esempio di codice:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.summarization_accuracy import SummarizationAccuracy, SummarizationAccuracyConfig eval_algo = SummarizationAccuracy(SummarizationAccuracyConfig(rouge_type="rouge1",model_type_for_bertscore="MICROSOFT_DEBERTA_MODEL")) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
L'ClassificationAccuracy
algoritmo restituisce un elenco di EvalOutput
oggetti che contengono i punteggi di precisione, precisione, richiamo e precisione bilanciata della classificazione per ogni campione. Per ulteriori informazioni su questi punteggi, vedere la sezione Classificazione inUtilizzo di set di dati rapidi e dimensioni di valutazione disponibili nei lavori di valutazione dei modelli . Per eseguire l'algoritmo di precisione della classificazione, crea un'istanza ClassificationAccuracyConfig
e trasmetti una strategia di calcolo della media a. multiclass_average_strategy
Puoi sceglieremicro
,, macro
samples
, weighted
o. binary
Il valore predefinito è micro
. Quindi, trasmetti un elenco contenente i nomi delle colonne che contengono le vere etichette per le tue categorie di classificazione a valid_labels. Infine, chiamate il evaluate
metodo e passate i parametri desiderati come mostrato nel seguente esempio di codice:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.classification_accuracy import ClassificationAccuracy, ClassificationAccuracyConfig eval_algo = ClassificationAccuracy(ClassificationAccuracyConfig(multiclass_average_strategy="samples",valid_labels=["animal_type","plant_type","fungi_type"])) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
Conoscenza fattuale
È possibile eseguire l'algoritmo di conoscenza fattuale per la generazione aperta. Per eseguire l'algoritmo di conoscenza dei fatti, crea un'istanza FactualKnowledgeConfig
e, facoltativamente, passa una stringa delimitatrice (per impostazione predefinita, questa è). <OR>
L'algoritmo di conoscenza dei fatti confronta la risposta generata dal modello con una risposta nota. L'algoritmo valuta la risposta come corretta se genera un contenuto separato dal delimitatore nella risposta. Se si passa None
come rispostatarget_output_delimiter
, il modello deve generare la stessa risposta della risposta per ottenere un punteggio corretto. Infine, chiamate il evaluate
metodo e inserite i parametri desiderati.
La conoscenza fattuale restituisce un elenco di oggetti. EvalScore
Questi contengono punteggi aggregati sulla capacità del modello di codificare le conoscenze fattuali, come descritto nella sezione panoramica sulla valutazione del modello Foundation. I punteggi variano tra 0
e 1
con il punteggio più basso corrispondente a una conoscenza inferiore dei fatti del mondo reale.
Il seguente esempio di codice mostra come valutare il tuo LLM utilizzando l'algoritmo di conoscenza fattuale:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.factual_knowledge import FactualKnowledge, FactualKnowledgeConfig eval_algo = FactualKnowledge(FactualKnowledgeConfig()) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
Stereotipi rapidi
È possibile eseguire l'algoritmo di stereotipizzazione rapida per la generazione aperta. Per eseguire l'algoritmo di stereotipizzazione dei prompt, è DataConfig
necessario identificare le colonne del set di dati di input che contengono una frase meno stereotipata in e una frase più stereotipata in. sent_less_input_location
sent_more_output_location
Per ulteriori informazioni in merito, vedere la sezione precedente 2. DataConfig
ConfigurazioneModelRunner
. Quindi, chiama il evaluate
metodo e inserisci i parametri desiderati.
La stereotipizzazione rapida restituisce un elenco di EvalOutput
oggetti che contengono un punteggio per ogni record di input e punteggi complessivi per ogni tipo di distorsione. I punteggi vengono calcolati confrontando la probabilità delle frasi più e meno stereotipate. Il punteggio complessivo riporta la frequenza con cui il modello ha preferito la frase stereotipata, in quanto il modello assegna una probabilità maggiore alla frase più stereotipata rispetto a quella meno stereotipata. Un punteggio di 0.5
indica che il modello è imparziale o che preferisce frasi più e meno stereotipate a parità di frequenza. Un punteggio superiore a 0.5
indica che è probabile che il modello generi una risposta più stereotipata. Un punteggio inferiore a 0.5
indica che è probabile che il modello generi una risposta meno stereotipata.
Il seguente esempio di codice mostra come valutare il LLM utilizzando l'algoritmo di stereotipizzazione dei prompt:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.prompt_stereotyping import PromptStereotyping eval_algo = PromptStereotyping() eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
Robustezza semantica
È possibile eseguire un algoritmo di robustezza semantica per qualsiasi FMEval attività, tuttavia il modello deve essere deterministico. Un modello deterministico è un modello che genera sempre lo stesso output per lo stesso input. In genere si può ottenere il determinismo impostando un seme casuale nel processo di decodifica. Gli algoritmi sono diversi per ogni attività al fine di soddisfare i diversi tipi e problemi di input dei dati come segue:
-
Per la generazione aperta, la risposta alle domande o la classificazione delle attività, esegui l'
GeneralSemanticRobustness
algoritmo con un file.GeneralSemanticRobustnessConfig
-
Per il riepilogo del testo, esegui l'
SummarizationAccuracySemanticRobustness
algoritmo con un file.SummarizationAccuracySemanticRobustnessConfig
L'GeneralSemanticRobustness
algoritmo restituisce un elenco di EvalScore
oggetti che contengono precisione con valori compresi tra 0
e 1
quantificano la differenza tra gli output del modello perturbati e quelli imperturbati. Per eseguire l'algoritmo generale di robustezza semantica, istanziate a e inserite a. GeneralSemanticRobustnessConfig
perturbation_type
Puoi scegliere una delle seguenti opzioni per: perturbation_type
-
Butterfinger
— Una perturbazione che imita gli errori di ortografia mediante lo scambio di caratteri in base alla distanza della tastiera. Immette una probabilità che un determinato carattere sia disturbato. Butterfinger è il valore predefinito per.perturbation_type
-
RandomUpperCase
— Una perturbazione che trasforma una frazione di caratteri in maiuscolo. Immetti un decimale da a.0
1
-
WhitespaceAddRemove
— La probabilità che nel bianco venga aggiunto un carattere di spazio bianco davanti a un carattere non bianco.
È inoltre possibile specificare i seguenti parametri:
-
num_perturbations
— Il numero di perturbazioni da introdurre nel testo generato per ogni campione. Il valore predefinito è5
. -
butter_finger_perturbation_prob
— La probabilità che un personaggio venga disturbato. Usato solo quandoperturbation_type
èButterfinger
. Il valore predefinito è0.1
. -
random_uppercase_corrupt_proportion
— La frazione di caratteri da convertire in lettere maiuscole. Usato solo quandoperturbation_type
èRandomUpperCase
. Il valore predefinito è0.1
. -
whitespace_add_prob
— Dato uno spazio bianco, la probabilità di rimuoverlo da un campione. Usato solo quandoperturbation_type
èWhitespaceAddRemove
. Il valore predefinito è0.05
. -
whitespace_remove_prob
— Dato uno spazio non bianco, la probabilità di aggiungere uno spazio bianco davanti ad esso. Usato solo quandoperturbation_type
èWhitespaceAddRemove
. Il valore predefinito è0.1
.
Infine, chiamate il evaluate
metodo e passate i parametri desiderati come mostrato nel seguente esempio di codice:
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.general_semantic_robustness import GeneralSemanticRobustness, GeneralSemanticRobustnessConfig eval_algo = GeneralSemanticRobustness(GeneralSemanticRobustnessConfig(perturbation_type="RandomUpperCase",num_perturbations=2,random_uppercase_corrupt_proportion=0.3))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
L'SummarizationAccuracySemanticRobustness
algoritmo restituisce un elenco di EvalScore
oggetti che contengono la differenza (o delta) tra ROUGE-NSummarizationAccuracySemanticRobustnessConfig
perturbation_type
Puoi scegliere una delle seguenti opzioni per: perturbation_type
-
Butterfinger
— Una perturbazione che imita gli errori di ortografia mediante lo scambio di caratteri in base alla distanza della tastiera. Immette una probabilità che un determinato carattere sia disturbato.Butterfinger
è il valore predefinito per.perturbation_type
-
RandomUpperCase
— Una perturbazione che trasforma una frazione di caratteri in maiuscolo. Immetti un decimale da a.0
1
-
WhitespaceAddRemove
— Immetti una probabilità che nel bianco venga aggiunto un carattere di spazio bianco davanti a un carattere non di spazio bianco.
È inoltre possibile specificare i seguenti parametri:
-
num_perturbations
— Il numero di perturbazioni da introdurre nel testo generato per ogni campione. Il valore predefinito è5
. -
butter_finger_perturbation_prob
— La probabilità che un personaggio sia disturbato. Usato solo quandoperturbation_type
èButterfinger
. Il valore predefinito è0.1
. -
random_uppercase_corrupt_proportion
— La frazione di caratteri da convertire in lettere maiuscole. Usato solo quandoperturbation_type
èRandomUpperCase
. Il valore predefinito è0.1
. -
whitespace_add_prob
— Dato uno spazio bianco, la probabilità di rimuoverlo da un campione. Usato solo quandoperturbation_type
èWhitespaceAddRemove
. Il valore predefinito è0.05
. -
whitespace_remove_prob
— Dato uno spazio non bianco, la probabilità di aggiungere uno spazio bianco davanti ad esso. Utilizzato solo quandoperturbation_type
èWhitespaceAddRemove
, l'impostazione predefinita è0.1
. -
rouge_type
— Metriche che confrontano i riepiloghi generati con i riepiloghi di riferimento. Specificare il tipo di ROUGEmetrica per cui desideri utilizzare nella valutazione. rouge_type
È possibile scegliererouge1
,rouge2
, oppurerougeL
. ROUGE-1 confronta i riepiloghi generati e i riepiloghi di riferimento utilizzando unigrammi sovrapposti (sequenze di un elemento come «the», «is»). ROUGE-2 confronta i riepiloghi generati e quelli di riferimento utilizzando i bigrammi (gruppi di due sequenze come «the large», «is home»). ROUGE-L confronta la sequenza di parole corrispondenti più lunga. Per ulteriori informazioni sull' ROUGE, vedi ROUGE: Un pacchetto per la valutazione automatica dei riepiloghi. -
Imposta
user_stemmer_for_rouge
suTrue
oFalse
. Uno stemmer rimuove gli affissi dalle parole prima di confrontarle. Ad esempio, uno stemmer rimuove gli affissi da «swing» e «swam» in modo che entrambi «nuotino» dopo la stampigliatura. -
Imposta
model_type_for_bertscore
il modello che desideri utilizzare per calcolare un BERTScore. Puoi scegliere ROBERTA_MODEL o il più avanzato MICROSOFT_DEBERTA_MODEL . Chiamate il
evaluate
metodo e passate i parametri desiderati come mostrato nel seguente esempio di codice:from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.summarization_accuracy_semantic_robustness import SummarizationAccuracySemanticRobustness, SummarizationAccuracySemanticRobustnessConfig eval_algo = SummarizationAccuracySemanticRobustness(SummarizationAccuracySemanticRobustnessConfig(perturbation_type="Butterfinger",num_perturbations=3,butter_finger_perturbation_prob=0.2))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)
Tossicità
È possibile eseguire un algoritmo di tossicità per la generazione aperta, il riepilogo del testo o la risposta a domande. Esistono tre classi distinte a seconda dell'attività.
-
Per una generazione aperta, esegui l'algoritmo Toxicity con un
ToxicityConfig
file. -
Per il riepilogo, usa la classe.
Summarization_Toxicity
-
Per rispondere alle domande, usa la classe.
QAToxicity
L'algoritmo di tossicità restituisce uno o più un elenco di EvalScore
oggetti (a seconda del rilevatore di tossicità) che contengono punteggi compresi tra e. 0
1
Per eseguire l'algoritmo di tossicità, crea un'istanza ToxicityConfig
e trasmetti un modello di tossicità da utilizzare per valutare il tuo modello rispetto a in. model_type
Puoi scegliere quanto segue per: model_type
-
`detoxify` per UnitaryAI Detoxify-unbiased, un classificatore di testo multietichetta addestrato su Toxic Comment Classification Challenge e Jigsaw Unintended Bias
in Toxicity Classification. Il modello fornisce 7
punteggi per le seguenti classi: tossicità, tossicità grave, oscenità, minaccia, insulto, esplicità sessuale e attacco di identità.Di seguito è riportato un esempio di output del modello di disintossicazione:
EvalScore(name='toxicity', value=0.01936926692724228), EvalScore(name='severe_toxicity', value=3.3755677577573806e-06), EvalScore(name='obscene', value=0.00022437423467636108), EvalScore(name='identity_attack', value=0.0006707844440825284), EvalScore(name='insult', value=0.005559926386922598), EvalScore(name='threat', value=0.00016682750720065087), EvalScore(name='sexual_explicit', value=4.828436431125738e-05)
-
`toxigen` per Toxigen-Roberta, un classificatore di testo binario BERTa basato su Ro ottimizzato sul ToxiGen set di dati, che contiene frasi con tossicità
sottile e implicita relative a gruppi minoritari. 13
Infine, chiamate il metodo e passate i parametri desiderati come mostrato nel seguente esempio di codice. evaluate
from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.toxicity import Toxicity, ToxicityConfig eval_algo = Toxicity(ToxicityConfig(model_type="detoxify")) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)