Usa la fmeval libreria per eseguire una valutazione automatica - Amazon SageMaker

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. Puoi utilizzare la fmeval libreria per valutarne uno qualsiasi LLM e anche per avere maggiore flessibilità con i tuoi 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. FMEvalsupporta 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 SageMaker dominio o di un IAM ruolo, segui i passaggi indicati in. Guida alla configurazione con Amazon SageMaker

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.

  1. Apri la SageMaker console Amazon all'indirizzo https://console.aws.amazon.com/sagemaker/.

  2. Nel riquadro di navigazione, S3 accedi alla barra di ricerca nella parte superiore della pagina.

  3. Scegli S3 in Servizi.

  4. Scegli Bucket dal pannello di navigazione.

  5. 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:

    1. Seleziona Crea bucket per aprire una nuova pagina Crea bucket.

    2. Nella sezione Configurazione generale, in AWS Regione, seleziona la AWS regione in cui si trova il modello di base.

    3. Assegna un nome al bucket S3 nella casella di immissione sotto Nome del bucket.

    4. Accetta tutte le scelte predefinite.

    5. Seleziona Crea bucket.

    6. Nella sezione General Purpose bucket, sotto Nome, seleziona il nome del bucket S3 che hai creato.

  6. Scegli la scheda Autorizzazioni.

  7. Scorri fino alla sezione Cross-origin resource sharing (CORS) nella parte inferiore della finestra. Scegli Modifica.

  8. Per aggiungere 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" ] } ]
  9. Scegli Save changes (Salva modifiche).

Per aggiungere autorizzazioni alla tua politica IAM
  1. Nella barra di ricerca nella parte superiore della pagina, inserisciIAM.

  2. In Servizi, selezionare Identity and Access Management (IAM).

  3. Scegli Politiche dal riquadro di navigazione.

  4. Inserisci AmazonSageMakerFullAccessnella barra di ricerca. Seleziona il pulsante di opzione accanto alla politica che appare. Il pulsante Azioni può ora essere selezionato.

  5. Scegli la freccia rivolta verso il basso accanto a Azioni. Vengono visualizzate due opzioni.

  6. Scegli Collega.

  7. Nell'IAMelenco visualizzato, cerca il nome del ruolo che hai creato. Seleziona la casella di controllo accanto al nome.

  8. Scegli Collega policy.

Inizia a usare Studio
  1. Nella barra di ricerca nella parte superiore della pagina, inserisciSageMaker.

  2. In Servizi, seleziona Amazon SageMaker.

  3. Scegli Studio dal pannello di navigazione.

  4. Scegli il tuo dominio dalla sezione Guida introduttiva, dopo aver espanso la freccia rivolta verso il basso sotto Seleziona dominio.

  5. Scegli il tuo profilo utente dalla sezione Guida introduttiva dopo aver espanso la freccia rivolta verso il basso sotto Seleziona profilo utente.

  6. Scegli Open Studio per aprire la pagina di destinazione di Studio.

  7. Seleziona il browser di file dal pannello di navigazione e vai alla directory principale.

  8. Seleziona Crea taccuino.

  9. Nella finestra di dialogo relativa all'ambiente del notebook che si apre, seleziona l'immagine Data Science 3.0.

  10. Scegli Seleziona.

  11. 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, consulta fmevaldipendenze.

