Use a fmeval biblioteca para executar uma avaliação automática - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use a fmeval biblioteca para executar uma avaliação automática

Usar a fmeval biblioteca em seu próprio código oferece a maior flexibilidade para personalizar seu fluxo de trabalho. Você pode usar a fmeval biblioteca para avaliar qualquer LLM um e também para ter mais flexibilidade com seus conjuntos de dados de entrada personalizados. As etapas a seguir mostram como configurar seu ambiente e como executar um fluxo de trabalho inicial e um fluxo de trabalho personalizado usando a fmeval biblioteca.

Comece a usar a fmeval biblioteca

Você pode configurar a avaliação do modelo básico e personalizá-la para seu caso de uso em um notebook do Studio. Sua configuração depende do tipo de tarefa que seu modelo básico foi criado para prever e de como você deseja avaliá-la. FMEvaloferece suporte a tarefas abertas de geração, resumo de texto, resposta a perguntas e classificação. As etapas desta seção mostram como configurar um fluxo de trabalho inicial. Esse fluxo de trabalho inicial inclui a configuração do seu ambiente e a execução de um algoritmo de avaliação usando um modelo básico do Amazon Bedrock JumpStart ou um modelo com conjuntos de dados integrados. Se você precisar usar um conjunto de dados de entrada e um fluxo de trabalho personalizados para um caso de uso mais específico, consultePersonalize seu fluxo de trabalho usando a fmeval biblioteca.

Se você não quiser executar uma avaliação de modelo em um notebook do Studio, vá para a etapa 11 na seção Começar a usar o Studio a seguir.

Pré-requisitos
  • Para executar uma avaliação de modelo em uma interface de usuário do Studio, sua função AWS Identity and Access Management (IAM) e qualquer conjunto de dados de entrada devem ter as permissões corretas. Se você não tiver um SageMaker domínio ou IAM função, siga as etapas emGuia para se configurar com a Amazon SageMaker.

Para definir permissões para seu bucket do Amazon S3

Depois que seu domínio e função forem criados, use as etapas a seguir para adicionar as permissões necessárias para avaliar seu modelo.

  1. Abra o SageMaker console da Amazon em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação, entre S3 na barra de pesquisa na parte superior da página.

  3. Escolha S3 em Serviços.

  4. Escolha Buckets no painel de navegação.

  5. Na seção Buckets de uso geral, em Nome, escolha o nome do bucket do S3 que você deseja usar para armazenar a entrada e a saída do modelo no console. Se você não tiver um bucket S3, faça o seguinte:

    1. Selecione Criar compartimento para abrir uma nova página Criar compartimento.

    2. Na seção Configuração geral, em AWS Região, selecione a AWS região em que seu modelo de fundação está localizado.

    3. Nomeie seu bucket do S3 na caixa de entrada em Nome do bucket.

    4. Aceite todas as opções padrão.

    5. Selecione Criar bucket.

    6. Na seção Buckets de uso geral, em Nome, selecione o nome do bucket do S3 que você criou.

  6. Escolha a aba Permissões.

  7. Role até a seção Compartilhamento de recursos entre origens (CORS) na parte inferior da janela. Selecione a opção Editar.

  8. Para adicionar permissões ao seu bucket para avaliações da fundação, certifique-se de que o código a seguir apareça na caixa de entrada. Você também pode copiar e colar o seguinte na caixa de entrada.

    [ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [ "Access-Control-Allow-Origin" ] } ]
  9. Escolha Salvar alterações.

Para adicionar permissões à sua IAM política
  1. Na barra de pesquisa na parte superior da página, digiteIAM.

  2. Em Serviços, selecione Identity and Access Management (IAM).

  3. Escolha Políticas no painel de navegação.

  4. Insira AmazonSageMakerFullAccessna barra de pesquisa. Selecione o botão de rádio ao lado da política exibida. O botão Ações agora pode ser selecionado.

  5. Escolha a seta para baixo ao lado de Ações. Duas opções são exibidas.

  6. Escolha Anexar.

  7. Na IAM lista exibida, pesquise o nome da função que você criou. Marque a caixa de seleção ao lado do nome.

  8. Escolha Anexar política.

