Código, conjuntos de datos, modelos para el documento "Evaluación automática de la atribución por modelos de idiomas grandes"

26 de junio de 2023 : 1) Resultados de la evaluación de más modelos, incluido GPT-4. 2) Reexaminación exhaustiva del conjunto de datos Attreval-Gensearch y corrección de algunos problemas de anotación. Conjunto de datos actualizado lanzado. 3) Código de capacitación y evaluación, así como puntos de control modelo lanzados.
Lanzamos nuestro conjunto de datos (incluidos los conjuntos de capacitación y dos conjuntos de evaluación: Attreval-simulación y Attreval-Gensearch) en: Huggingface DataSets (se pueden encontrar más detalles en la página del conjunto de datos)
#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 nuestros resultados para solicitar LLMS y LLMS ajustados en datos reutilizados de tareas relacionadas.
| Simulación | Parcialidad | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Configuración | Modelo (tamaño) | Attr. | Contra. | Extra. | En general | Attr. | Contra. | Extra. | En general |
| Cero | 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 | |
| Pocos disparos | 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 | |
| Afinado | 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 | |
| Llama (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 pedirle a LLM como CHATGPT y GPT-4 a evaluar la atribución. La entrada es el indicador de la tarea de evaluación, reclamo (una concatenación de consulta + respuesta ) y una referencia. Por ejemplo,
Verifique si una referencia dada puede respaldar el reclamo. Opciones: atribuible, extrapolatorio o contradictorio. Atribuible significa que la referencia respalda completamente el reclamo, extrapolatorio significa que la referencia carece de información suficiente para validar el reclamo y contradictory significa que el reclamo contradice la información presentada en la referencia.
Reclamación: ¿Quién es el actual CEO de Twitter? El actual CEO de Twitter es Elon Musk
Referencia: Elon Musk es el CEO de Twitter. Musk asumió el cargo de CEO en octubre de 2022 luego de un asunto de ida y vuelta en el que el multimillonario propuso comprar la compañía de redes sociales por $ 44 mil millones, trató de retroceder y luego finalmente logró la adquisición. Después de convertirse en CEO, el ex CEO Parag Agrawal, CFO Ned Segal y el jefe de asuntos legales y políticas Vijaya Gadde fueron despedidos de la compañía.
Para replicar el número en la tabla para ChatGPT/GPT4 , copie su tecla API de OpenAI en "./api_key.txt" y luego ejecute el ejemplo de cuaderno prompt_chatgpt_gpt4.ipynb
Para solicitar LLAMA/Alpaca/Vicuna, consulte a continuación cómo ejecutar la inferencia en estos modelos.
Puede ajustar cualquier LMS en nuestros conjuntos de datos reutilizados para evaluar la atribución.
Aquí, damos un ejemplo de Llama/Alpaca/Vicuna. Puede usar --model_name_or_path con cualquier modelo de familia Llama. Hacemos ajuste completo de los modelos Llama/Alpaca/Vicuna 7B/13B con 4 GPU A100 80GB.
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
También puede cargar nuestros modelos ajustados para evaluar. Proporcionamos los siguientes puntos de control que entrenamos en el conjunto de datos combined_train en los modelos Huggingface:
Por ejemplo,
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' O simplemente usando la 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 un script de inferencia y evaluación para modelos basados en llamas:
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 los conjuntos de datos en este proyecto están destinados únicamente a uso de fines de investigación. Recopilamos y anotamos datos para la evaluación utilizando información pública disponible en la Web, con la ayuda de un motor de búsqueda generativo, New Bing. Reconocemos que los LLM tienen el potencial de reproducir y amplificar la información dañina presente en los datos. Hicimos un esfuerzo para mitigar este riesgo seleccionando cuidadosamente nuestros datos de evaluación y realizando análisis para identificar y mitigar los riesgos potenciales en el proceso.
Nuestro conjunto de evaluación anotado, Attreval-Gensearch, se deriva de New Bing, que utiliza GPT-4 como su columna vertebral. Es crucial tener en cuenta que también usamos GPT-4 para evaluar la atribución en Attreval-Gensearch, que logra el mejor rendimiento con alrededor del 85% de precisión general. Algunos sesgos pueden provenir de GPT-4 generando los ejemplos de prueba y evaluando la atribución, lo que podría sesgar nuestra comprensión del verdadero rendimiento del modelo. Por lo tanto, advirtemos contra el sobrettimismo. También reconocemos que el tamaño de Attreval-Gensearch es moderado, lo que puede no representar completamente la configuración de uso real de LLM atribuidos.
Además, el conjunto de datos de simulación Attreval todavía tiene brechas del escenario real. Los patrones de error en este conjunto de datos simulado pueden ser demasiado simplistas y carecer de diversidad, lo que puede limitar la capacidad de los modelos para manejar efectivamente errores de mundo real más complejos y variados. También vale la pena señalar que este conjunto de datos simulado puede contener ruido y etiquetas erróneas, lo que podría impedir aún más el aprendizaje de los modelos y el rendimiento posterior. Cómo obtener datos de capacitación de mayor calidad para la evaluación de atribución a escala puede ser un enfoque importante para el desarrollo futuro.
Si encuentra útil este código o conjunto de datos, considere citar nuestro documento:
@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 }
}No dude en comunicarse si tiene alguna pregunta. Xiang Yue, Yu Su, Huan Sun