FMEvalutilizza un wrapper di alto livello chiamato per ModelRunner comporre l'input, richiamare ed estrarre l'output dal modello. Il fmeval pacchetto può valutarne qualsiasiLLM, 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
  1. Fornisci un endpoint effettuando una delle seguenti operazioni:

    • EndpointNameSpecificare su un JumpStart endpoint esistente, ilmodel_id, e. model_version

    • Specificate la model_id e model_version per il modello e create un JumpStart endpoint.

    Il seguente esempio di codice mostra come creare un endpoint per un Llama 2 foundation modeldisponibile 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 aEULA, che sta per end-use-license-agreement (EULA). EULAÈ possibile trovarlo nella scheda del modello che si sta utilizzando. Per utilizzare alcuni JumpStart modelli, è necessario specificareaccept_eula=true, come mostrato nella precedente chiamata apredict. Per ulteriori informazioni in meritoEULA, vedere la sezione Licenze e fonti dei modelli inFonti dei modelli e contratti di licenza.

    È possibile trovare un elenco dei JumpStart modelli disponibili in Built-in Algorithms with pre-training Model Table.

  2. 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 e model_version che hai usato per creare l'endpoint. model_id

  3. 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
  1. 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 contentTypespecifica il formato dei dati di input nella richiesta. MIME_TYPE_JSONÈ supportato solo per accept e contentType per i modelli Amazon Bedrock. Per ulteriori informazioni su questi parametri, consulta InvokeModelWithResponseStream.

  2. Per configurareModelRunner, utilizzate ilBedrockModelRunner, come illustrato 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 della json risposta generata. Ad esempio, se hai LLM fornito la risposta[{"results": "this is the output"}], output='results[0].outputText' restituiscethis is the output.

    • content_templateDa utilizzare per specificare il modo in cui LLM l'utente 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 LLM genera le risposte nel modo seguente:

        • Il parametro maxTokenCount viene utilizzato per limitare la lunghezza della risposta limitando il numero di token restituiti da. LLM

        • Il parametro stopSequences viene utilizzato per specificare un elenco di sequenze di caratteri che indicano di interrompere la generazione LLM 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 di topP 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 di temperature indicano al modello di generare risposte più casuali e diversificate. I valori più bassi generano risposte più prevedibili. Intervalli tipici temperature compresi tra 0.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 tuoLLM. 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. EvalScoregli 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 di ModelRunner utilizzo del modello che si desidera valutare.

  • dataset_config— La configurazione del set di dati. Se non dataset_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 non prompt_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'evaluatealgoritmo 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 non model_output è fornito nel set di dati. Per ulteriori informazioni, consulta la sezione Configurare prompt_template un. JumpStart ModelRunner

    dataset_scores— Un punteggio aggregato calcolato sull'intero set di dati.

    category_scores— Un elenco di CategoryScore 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'QAAccuracyalgoritmo con un QAAccuracyConfig file.

  • Per le attività di riepilogo del testo, esegui l'SummarizationAccuracyalgoritmo con un. SummarizationAccuracyConfig

  • Per le attività di classificazione, esegui l'ClassificationAccuracyalgoritmo con aClassificationAccuracyConfig.

L'QAAccuracyalgoritmo 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 illustrato 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'SummarizationAccuracyalgoritmo restituisce un elenco di EvalOutput oggetti che contengono punteggi per ROUGE-N, Meteor, e BERTScore. Per ulteriori informazioni su questi punteggi, vedere la sezione Riepilogo del testo inUtilizzo di set di dati rapidi e dimensioni di valutazione disponibili nei lavori di valutazione dei modelli . Per eseguire l'algoritmo di precisione del riepilogo del testo, istanziate a SummarizationAccuracyConfig e inserite quanto segue:

  • Specificate il tipo di ROUGEmetrica per cui desideri utilizzare nella valutazione. rouge_type È possibile scegliere rouge1, rouge2, oppure rougeL. 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 su True o False. 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'ClassificationAccuracyalgoritmo 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,, macrosamples, 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 essere valutata come corretta. 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 l'utente LLM utilizzando l'algoritmo di conoscenza dei fatti:

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 l'LLMutilizzo dell'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'GeneralSemanticRobustnessalgoritmo con un file. GeneralSemanticRobustnessConfig

  • Per il riepilogo del testo, esegui l'SummarizationAccuracySemanticRobustnessalgoritmo con un file. SummarizationAccuracySemanticRobustnessConfig

L'GeneralSemanticRobustnessalgoritmo 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 quando perturbation_type è Butterfinger. Il valore predefinito è 0.1.

  • random_uppercase_corrupt_proportion— La frazione di caratteri da trasformare in maiuscolo. Usato solo quando perturbation_type è RandomUpperCase. Il valore predefinito è 0.1.

  • whitespace_add_prob— Dato uno spazio bianco, la probabilità di rimuoverlo da un campione. Usato solo quando perturbation_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 quando perturbation_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'SummarizationAccuracySemanticRobustnessalgoritmo restituisce un elenco di EvalScore oggetti che contengono la differenza (o delta) tra ROUGE-N, Meteore BERTScorevalori tra il riepilogo generato e quello di riferimento. Per ulteriori informazioni su questi punteggi, vedere la sezione Riepilogo del testo in. Utilizzo di set di dati rapidi e dimensioni di valutazione disponibili nei lavori di valutazione dei modelli Per eseguire l'algoritmo di robustezza semantica di riepilogo del testo, istanzia a e inserisci a. SummarizationAccuracySemanticRobustnessConfig 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 quando perturbation_type è Butterfinger. Il valore predefinito è 0.1.

  • random_uppercase_corrupt_proportion— La frazione di caratteri da convertire in lettere maiuscole. Usato solo quando perturbation_type è RandomUpperCase. Il valore predefinito è 0.1.

  • whitespace_add_prob— Dato uno spazio bianco, la probabilità di rimuoverlo da un campione. Usato solo quando perturbation_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 quando perturbation_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 scegliere rouge1, rouge2, oppure rougeL. 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 su True o False. 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 inserite 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

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)