Comece a usar o Studio
  1. Na barra de pesquisa na parte superior da página, digiteSageMaker.

  2. Em Serviços, selecione Amazon SageMaker.

  3. Escolha Studio no painel de navegação.

  4. Escolha seu domínio na seção Começar, depois de expandir a seta para baixo em Selecionar domínio.

  5. Escolha seu perfil de usuário na seção Começar depois de expandir a seta para baixo em Selecionar perfil de usuário.

  6. Escolha Open Studio para abrir a página inicial do Studio.

  7. Selecione o navegador de arquivos no painel de navegação e navegue até o diretório raiz.

  8. Selecione Criar caderno.

  9. Na caixa de diálogo do ambiente do notebook que se abre, selecione a imagem Data Science 3.0.

  10. Escolha Selecionar.

  11. Instale o fmeval pacote em seu ambiente de desenvolvimento, conforme mostrado no exemplo de código a seguir:

    !pip install fmeval
    nota

    Instale a fmeval biblioteca em um ambiente que usa Python 3.10. Para obter mais informações sobre os requisitos necessários para execuçãofmeval, consulte fmevaldependências.

FMEvalusa um wrapper de alto nível chamado ModelRunner para compor a entrada, invocar e extrair a saída do seu modelo. O fmeval pacote pode avaliar qualquer umLLM, mas o procedimento de configuração ModelRunner depende do tipo de modelo que você deseja avaliar. Esta seção explica como configurar ModelRunner um modelo JumpStart ou Amazon Bedrock. Se você quiser usar um conjunto de dados de entrada personalizado e personalizadoModelRunner, consultePersonalize seu fluxo de trabalho usando a fmeval biblioteca.

Use um JumpStart modelo

Para usar ModelRunner para avaliar um JumpStart modelo, criar ou fornecer um endpoint, definir o modelo e o conjunto de dados incorporado, configurar e testar. ModelRunner

Defina um JumpStart modelo e configure um ModelRunner
  1. Forneça um endpoint fazendo o seguinte:

    • Especifique o EndpointNamepara um JumpStart endpoint existentemodel_id, o e. model_version

    • Especifique model_id e model_version para seu modelo e crie um JumpStart endpoint.

    O exemplo de código a seguir mostra como criar um endpoint para um Llama 2 foundation modelque está disponível por meio de 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')

    O exemplo de código anterior se refere aEULA, que significa end-use-license-agreement (EULA). Eles EULA podem ser encontrados na descrição do modelo do modelo que você está usando. Para usar alguns JumpStart modelos, você deve especificaraccept_eula=true, conforme mostrado na chamada anterior parapredict. Para obter mais informações sobreEULA, consulte a seção Licenças e fontes de modelos emFontes de modelos e contratos de licença.

    Você pode encontrar uma lista dos JumpStart modelos disponíveis em Algoritmos integrados com tabela de modelos pré-treinada.

  2. Configure ModelRunner usando oJumpStartModelRunner, conforme mostrado no exemplo de configuração a seguir:

    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 )

    No exemplo de configuração anterior, use os mesmos valores para endpoint_namemodel_id, e model_version que você usou para criar o endpoint.

  3. Teste o seuModelRunner. Envie uma solicitação de amostra para seu modelo, conforme mostrado no exemplo de código a seguir:

    js_model_runner.predict("What is the capital of London")

Use um modelo Amazon Bedrock

Para avaliar um modelo do Amazon Bedrock, você deve definir o modelo, o conjunto de dados incorporado e configurá-lo. ModelRunner

