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.
Abra o SageMaker console da Amazon em https://console.aws.amazon.com/sagemaker/
. -
No painel de navegação, entre
S3
na barra de pesquisa na parte superior da página. -
Escolha S3 em Serviços.
-
Escolha Buckets no painel de navegação.
-
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:
-
Selecione Criar compartimento para abrir uma nova página Criar compartimento.
-
Na seção Configuração geral, em AWS Região, selecione a AWS região em que seu modelo de fundação está localizado.
-
Nomeie seu bucket do S3 na caixa de entrada em Nome do bucket.
-
Aceite todas as opções padrão.
-
Selecione Criar bucket.
-
Na seção Buckets de uso geral, em Nome, selecione o nome do bucket do S3 que você criou.
-
-
Escolha a aba Permissões.
-
Role até a seção Compartilhamento de recursos entre origens (CORS) na parte inferior da janela. Selecione a opção Editar.
-
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" ] } ]
-
Escolha Salvar alterações.
Para adicionar permissões à sua IAM política
-
Na barra de pesquisa na parte superior da página, digite
IAM
. -
Em Serviços, selecione Identity and Access Management (IAM).
-
Escolha Políticas no painel de navegação.
-
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.
-
Escolha a seta para baixo ao lado de Ações. Duas opções são exibidas.
-
Escolha Anexar.
-
Na IAM lista exibida, pesquise o nome da função que você criou. Marque a caixa de seleção ao lado do nome.
-
Escolha Anexar política.
Comece a usar o Studio
-
Na barra de pesquisa na parte superior da página, digite
SageMaker
. -
Em Serviços, selecione Amazon SageMaker.
-
Escolha Studio no painel de navegação.
-
Escolha seu domínio na seção Começar, depois de expandir a seta para baixo em Selecionar domínio.
-
Escolha seu perfil de usuário na seção Começar depois de expandir a seta para baixo em Selecionar perfil de usuário.
-
Escolha Open Studio para abrir a página inicial do Studio.
-
Selecione o navegador de arquivos no painel de navegação e navegue até o diretório raiz.
-
Selecione Criar caderno.
-
Na caixa de diálogo do ambiente do notebook que se abre, selecione a imagem Data Science 3.0.
-
Escolha Selecionar.
-
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
, consultefmeval
dependê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
-
Forneça um endpoint fazendo o seguinte:
-
Especifique o EndpointNamepara um JumpStart endpoint existente
model_id
, o e.model_version
-
Especifique
model_id
emodel_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 model
que 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 especificar
accept_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
. -
-
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_name
model_id
, emodel_version
que você usou para criar o endpoint. -
Teste o seu
ModelRunner
. 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
-
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.contentType
Especifica o formato dos dados de entrada na solicitação. SóMIME_TYPE_JSON
é compatível comaccept
econtentType
para os modelos Amazon Bedrock. Para obter mais informações sobre esses parâmetros, consulte InvokeModelWithResponseStream. -
Para configurar
ModelRunner
, 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 dajson
resposta gerada. Por exemplo, se você LLM forneceu a resposta[{"results": "this is the output"}]
, elaoutput='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 entre0.0
1.0
e. Valores mais altostopP
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 detemperature
instruem o modelo a gerar respostas mais aleatórias e diversas. Valores mais baixos geram respostas mais previsíveis. Intervalos típicos paratemperature
ficar entre0.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 seguinte content_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. EvalScore
os 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 deModelRunner
uso do modelo que você deseja avaliar. -
dataset_config
— A configuração do conjunto de dados. Se nãodataset_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ãoprompt_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 comoFalse
. -
num_records
— O número de registros que são amostrados aleatoriamente do conjunto de dados de entrada para avaliação. Padronizado como300
.
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ãomodel_output
for fornecido no conjunto de dados. Para obter mais informações, consulteprompt_template
a JumpStartModelRunner
seção Configurar um.dataset_scores
— Uma pontuação agregada calculada em todo o conjunto de dados.category_scores
— Uma lista deCategoryScore
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 umQAAccuracyConfig
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-NSummarizationAccuracyConfig
e transmita o seguinte:
-
Especifique o tipo de ROUGE
métrica que você deseja usar em sua avaliação rouge_type
. Você pode escolherrouge1
,rouge2
ourougeL
. 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
comoTrue
ouFalse
. 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 micro
macro
,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 umGeneralSemanticRobustnessConfig
arquivo. -
Para resumir o texto, execute o
SummarizationAccuracySemanticRobustness
algoritmo com umSummarizationAccuracySemanticRobustnessConfig
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 de0
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 quandoperturbation_type
éButterfinger
. O padrão é0.1
. -
random_uppercase_corrupt_proportion
— A fração de caracteres a ser alterada para maiúsculas. Usado somente quandoperturbation_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 quandoperturbation_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 quandoperturbation_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-NSummarizationAccuracySemanticRobustnessConfig
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 de0
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 quandoperturbation_type
éButterfinger
. O padrão é0.1
. -
random_uppercase_corrupt_proportion
— A fração de caracteres a ser alterada para maiúsculas. Usado somente quandoperturbation_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 quandoperturbation_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 quandoperturbation_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ção rouge_type
. Você pode escolherrouge1
,rouge2
ourougeL
. 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
comoTrue
ouFalse
. 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_bertscore
Defina 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 classe
Summarization_Toxicity
. -
Para responder perguntas, use a classe
QAToxicity
.
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
:
-
`desintoxicar` para UnitaryAI Detoxyfy-imbiased, um classificador de texto multirótulo treinado no Toxic Comment Classification Challenge e no Jigsaw Unintended Bias in
Toxicity Classification. O modelo fornece 7
pontuações para as seguintes classes: toxicidade, toxicidade severa, obscenidade, ameaça, insulto, explicidade sexual e ataque de identidade.A seguir está um exemplo de saída do modelo de desintoxicação:
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` para Toxigen-roberta, um classificador de texto binário baseado em oBERTa R ajustado no conjunto de dados, que contém frases com toxicidade
sutil e implícita ToxiGen pertencentes a grupos minoritários. 13
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)