

Добро пожаловать на планшет GitHub! Цель этого проекта - сравнить прогресс в обучении обучению для табличного прогноза. Надеемся, что мы сможем создавать модели, которые решают задачи табличного прогноза, используя инструкции и несколько помеченных примеров.
Хотя многие проблемы с прогнозированием требуют использования табличных данных, часто сбор достаточных учебных данных может быть задачей задачи из -за затрат или проблем с конфиденциальностью. Большие языковые модели (LLMS) предлагают значительные мировые знания из-за их предварительного обучения и могут помочь повысить эффективность выборки для этих проблем. Тем не менее, эти модели часто не полностью выровнены со многими табличными задачами прогнозирования из-за модельных смещений от предварительного обучения и отсутствия информации о задаче, что наносит ущерб их производительности в нулевых и нескольких настройках выстрела.
Что если бы мы могли использовать инструкции по заданиям, чтобы помочь преодолеть этот пробел? Вот где появляется планшет. Планшет - это живой ориентир табличных наборов данных, аннотированных с инструкциями по заданиям для оценки того, насколько хорошо LLM используют инструкции по повышению производительности по задачам табличного прогнозирования.
Таблетка является живым ориентиром задач табличного прогнозирования, аннотированных с инструкциями. Планшет предоставляет инструменты для оценки моделей по текущим задачам и внесения новых задач. Цель состоит в том, чтобы помочь исследователям разработать методы, которые повышают эффективность образца LLMS при табличном прогнозе.
Если планшет полезен для вашей работы, пожалуйста, цитируйте нас.
@article{tabletSlack23,
Author = {Dylan Slack and Sameer Singh},
Title = {TABLET: Learning From Instructions For Tabular Data},
Year = {2023},
journal = {arXiv},
}Чтобы загрузить данные, клонируйте репозиторий GitHub.
git clone https://github.com/dylan-slack/Tablet.gitКак только это завершится, данные хранятся на этом пути.
Tablet/data/benchmark Пожалуйста, используйте Python>=3.9 . Из -за причуды в одном из пакетов, пожалуйста, не используйте Python=3.9.7 . Также убедитесь, что у вас есть pip>=23.0.1 .
conda create -n tablet python=3.9.6
conda activate tablet
pip install --upgrade pipЕсли вы хотите установить пакет планшетов из Source, перейдите в каталог пакетов планшетов и установите.
cd Tablet
python3 -m pip install -e .В противном случае вы можете установить из PYPI с PIP. [Примечание: еще не выпущен]
pip install tablet-benchmarkК сожалению, некоторые природные инструкции поступают из источников, которые не имеют допустимого лицензии и не позволяют хостингу в другом месте. Мы предоставляем руководство по сбору этих инструкций в
Tablet/fill_missing_instructions.pyКак только это будет завершено, вы можете запустить
python fill_missing_instructions.pyи инструкции будут добавлены в контрольные данные.
Пакет планшетов предлагает несколько полезных функций для оценки производительности инструкций LLMS + в табличных наборах данных. Tablet предоставляет код для оценки произвольных моделей Huggingface на задачах, а также предоставляет инструменты для простого набора данных HuggingFace для конкретной задачи, чтобы вы могли выполнить любую оценку.
Во -первых, давайте посмотрим, как хранятся наборы данных задач в планшете. Все задачи хранятся в
Tablet/data/benchmark/performanceНапример, задача для взрослых хранит в
Tablet/data/benchmark/performance/AdultВ этом каталоге существуют разные каталоги для каждой аннотации инструкции для задачи для взрослых. Например, давайте посмотрим на одну из прототипов, сгенерированных инструкций. Эта инструкция хранится в
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0Инструкции, собранные через другие источники, имеют разные пути. Все наборы правил, сгенерированные инструкции, имеют имя каталога
ruleset-synthetic-performance- *И природные инструкции
prototypes-naturallanguage-performance- *Обратите внимание, что использование прототипов здесь просто для того, чтобы сохранить согласованность форматирования с другими именами каталогов.
В каждом каталоге есть четыре файла
../test.csv
../test.json
../train.csv
../train.jsonЭто наборы обучения и тестирования, хранящиеся как в их табличных форматах (.CSV), так и в файлах их естественного языка (.json). В файлах JSON есть каждый быстрый компонент, например, заголовок, сериализация точки данных и инструкция.
Вот как использовать пакет планшетов, чтобы получить набор данных HuggingFace для определенной задачи. Допустим, мы хотим получить один из наборов данных для взрослых и накапливания в этих местах
Tablet/data/benchmark/performance/Adult/prototypes-synthetic-performance-0
Tablet/data/benchmark/performance/A37/prototypes-synthetic-performance-0Мы можем получить тестовые наборы данных следующим образом
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 () Мы можем указать здесь k_shot , чтобы контролировать, сколько экземпляров K_SHOT отображается из учебных данных и включено в подсказки. Затем мы можем получить доступ к данным тестирования взрослых и метки как
test_data , ground_truth_labels = adult [ 'text' ], adult [ 'label' ] Мы также можем напрямую оценить производительность по задачам. Например, оценка малой производительности Flan-T5 для взрослого с взрослыми с прототипами с помощью 3 семян выглядит следующим образом
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 ) Результаты будут добавлены к my_cool_results.txt .
Чтобы создать модели, которые могут очень хорошо соответствовать проблемам табличного прогнозирования из -за только инструкций и, возможно, нескольких примеров, нам нужно много задач. Они полезны для оценки того, насколько хорошо мы делаем, и могут быть полезны для будущего надзора.
Планшет позволяет легко создавать новые задачи, написав инструкции или генерируя их с помощью GPT-3 для новых наборов данных. Вот как вы это делаете.
Вы должны пройти обучение и тестирование для вашей задачи, хранящейся в Pandas DF. Затем вы можете позвонить Tablet.create . Эта функция позаботится о создании задачи для естественных инструкций, которые вы предоставляете, а также будут генерировать инструкции с использованием GPT-3, если хотите.
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" ) Здесь train_x и eval_x являются поездами и тестами. Точно так же train_y и eval_y являются столбцами метки. Эта функция также принимает имя задачи (например, такие вещи, как Adult или Wine ), заголовок, описывающий цель задачи высокого уровня, и естественные инструкции по лангауге-это аргумент nl_instructions . Вы также должны указать имена категориальных столбцов. Аргумент num -это индекс, который задача с этой естественной инструкцией будет храниться в (например, prototypes-naturallanguage-performance-{num} ).
Кроме того, если вы хотите сгенерировать инструкции с GPT-3, вам нужно будет предоставить ключ OpenAI в файле и дать местоположение этого файла в аргумент openai_key_path и указать, сколько инструкций для прототипов и шаблонов наборов правил вы хотите создать с помощью num_gpt3_revisions .
Чтобы включить вашу потрясающую новую задачу, убедитесь, что файлы задачи находятся в
./data/benchmark/performance/my_new_taskи отправьте запрос на привлечение.
Пожалуйста, также включите короткий readmd.md в папке, описывающий цель задачи и лицензию, в которой находятся данные и инструкции. Например, что -то подобное идеально:
Task: Predict how many sheep someone will need to count before they fall asleep.
Data License: Apache 2.0
Instruction License: MITМы рассмотрим его и добавим в эталон. Если вы хотите, чтобы ваше имя и веб -сайт были добавлены в списки задач на домашней странице, пожалуйста, упомяните это и в запросе на развлечение.