Defina um modelo Amazon Bedrock e configure um ModelRunner
  1. Para definir e imprimir detalhes do modelo, use o seguinte exemplo de código para um modelo Titan que está disponível no 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'))

    No exemplo de código anterior, o accept parâmetro especifica o formato dos dados que você deseja usar para avaliar seusLLM. contentTypeEspecifica o formato dos dados de entrada na solicitação. Só MIME_TYPE_JSON é compatível com accept e contentType para os modelos Amazon Bedrock. Para obter mais informações sobre esses parâmetros, consulte InvokeModelWithResponseStream.

  2. Para configurarModelRunner, use oBedrockModelRunner, conforme mostrado no exemplo de configuração a seguir:

    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}}', )

    Parametrize a ModelRunner configuração da seguinte maneira.

    • Use os mesmos valores model_id que você usou para implantar o modelo.

    • Use output para especificar o formato da json resposta gerada. Por exemplo, se você LLM forneceu a resposta[{"results": "this is the output"}], ela output='results[0].outputText' retornathis is the output.

    • Use content_template para especificar como você LLM interage com as solicitações. O modelo de configuração a seguir é detalhado somente para explicar o exemplo de configuração anterior e não é obrigatório.

      • No exemplo de configuração anterior, a variável inputText especifica o prompt, que captura a solicitação feita pelo usuário.

      • A variável textGenerationConfig especifica como o LLM gera respostas da seguinte forma:

        • O parâmetro maxTokenCount é usado para limitar o comprimento da resposta limitando o número de tokens retornados peloLLM.

        • O parâmetro stopSequences é usado para especificar uma lista de sequências de caracteres que solicitam que você LLM pare de gerar uma resposta. A saída do modelo é interrompida na primeira vez que qualquer uma das sequências listadas é encontrada na saída. Como exemplo, você pode usar uma sequência de retorno de carro para limitar a resposta do modelo a uma única linha.

        • O parâmetro topP controla a aleatoriedade limitando o conjunto de tokens a serem considerados ao gerar o próximo token. Esse parâmetro aceita valores entre 0.0 1.0 e. Valores mais altos topP permitem um conjunto contendo um vocabulário mais amplo e valores mais baixos restringem o conjunto de símbolos a palavras mais prováveis.

        • O parâmetro temperature controla a aleatoriedade do texto gerado e aceita valores positivos. Valores mais altos de temperature instruem o modelo a gerar respostas mais aleatórias e diversas. Valores mais baixos geram respostas mais previsíveis. Intervalos típicos para temperature ficar entre 0.2 2.0 e.

        Para obter mais informações sobre os parâmetros de um modelo de fundação específico do Amazon Bedrock, consulte Parâmetros de inferência para modelos de fundação.

      O formato do parâmetro content_template depende das entradas e dos parâmetros suportados pelo seu. LLM Por exemplo, Anthropic’s Claude 2 o modelo pode suportar o seguintecontent_template:

      "content_template": "{\"prompt\": $prompt, \"max_tokens_to_sample\": 500}"

      Como outro exemplo, o modelo Falcon 7b pode suportar o seguinte. content_template

      "content_template": "{\"inputs\": $prompt, \"parameters\":{\"max_new_tokens\": \ 10, \"top_p\": 0.9, \"temperature\": 0.8}}"

      Por fim, teste seu. ModelRunner Envie uma solicitação de amostra para seu modelo, conforme mostrado no exemplo de código a seguir:

      bedrock_model_runner.predict("What is the capital of London?")

Depois de configurar seus dados eModelRunner, você pode executar um algoritmo de avaliação nas respostas geradas pelo seuLLM. Para ver uma lista de todos os algoritmos de avaliação disponíveis, execute o código a seguir:

from fmeval.eval_algo_mapping import EVAL_ALGORITHMS print(EVAL_ALGORITHMS.keys())

Cada algoritmo tem uma avaliação e um evaluate_sample método. O evaluate método calcula uma pontuação para todo o conjunto de dados. O evaluate_sample método avalia a pontuação de uma única instância.

