Código, conjuntos de dados, modelos para o artigo "Avaliação automática de atribuição por grandes modelos de idiomas"

26 de junho de 2023 : 1) Resultados da avaliação de mais modelos, incluindo o GPT-4. 2) Reexame completo do conjunto de dados atribui-gensearch e corrigindo alguns problemas de anotação. DataSet atualizado lançado. 3) Código de treinamento e avaliação, bem como pontos de verificação do modelo lançados.
Lançamos nosso conjunto de dados (incluindo treinamento e dois conjuntos de avaliações: ATMEVAL simulação e attreval-gensearch) em: huggingface datasets (mais detalhes podem ser encontrados na página do conjunto de dados)
#loading dataset
from datasets import load_dataset
# training
attr_train = load_dataset ( "osunlp/AttrScore" , "combined_train" )
# test
# attr_eval_simulation = load_dataset("osunlp/AttrScore", "attreval_simulation")
attr_eval_gensearch = load_dataset ( "osunlp/AttrScore" , "attreval_gensearch" )Mostramos nossos resultados para a Prompting LLMS e o Fine Tuning LLMs em dados reaproveitados de tarefas relacionadas.
| Simulação | Gensearch | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Contexto | Modelo (tamanho) | Attr. | Contra. | Extra. | Geral | Attr. | Contra. | Extra. | Geral |
| Zero-shot | Alpaca (7b) | 50.0 | 4.0 | 1.4 | 33.6 | 50.7 | 8.6 | 3.6 | 34.3 |
| Alpaca (13b) | 48.3 | 5.6 | 2.2 | 33.5 | 50.6 | 6.1 | 19.3 | 34.7 | |
| Vicuna (13b) | 46.3 | 8.3 | 21.6 | 34.6 | 54.4 | 13.3 | 26.1 | 41.4 | |
| Chatgpt | 45.7 | 17.9 | 52.7 | 43.2 | 61.2 | 20.6 | 53.3 | 55.0 | |
| GPT-4 | 58.7 | 23.2 | 61.5 | 55.6 | 87.3 | 45.0 | 89.6 | 85.1 | |
| Poucos anos | Alpaca (7b) | 45.4 | 8.2 | 9.6 | 31.9 | 49.6 | 5.2 | 13.5 | 37.2 |
| Alpaca (13b) | 38.9 | 20.1 | 2.2 | 33.1 | 50.5 | 10.3 | 5.6 | 34.8 | |
| Vicuna (13b) | 35.4 | 37.2 | 0,3 | 32.6 | 50.6 | 9.1 | 8.4 | 34.1 | |
| Chatgpt | 46.6 | 27.6 | 35.8 | 39.2 | 62.6 | 26.8 | 49.5 | 53.3 | |
| GPT-4 | 61.1 | 31.3 | 68.8 | 60.0 | 85.2 | 53.3 | 88.9 | 84.3 | |
| Tuneado fino | Roberta (330m) | 62.5 | 54.6 | 74.7 | 65.0 | 47.2 | 25.2 | 62.3 | 49.8 |
| GPT2 (1,5b) | 63.6 | 54.6 | 71.9 | 63.5 | 51.1 | 18.6 | 60.7 | 47.4 | |
| T5 (770m) | 45.9 | 57.1 | 71.6 | 59.1 | 58.5 | 24.3 | 72.5 | 61.6 | |
| Flan-t5 (770m) | 57.3 | 50.1 | 70.5 | 59.3 | 64.3 | 27.6 | 72.9 | 64.5 | |
| Flan-t5 (3b) | 48.1 | 48.7 | 67.1 | 55.7 | 77.7 | 44.4 | 80.0 | 75.2 | |
| Flan-t5 (11b) | 48.4 | 49.9 | 66.5 | 55.4 | 81.6 | 38.9 | 76.9 | 72.7 | |
| Lhama (7b) | 62.2 | 50.7 | 74.6 | 62.8 | 77.9 | 41.1 | 78.3 | 72.5 | |
| Alpaca (7b) | 66.8 | 41.1 | 76.8 | 64.5 | 73.0 | 30.2 | 80.0 | 72.5 | |
| Alpaca (13b) | 63.6 | 48.9 | 75.8 | 63.6 | 77.5 | 34.5 | 79.4 | 73.3 | |
| Vicuna (13b) | 66.2 | 49.1 | 78.6 | 66.0 | 69.4 | 37.7 | 79.9 | 72.1 |
Podemos solicitar LLMs como ChatGPT e GPT-4 a avaliar a atribuição. A entrada é o prompt da tarefa de avaliação, a reivindicação (uma concatenação de consulta + resposta ) e uma referência. Por exemplo,
Verifique se uma determinada referência pode apoiar a reivindicação. Opções: atribuível, extrapolatória ou contraditório. Atribuível significa que a referência apóia totalmente a reivindicação, extrapolatória significa que a referência carece de informações suficientes para validar a reivindicação, e contraditório significa que a alegação contradiz as informações apresentadas na referência.
Reivindicação: Quem é o CEO atual do Twitter? O CEO atual do Twitter é Elon Musk
Referência: Elon Musk é o CEO do Twitter. Musk assumiu o cargo de CEO em outubro de 2022, após um caso de vaivém, no qual o bilionário propôs comprar a empresa de mídia social por US $ 44 bilhões, tentou recuar e, finalmente, passou com a aquisição. Depois de se tornar CEO, o ex -CEO Parag Agrawal, o CFO NED Segal, e o chefe de assuntos jurídicos e chefe de políticas Vijaya Gadde foram todos demitidos da empresa.
Para replicar o número na tabela para ChatGPT/GPT4 , copie sua chave de API do OpenAI em "./api_key.txt" e depois execute o Exemplo de notebook prompt_chatgpt_gpt4.ipynb
Para solicitar a LLAMA/ALPACA/VICUNA, veja abaixo como executar a inferência nesses modelos.
Você pode ajustar qualquer LMS em nossos conjuntos de dados reaproveitados para avaliar a atribuição.
Aqui, damos um exemplo para a llama/alpaca/vicuna de ajuste fino. Você pode usar os --model_name_or_path com qualquer modelos da família LLAMA. Fazemos um ajuste completo dos modelos LLAMA/ALPACA/VICUNA 7B/13B com 4 GPUs A100 80 GB.
torchrun --nproc_per_node 4 train_alpaca.py
--model_name_or_path chavinlo/alpaca-13b
--data_path osunlp/AttrScore
--train_subset ' combined_train '
--input_has_query True
--num_train_samples -1
--bf16 True
--output_dir tmp/alpaca_13b_combined_train/
--evaluation_strategy steps
--eval_steps 500
--num_train_epochs 1
--model_max_length 512
--per_device_train_batch_size 2
--per_device_eval_batch_size 2
--gradient_accumulation_steps 8
--save_strategy steps
--save_steps 5000
--save_total_limit 1
--learning_rate 2e-5
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type cosine
--logging_steps 1
--fsdp ' full_shard auto_wrap '
--fsdp_transformer_layer_cls_to_wrap ' LlamaDecoderLayer '
--tf32 True
Você também pode carregar nossos modelos de ajuste fino para avaliar. Fornecemos os seguintes pontos de verificação que treinamos no conjunto de dados combined_train nos modelos Huggingface:
Por exemplo,
from transformers import AutoTokenizer , AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer . from_pretrained ( "osunlp/attrscore-flan-t5-xl" )
model = AutoModelForSeq2SeqLM . from_pretrained ( "osunlp/attrscore-flan-t5-xl" )
input = "As an Attribution Validator, your task is to verify whether a given reference can support the given claim. A claim can be either a plain sentence or a question followed by its answer. Specifically, your response should clearly indicate the relationship: Attributable, Contradictory or Extrapolatory. A contradictory error occurs when you can infer that the answer contradicts the fact presented in the context, while an extrapolatory error means that you cannot infer the correctness of the answer based on the information provided in the context. n n Claim: Who is the current CEO of Twitter? The current CEO of Twitter is Elon Musk n Reference: Elon Musk is the CEO of Twitter. Musk took over as CEO in October 2022 following a back-and-forth affair in which the billionaire proposed to purchase the social media company for $44 billion, tried to back out, and then ultimately went through with the acquisition. After becoming CEO, former CEO Parag Agrawal, CFO Ned Segal, and legal affairs and policy chief Vijaya Gadde were all dismissed from the company."
input_ids = tokenizer . encode ( input , return_tensors = "pt" )
outputs = model . generate ( input_ids )
output = tokenizer . decode ( outputs [ 0 ], skip_special_tokens = True )
print ( output ) #'Attributable' Ou simplesmente usando o pipeline
from transformers import pipeline
model = pipeline ( "text2text-generation" , "osunlp/attrscore-flan-t5-xl" )
input = "As an Attribution Validator, your task is to verify whether a given reference can support the given claim. A claim can be either a plain sentence or a question followed by its answer. Specifically, your response should clearly indicate the relationship: Attributable, Contradictory or Extrapolatory. A contradictory error occurs when you can infer that the answer contradicts the fact presented in the context, while an extrapolatory error means that you cannot infer the correctness of the answer based on the information provided in the context. n n Claim: Who is the current CEO of Twitter? The current CEO of Twitter is Elon Musk n Reference: Elon Musk is the CEO of Twitter. Musk took over as CEO in October 2022 following a back-and-forth affair in which the billionaire proposed to purchase the social media company for $44 billion, tried to back out, and then ultimately went through with the acquisition. After becoming CEO, former CEO Parag Agrawal, CFO Ned Segal, and legal affairs and policy chief Vijaya Gadde were all dismissed from the company."
output = model ( input )[ 0 ][ 'generated_text' ]
print ( output ) #'Attributable'Mostramos um script de inferência e avaliação para modelos baseados em lhama:
python inference_alpaca.py
--model_name_or_path osunlp/attrscore-vicuna-13b
--test_data_path osunlp/AttrScore
--subset_name attreval_simulation
--model_max_length 512Todos os conjuntos de dados deste projeto destinam -se apenas ao uso de fins de pesquisa. Coletamos e anotamos dados para avaliação usando informações publicamente disponíveis na Web, com a assistência de um mecanismo de pesquisa generativo, New Bing. Reconhecemos que os LLMs têm o potencial de reproduzir e ampliar informações prejudiciais presentes nos dados. Fizemos um esforço para mitigar esse risco, selecionando cuidadosamente nossos dados de avaliação e realizando análises para identificar e mitigar riscos potenciais no processo.
Nosso conjunto de avaliação anotado, attreval-gensearch, é derivado de New Bing, que usa o GPT-4 como seu backbone. É crucial observar que também usamos o GPT-4 para avaliar a atribuição no AttentVal-Gensearch, que alcança o melhor desempenho com cerca de 85% de precisão geral. Alguns viés podem vir do GPT-4, gerando os exemplos de teste e avaliando a atribuição, o que poderia potencialmente distorcer nossa compreensão do verdadeiro desempenho do modelo. Portanto, alertamos contra o otimismo. Também reconhecemos que o tamanho do attrval-gensearch é moderado, o que pode não representar totalmente a configuração de uso real dos LLMs atribuídos.
Além disso, o conjunto de dados de simulação atribuído ainda possui lacunas do cenário real. Os padrões de erro neste conjunto de dados simulados podem ser excessivamente simplistas e não têm diversidade, o que pode limitar a capacidade dos modelos de lidar efetivamente com erros mais complexos e variados do mundo real. Também vale a pena notar que esse conjunto de dados simulado pode conter ruído e etiquetas errôneas, o que pode impedir ainda mais o aprendizado dos modelos e o desempenho subsequente. Como obter dados de treinamento de alta qualidade para avaliação de atribuição em escala pode ser um foco importante para o desenvolvimento futuro.
Se você achar útil este código ou conjunto de dados, considere citar nosso artigo:
@article { yue2023automatic ,
title = { Automatic Evaluation of Attribution by Large Language Models } ,
author = { Yue, Xiang and Wang, Boshi and Zhang, Kai and Chen, Ziru and Su, Yu and Sun, Huan } ,
journal = { arXiv preprint arXiv:2305.06311 } ,
year = { 2023 }
}Sinta -se à vontade para alcançar se tiver alguma dúvida. Xiang Yue, Yu Su, Huan Sun