

欢迎来到平板电脑Github!该项目的目的是基于表格预测的指导学习进展。希望我们可以创建模型,可以使用指令和很少的标记示例来解决表格预测任务。
尽管许多预测问题需要使用表格数据,但是由于成本或隐私问题,收集足够的培训数据可能是一项挑战任务。大型语言模型(LLM)由于预培训而提供了大量的世界知识,并可以帮助提高这些问题的样本效率。尽管如此,这些模型通常并不完全与许多表格预测任务保持一致,这是因为预训练和缺乏有关该任务的信息的模型偏见,从而在零和很少的射击设置中损害了其性能。
如果我们可以使用任务说明来帮助弥合这一差距怎么办?这就是平板电脑的来源。平板电脑是标准数据集的活泼基准,该数据集注释了,该数据集带有任务说明,以评估LLMS利用说明如何改善表格预测任务的性能。
平板电脑是用指令注释的表格预测任务的活泼基准。平板电脑提供了评估当前任务的模型并贡献新任务的工具。目的是帮助研究人员开发提高LLM在表格预测中的样本效率的技术。
如果平板电脑对您的工作有用,请引用我们。
@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如果要从源安装平板电脑软件包,请导航到平板电脑软件包目录并安装。
cd Tablet
python3 -m pip install -e .否则,您可以使用PIP从PYPI安装。 [注意:尚未发布]
pip install tablet-benchmark不幸的是,一些自然发生的说明来自未允许许可并且不允许在其他地方托管的来源。我们提供了收集这些指示的指南
Tablet/fill_missing_instructions.py完成此操作后,您可以运行
python fill_missing_instructions.py并将指令添加到基准数据中。
平板电脑软件包提供了一些有用的功能,可评估表格数据集上LLMS +说明的性能。平板电脑提供了评估任务上任意拥抱面模型的代码,还提供了简单地获取特定任务的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 ,以控制从培训数据中采样了多少个kshot实例,并将其包含在提示中。然后,我们可以访问成人测试数据和标签
test_data , ground_truth_labels = adult [ 'text' ], adult [ 'label' ] 我们还可以直接评估任务的绩效。例如,评估2-shot 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之类的事物),描述任务的高级目标的标题和自然的Langauge指令 - 这是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我们将对其进行审查,并将其添加到基准中。如果您希望您的姓名和网站添加到主页上的任务列表中,请在“拉”请求中提及这一点。