O evaluate_sample método retorna EvalScore objetos. EvalScoreos objetos contêm pontuações agregadas do desempenho do seu modelo durante a avaliação. O evaluate_sample método tem os seguintes parâmetros opcionais:

  • model_output— A resposta do modelo para uma única solicitação.

  • model_input— Um prompt contendo a solicitação para seu modelo.

  • target_output— A resposta esperada da solicitação contida emmodel_input.

O exemplo de código a seguir mostra como usar oevaluate_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)

O evaluate método tem os seguintes parâmetros opcionais:

  • model— Uma instância de ModelRunner uso do modelo que você deseja avaliar.

  • dataset_config— A configuração do conjunto de dados. Se não dataset_config for fornecido, o modelo será avaliado usando todos os conjuntos de dados integrados configurados para essa tarefa.

  • prompt_template— Um modelo usado para gerar solicitações. Se não prompt_template for fornecido, seu modelo será avaliado usando um modelo de prompt padrão.

  • save— Se definido comoTrue, as respostas e pontuações imediatas registradas são salvas no arquivo. EvalAlgorithmInterface.EVAL_RESULTS_PATH Padronizado como False.

  • num_records— O número de registros que são amostrados aleatoriamente do conjunto de dados de entrada para avaliação. Padronizado como 300.

O evaluate algoritmo retorna uma lista de EvalOutput objetos que pode incluir o seguinte:

  • eval_name— O nome do algoritmo de avaliação.

    dataset_name— O nome do conjunto de dados usado pelo algoritmo de avaliação.

    prompt_template— Um modelo usado para redigir solicitações que é consumido se o parâmetro não model_output for fornecido no conjunto de dados. Para obter mais informações, consulte prompt_template a JumpStart ModelRunnerseção Configurar um.

    dataset_scores— Uma pontuação agregada calculada em todo o conjunto de dados.

    category_scores— Uma lista de CategoryScore objetos que contêm as pontuações de cada categoria no conjunto de dados.

    output_path— O caminho local para o resultado da avaliação. Essa saída contém respostas rápidas com pontuações de avaliação recordes.

    error— Uma mensagem de erro de sequência de caracteres para um trabalho de avaliação que falhou.

As seguintes dimensões estão disponíveis para avaliação do modelo:

  • Precisão

  • Conhecimento factual

  • Estereotipagem imediata

  • Robustez semântica

  • Toxicidade

Precisão

Você pode executar um algoritmo de precisão para uma tarefa de resposta a perguntas, resumo de texto ou classificação. Os algoritmos são diferentes para cada tarefa, a fim de acomodar os diferentes tipos de entrada de dados e problemas da seguinte forma:

  • Para tarefas de resposta a perguntas, execute o QAAccuracy algoritmo com um QAAccuracyConfig arquivo.

  • Para tarefas de resumo de texto, execute o SummarizationAccuracy algoritmo com umSummarizationAccuracyConfig.

  • Para tarefas de classificação, execute o ClassificationAccuracy algoritmo com umClassificationAccuracyConfig.

O QAAccuracy algoritmo retorna uma lista de EvalOutput objetos que contém uma pontuação de precisão para cada amostra. Para executar o algoritmo de precisão das perguntas e respostas, instancie a QAAccuracygeConfig e transmita um <OR> ou None como o. target_output_delimiter O algoritmo de precisão das perguntas e respostas compara a resposta que seu modelo gera com uma resposta conhecida. Se você passar <OR> como delimitador de destino, o algoritmo classificará a resposta como correta se gerar algum conteúdo separado por <OR> na resposta. Se você passar None uma string vazia como atarget_output_delimiter, o código gerará um erro.

Chame o evaluate método e transmita os parâmetros desejados, conforme mostrado no exemplo de código a seguir:

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)

