

¡Bienvenido a la tableta Github! El objetivo de este proyecto es comparar el progreso en el aprendizaje de instrucciones para la predicción tabular. Con suerte, podemos crear modelos que resuelvan tareas de predicción tabular utilizando instrucciones y pocos ejemplos etiquetados.
Si bien muchos problemas de predicción requieren el uso de datos tabulares, a menudo, recopilar datos de capacitación suficientes puede ser una tarea de desafío, debido a costos o problemas de privacidad. Los modelos de idiomas grandes (LLM) ofrecen un conocimiento mundial considerable debido a su pre-entrenamiento y podrían ayudar a mejorar la eficiencia de la muestra para estos problemas. Aún así, estos modelos a menudo no están completamente alineados con muchas tareas de predicción tabular debido a los sesgos del modelo de la capacitación previa y la falta de información sobre la tarea, perjudicando su rendimiento en la configuración cero y pocas disparos.
¿Qué pasaría si pudiéramos usar instrucciones de tarea para ayudar a cerrar esta brecha? Ahí es donde entra la tableta. La tableta es un punto de referencia vivo de conjuntos de datos tabulares anotados con instrucciones de tareas para evaluar qué tan bien LLM utilizan instrucciones para mejorar el rendimiento en las tareas de predicción tabular.
La tableta es un punto de referencia vivo de tareas de predicción tabular anotadas con instrucciones. La tableta proporciona las herramientas para evaluar modelos en tareas actuales y contribuir con nuevas tareas. El objetivo es ayudar a los investigadores a desarrollar técnicas que mejoren la eficiencia de la muestra de LLM en la predicción tabular.
Si la tableta es útil para su trabajo, cíquanos.
@article{tabletSlack23,
Author = {Dylan Slack and Sameer Singh},
Title = {TABLET: Learning From Instructions For Tabular Data},
Year = {2023},
journal = {arXiv},
}Para descargar los datos, clone el repositorio de GitHub.
git clone https://github.com/dylan-slack/Tablet.gitUna vez que esto se completa, los datos se almacenan en esta ruta.
Tablet/data/benchmark Utilice Python>=3.9 . Debido a una peculiaridad en uno de los paquetes, no use Python=3.9.7 . Además, asegúrese de tener pip>=23.0.1 .
conda create -n tablet python=3.9.6
conda activate tablet
pip install --upgrade pipSi desea instalar el paquete de tableta desde la fuente, navegue por el directorio de paquetes de tableta e instale.
cd Tablet
python3 -m pip install -e .De lo contrario, puede instalar desde PYPI con PIP. [Nota: aún no se ha lanzado]
pip install tablet-benchmarkDesafortunadamente, algunas instrucciones naturales provienen de fuentes que no tienen licencia permisivamente y no permiten alojar en otro lugar. Proporcionamos una guía para recopilar estas instrucciones en
Tablet/fill_missing_instructions.pyUna vez que esto se complete, puede ejecutar
python fill_missing_instructions.pyy las instrucciones se agregarán a los datos de referencia.
El paquete de tabletas ofrece varias características útiles para evaluar el rendimiento de las instrucciones LLMS + en conjuntos de datos tabulares. La tableta proporciona código para evaluar los modelos arbitrarios de Huggingface en las tareas y también proporciona herramientas para simplemente obtener el conjunto de datos Huggingface para una tarea en particular para que pueda realizar cualquier evaluación que desee.
Primero, veamos cómo se almacenan los conjuntos de datos de tareas en la tableta. Todas las tareas se almacenan en
Tablet/data/benchmark/performancePor ejemplo, la tarea para adultos es almacenar en
Tablet/data/benchmark/performance/AdultDentro de este directorio, existen diferentes directorios para cada anotación de instrucciones para la tarea de adultos. Por ejemplo, veamos uno de los prototipos generó instrucciones. Esta instrucción se almacena en
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0Las instrucciones recopiladas a través de otras fuentes tienen diferentes rutas. Las instrucciones generadas por reglas tienen el nombre del directorio
ruleset-synthetic-performance- *Y las instrucciones naturales tienen
prototypes-naturallanguage-performance- *Tenga en cuenta que el uso de prototipos aquí es solo para retener la consistencia del formato con los otros nombres de directorio.
Dentro de cada directorio, hay cuatro archivos
../test.csv
../test.json
../train.csv
../train.jsonEstos son los conjuntos de capacitación y prueba, almacenados tanto en sus formatos tabulares (los .csv) como en sus archivos de lenguaje natural (los .json). Dentro de los archivos JSON, hay cada componente de inmediato, como el encabezado, la serialización del punto de datos e instrucción.
Aquí le mostramos cómo usar el paquete de tabletas para obtener un conjunto de datos Huggingface para una tarea en particular. Digamos que queremos obtener uno de los conjuntos de datos de tos para adultos y feriosos en estos lugares
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0
Tablet/data/benchmark/performance/A37/prototypes-synthetic-performance-0Podemos obtener los conjuntos de datos de prueba de la siguiente manera
from Tablet import evaluate
benchmark_path = "./data/benchmark/performance/"
tasks = [ 'A37/prototypes-synthetic-performance-0' ,
'Adult/prototypes-synthetic-performance-0' ]
evaluator = evaluate . Evaluator ( benchmark_path = benchmark_path ,
tasks_to_run = tasks ,
encoding_format = "flan" ,
k_shot = 0 )
whooping_cough , adult = evaluator . get_test_hf_datasets () Podemos especificar k_shot aquí para controlar cuántas instancias K_SHOT se muestrean de los datos de entrenamiento e incluidos en las indicaciones. Luego, podemos acceder a los datos y etiquetas de prueba para adultos como
test_data , ground_truth_labels = adult [ 'text' ], adult [ 'label' ] También podemos evaluar directamente el rendimiento en las tareas. Por ejemplo, la evaluación de un pequeño rendimiento FLAN-T5 de 2 disparos en adultos con prototipos generó instrucciones con 3 semillas es la siguiente
from Tablet import evaluate
benchmark_path = "./data/benchmark/performance/"
tasks = [ 'Adult/prototypes-synthetic-performance-0' ]
evaluator = evaluate . Evaluator ( benchmark_path = benchmark_path ,
tasks_to_run = tasks ,
encoding_format = "flan" ,
results_file = "my_cool_results.txt" ,
k_shot = 2 )
evaluator . run_eval ( how_many = 3 ) Los resultados se agregarán a my_cool_results.txt .
Para construir modelos que puedan alinearse con problemas de predicción tabular extremadamente bien con solo instrucciones y quizás algunos ejemplos, necesitamos muchas tareas. Estos son útiles para evaluar qué tan bien estamos y podrían ser útiles para futuras supervisión.
La tableta facilita la creación de nuevas tareas escribiendo instrucciones o generándolas con GPT-3 para nuevos conjuntos de datos. Así es como lo haces.
Debe tener la capacitación y las pruebas para su tarea almacenada en Pandas DF's. Luego, puede llamar a Tablet.create . Cree. Esta función se encargará de crear la tarea para las instrucciones que ocurren naturalmente que proporcione y también generará instrucciones utilizando GPT-3, si lo desea.
from Tablet import create
create . create_task ( train_x ,
eval_x ,
train_y ,
eval_y ,
name = my_data_set_name ,
header = "Predict xyz." ,
nl_instruction = "Generally, people papers are grad students." ,
categorical_columns = names_of_categorical_columns ,
num = index_of_task ,
num_gpt3_revisions = 10 ,
openai_key_path = path_to_open_ai_key ,
save_loc = "./data/benchmark" ) Aquí, train_x y eval_x están las divisiones de tren y prueba. Del mismo modo, train_y y eval_y son las columnas de la etiqueta. Esta función también acepta el nombre de la tarea (por ejemplo, cosas como Adult o Wine ), el encabezado que describe el objetivo de alto nivel de la tarea y las instrucciones naturales de Langauge, este es el argumento nl_instructions . También debe especificar los nombres de las columnas categóricas. El argumento num es el índice de la tarea con esta instrucción natural se almacenará en (p. Ej., prototypes-naturallanguage-performance-{num} ).
Además, si desea generar instrucciones con GPT-3, deberá proporcionar una clave OpenAI en un archivo y dar la ubicación de este archivo al argumento openai_key_path y especificar cuántas instrucciones para las plantillas de prototipos y reglas que desea crear con num_gpt3_revisions .
Para incluir su nueva tarea increíble, asegúrese de que los archivos de la tarea estén debajo
./data/benchmark/performance/my_new_tasky enviar una solicitud de extracción.
También incluya un breve readmd.md en la carpeta que describe el objetivo de la tarea y la licencia que se encuentran los datos y las instrucciones. Por ejemplo, algo como esto es ideal:
Task: Predict how many sheep someone will need to count before they fall asleep.
Data License: Apache 2.0
Instruction License: MITLo revisaremos y lo agregaremos al punto de referencia. Si desea que su nombre y sitio web se agregue a las listas de tareas en la página de inicio, mencione esto en la solicitud de extracción también.