O SummarizationAccuracy algoritmo retorna uma lista de EvalOutput objetos que contêm pontuações para ROUGE-N, Meteor, e BERTScore. Para obter mais informações sobre essas pontuações, consulte a seção Resumo de texto emUsando conjuntos de dados imediatos e dimensões de avaliação disponíveis em trabalhos de avaliação de modelos . Para executar o algoritmo de precisão do resumo de texto, instancie a SummarizationAccuracyConfig e transmita o seguinte:

  • Especifique o tipo de ROUGEmétrica que você deseja usar em sua avaliaçãorouge_type. Você pode escolher rouge1, rouge2 ou rougeL. Essas métricas comparam os resumos gerados com os resumos de referência. ROUGE-1 compara os resumos gerados e os resumos de referência usando unigramas sobrepostos (sequências de um item, como “o”, “é”). ROUGE-2 compara os resumos gerados e de referência usando bigramas (grupos de duas sequências, como “the large”, “is home”). ROUGE-L compara a sequência de palavras correspondente mais longa. Para obter mais informações sobre ROUGE, veja ROUGE: Um pacote para avaliação automática de resumos.

  • Defina use_stemmer_for_rouge como True ou False. Um stemmer remove os afixos das palavras antes de compará-las. Por exemplo, uma haste remove os afixos de “nadar” e “nadar” para que ambos “nadem” após a haste.

  • Defina model_type_for_bertscore para o modelo que você deseja usar para calcular um BERTScore. Você pode escolher ROBERTA_ MODEL ou o mais avançado MICROSOFT_ DEBERTA _ MODEL.

Por fim, chame o evaluate método e transmita os parâmetros desejados, conforme mostrado no exemplo de código a seguir:

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)

O ClassificationAccuracy algoritmo retorna uma lista de EvalOutput objetos que contêm as pontuações de exatidão, precisão, recall e exatidão balanceada da classificação para cada amostra. Para obter mais informações sobre essas pontuações, consulte a seção Classificação emUsando conjuntos de dados imediatos e dimensões de avaliação disponíveis em trabalhos de avaliação de modelos . Para executar o algoritmo de precisão da classificação, instancie a ClassificationAccuracyConfig e passe uma estratégia de média para. multiclass_average_strategy Você pode escolher micromacro,samples,weighted, oubinary. O valor padrão é micro. Em seguida, passe uma lista contendo os nomes das colunas que contêm os rótulos verdadeiros de suas categorias de classificação para valid_labels. Por fim, chame o evaluate método e transmita os parâmetros desejados, conforme mostrado no exemplo de código a seguir:

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)

Conhecimento factual

Você pode executar o algoritmo de conhecimento factual para geração aberta. Para executar o algoritmo de conhecimento factual, instancie a FactualKnowledgeConfig e, opcionalmente, passe uma string delimitadora (por padrão, isso é). <OR> O algoritmo de conhecimento factual compara a resposta que seu modelo gera com uma resposta conhecida. O algoritmo classifica a resposta como correta se ela gerar algum conteúdo separado pelo delimitador na resposta. Se você passar None comotarget_output_delimiter, o modelo deverá gerar a mesma resposta da resposta para ser pontuado como correto. Por fim, chame o evaluate método e passe os parâmetros desejados.

O conhecimento factual retorna uma lista de EvalScore objetos. Eles contêm pontuações agregadas sobre o quão bem seu modelo é capaz de codificar o conhecimento factual, conforme descrito na seção de visão geral da avaliação do modelo Foundation. As pontuações variam entre 0 e 1 com a pontuação mais baixa correspondendo a um menor conhecimento dos fatos do mundo real.

O exemplo de código a seguir mostra como avaliar seu LLM uso do algoritmo de conhecimento factual:

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)

Estereotipagem imediata

Você pode executar o algoritmo de estereotipagem imediata para geração aberta. Para executar o algoritmo de estereotipagem rápida, você DataConfig deve identificar as colunas em seu conjunto de dados de entrada que contêm uma frase menos estereotipada e uma frase mais estereotipada dentro. sent_less_input_location sent_more_output_location Para obter mais informações sobreDataConfig, consulte a seção anterior 2. ConfigureModelRunner. Em seguida, chame o evaluate método e passe os parâmetros desejados.

A estereotipagem imediata retorna uma lista de EvalOutput objetos que contém uma pontuação para cada registro de entrada e pontuações gerais para cada tipo de viés. As pontuações são calculadas comparando a probabilidade das frases mais e menos estereotipadas. A pontuação geral relata a frequência com que o modelo preferiu a frase estereotipada, pois o modelo atribui uma probabilidade maior à frase mais estereotipada em comparação com a frase menos estereotipada. Uma pontuação de 0.5 indica que seu modelo é imparcial ou que prefere sentenças mais e menos estereotipadas em taxas iguais. Uma pontuação maior que 0.5 indica que seu modelo provavelmente gerará uma resposta mais estereotipada. Pontuações menores que 0.5 indicam que seu modelo provavelmente gerará uma resposta menos estereotipada.

O exemplo de código a seguir mostra como avaliar você LLM usando o algoritmo de estereotipagem imediata:

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)

Robustez semântica

Você pode executar um algoritmo de robustez semântica para qualquer FMEval tarefa, mas seu modelo deve ser determinístico. Um modelo determinístico é aquele que sempre gera a mesma saída para a mesma entrada. Normalmente, pode-se alcançar o determinismo definindo uma semente aleatória no processo de decodificação. Os algoritmos são diferentes para cada tarefa, a fim de acomodar os diferentes tipos de entrada de dados e problemas da seguinte forma:

  • Para geração aberta, resposta a perguntas ou classificação de tarefas, execute o GeneralSemanticRobustness algoritmo com um GeneralSemanticRobustnessConfig arquivo.

  • Para resumir o texto, execute o SummarizationAccuracySemanticRobustness algoritmo com um SummarizationAccuracySemanticRobustnessConfig arquivo.

O GeneralSemanticRobustness algoritmo retorna uma lista de EvalScore objetos que contêm precisão com valores entre 0 e 1 quantificando a diferença entre as saídas do modelo perturbado e não perturbado. Para executar o algoritmo de robustez semântica geral, instancie a e passe a. GeneralSemanticRobustnessConfig perturbation_type Você pode escolher uma das seguintes opções paraperturbation_type:

  • Butterfinger— Uma perturbação que imita erros ortográficos usando trocas de caracteres com base na distância do teclado. Insira a probabilidade de um determinado personagem estar perturbado. Butterfinger é o valor padrão paraperturbation_type.

  • RandomUpperCase— Uma perturbação que muda uma fração de caracteres para maiúsculas. Insira um decimal de 0 até1.

  • WhitespaceAddRemove— A probabilidade de um caractere de espaço em branco ser adicionado à frente de um caractere que não seja de espaço branco em branco.

Você também pode especificar os seguintes parâmetros:

  • num_perturbations— O número de perturbações para cada amostra a ser introduzida no texto gerado. O padrão é 5.

  • butter_finger_perturbation_prob— A probabilidade de um personagem ser perturbado. Usado somente quando perturbation_type é Butterfinger. O padrão é 0.1.

  • random_uppercase_corrupt_proportion— A fração de caracteres a ser alterada para maiúsculas. Usado somente quando perturbation_type é RandomUpperCase. O padrão é 0.1.

  • whitespace_add_prob— Dado um espaço em branco, a probabilidade de removê-lo de uma amostra. Usado somente quando perturbation_type é WhitespaceAddRemove. O padrão é 0.05.

  • whitespace_remove_prob— Dado um espaço não branco, a probabilidade de adicionar um espaço em branco na frente dele. Usado somente quando perturbation_type é WhitespaceAddRemove. O padrão é 0.1.

Por fim, chame o evaluate método e transmita os parâmetros desejados, conforme mostrado no exemplo de código a seguir:

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)

O SummarizationAccuracySemanticRobustness algoritmo retorna uma lista de EvalScore objetos que contêm a diferença (ou delta) entre os ROUGE-N, Meteor, e BERTScorevalores entre os resumos gerados e de referência. Para obter mais informações sobre essas pontuações, consulte a seção Resumo de texto emUsando conjuntos de dados imediatos e dimensões de avaliação disponíveis em trabalhos de avaliação de modelos . Para executar o algoritmo de robustez semântica de resumo de texto, instancie a e passe a. SummarizationAccuracySemanticRobustnessConfig perturbation_type

Você pode escolher uma das seguintes opções paraperturbation_type:

  • Butterfinger— Uma perturbação que imita erros ortográficos usando trocas de caracteres com base na distância do teclado. Insira a probabilidade de um determinado personagem estar perturbado. Butterfingeré o valor padrão paraperturbation_type.

  • RandomUpperCase— Uma perturbação que muda uma fração de caracteres para maiúsculas. Insira um decimal de 0 até1.

  • WhitespaceAddRemove— Insira a probabilidade de que um caractere de espaço em branco seja adicionado na frente de um caractere que não seja de espaço branco em branco.

Você também pode especificar os seguintes parâmetros:

  • num_perturbations— O número de perturbações para cada amostra a ser introduzida no texto gerado. O padrão é 5.

  • butter_finger_perturbation_prob— A probabilidade de um personagem ser perturbado. Usado somente quando perturbation_type é Butterfinger. O padrão é 0.1.

  • random_uppercase_corrupt_proportion— A fração de caracteres a ser alterada para maiúsculas. Usado somente quando perturbation_type é RandomUpperCase. O padrão é 0.1.

  • whitespace_add_prob— Dado um espaço em branco, a probabilidade de removê-lo de uma amostra. Usado somente quando perturbation_type é WhitespaceAddRemove. O padrão é 0.05.

  • whitespace_remove_prob— Dado um espaço não branco, a probabilidade de adicionar um espaço em branco na frente dele. Usado somente quando perturbation_type éWhitespaceAddRemove, o padrão é0.1.

  • rouge_type— Métricas que comparam resumos gerados com resumos de referência. Especifique o tipo de ROUGEmétrica que você deseja usar em sua avaliaçãorouge_type. Você pode escolher rouge1, rouge2 ou rougeL. ROUGE-1 compara os resumos gerados e os resumos de referência usando unigramas sobrepostos (sequências de um item, como “o”, “é”). ROUGE-2 compara os resumos gerados e de referência usando bigramas (grupos de duas sequências, como “the large”, “is home”). ROUGE-L compara a sequência de palavras correspondente mais longa. Para obter mais informações sobre ROUGE, veja ROUGE: Um pacote para avaliação automática de resumos.

  • Defina user_stemmer_for_rouge como True ou False. Um stemmer remove os afixos das palavras antes de compará-las. Por exemplo, uma haste remove os afixos de “nadar” e “nadar” para que ambos “nadem” após a haste.

  • model_type_for_bertscoreDefina o modelo que você deseja usar para calcular um BERTScore. Você pode escolher ROBERTA_ MODEL ou o mais avançado MICROSOFT_ DEBERTA _ MODEL.

    Chame o evaluate método e transmita os parâmetros desejados, conforme mostrado no exemplo de código a seguir:

    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)

Toxicidade

Você pode executar um algoritmo de toxicidade para geração aberta, resumo de texto ou resposta a perguntas. Há três classes distintas, dependendo da tarefa.

  • Para geração aberta, execute o algoritmo de toxicidade com um ToxicityConfig arquivo.

  • Para resumir, use a classeSummarization_Toxicity.

  • Para responder perguntas, use a classeQAToxicity.

O algoritmo de toxicidade retorna uma ou mais listas de EvalScore objetos (dependendo do detector de toxicidade) que contêm pontuações entre e. 0 1 Para executar o algoritmo de toxicidade, instancie a ToxicityConfig e passe um modelo de toxicidade para usar para avaliar seu modelo em relação ao in. model_type Você pode escolher o seguinte paramodel_type:

Por fim, chame o evaluate método e transmita os parâmetros desejados, conforme mostrado no exemplo de código a seguir.

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)