用于评估自回归语言模型的框架
项目描述
语言模型评估工具
概述
该项目提供了一个统一的框架来在大量不同的评估任务上测试自回归语言模型(GPT-2、GPT-3、GPTNeo 等)。
特征:
- 已实施 200 多项任务
- 支持 GPT-2、GPT-3、GPT-Neo、GPT-NeoX 和 GPT-J,具有灵活的标记化无关接口
- 任务版本控制以确保可重复性
安装
pip install lm-eval
基本用法
要在 NLU 任务(例如 LAMBADA、HellaSwag)上评估模型(例如 GPT-2),您可以运行以下命令。在报告评估工具的结果时,请包括任务版本(显示在 中results["versions"]
)以实现可重复性。这允许对任务进行错误修复,同时还确保以前报告的分数是可重现的。有关详细信息,请参阅任务版本控制部分。
python main.py \
--model gpt2 \
--device cuda:0 \
--tasks lambada,hellaswag
(这默认使用 gpt2-117M 根据 HF 默认值,使用 --model_args 指定其他 gpt2 大小)
可以使用--model_args
标志向模型构造函数提供其他参数。最重要的是,该gpt2
模型可用于加载任意 HuggingFace 模型。例如,要运行 GPTNeo,请使用以下命令:
python main.py \
--model gpt2 \
--model_args pretrained=EleutherAI/gpt-neo-2.7B \
--device cuda:0 \
--tasks lambada,hellaswag
如果您有权访问 OpenAI API,您还可以评估 GPT-3:
export OPENAI_API_SECRET_KEY=YOUR_KEY_HERE
python main.py \
--model gpt3 \
--model_args engine=davinci \
--tasks lambada,hellaswag
如果除了运行任务本身之外,您还想验证正在执行的任务的数据完整性,您可以使用以下--check_integrity
标志:
python main.py \
--model gpt3 \
--model_args engine=davinci \
--tasks lambada,hellaswag \
--check_integrity
要评估 HF 上不可用的 mesh-transformer-jax 模型,请通过此脚本调用 eval 工具。
实施新任务
要在 eval 工具中实施新任务,请参阅本指南。
引用为
@software{eval-harness,
author = {Gao, Leo and
Tow, Jonathan and
Biderman, Stella and
Black, Sid and
DiPofi, Anthony and
Foster, Charles and
Golding, Laurence and
Hsu, Jeffrey and
McDonell, Kyle and
Muennighoff, Niklas and
Phang, Jason and
Reynolds, Laria and
Tang, Eric and
Thite, Anish and
Wang, Ben and
Wang, Kevin and
Zou, Andy},
title = {A framework for few-shot language model evaluation},
month = sep,
year = 2021,
publisher = {Zenodo},
version = {v0.0.1},
doi = {10.5281/zenodo.5371628},
url = {https://doi.org/10.5281/zenodo.5371628}
}
完整的任务列表
任务名称 | 火车 | 瓦尔 | 测试 | 验证/测试文件 | 指标 |
---|---|---|---|---|---|
可乐 | ✓ | ✓ | 1043 | 微控制器 | |
万里 | ✓ | ✓ | 9815 | ACC | |
mnli_mismatched | ✓ | ✓ | 9832 | ACC | |
MRPC | ✓ | ✓ | 408 | 加速,f1 | |
rte | ✓ | ✓ | 277 | ACC | |
qnli | ✓ | ✓ | 5463 | ACC | |
✓ | ✓ | 40430 | 加速,f1 | ||
sst | ✓ | ✓ | 872 | ACC | |
万里 | ✓ | ✓ | 71 | ACC | |
布尔克 | ✓ | ✓ | 3270 | ACC | |
CB | ✓ | ✓ | 56 | 加速,f1 | |
美洲杯 | ✓ | ✓ | 100 | ACC | |
多路 | ✓ | ✓ | 4848 | ACC | |
记录 | ✓ | ✓ | 10000 | f1, 时间 | |
威克 | ✓ | ✓ | 638 | ACC | |
wsc | ✓ | ✓ | 104 | ACC | |
可乐 | ✓ | ✓ | 500 | f1, 时间 | |
降低 | ✓ | ✓ | 9536 | 时间,f1 | |
兰巴达 | ✓ | 5153 | 人,ACC | ||
lambada_cloze | ✓ | 5153 | 人,ACC | ||
lambada_mt_en | ✓ | 5153 | 人,ACC | ||
lambada_mt_fr | ✓ | 5153 | 人,ACC | ||
lambada_mt_de | ✓ | 5153 | 人,ACC | ||
兰巴达山 | ✓ | 5153 | 人,ACC | ||
lambada_mt_es | ✓ | 5153 | 人,ACC | ||
维基文本 | ✓ | ✓ | 62 | word_perplexity、byte_perplexity、bits_per_byte | |
皮卡 | ✓ | ✓ | 1838年 | acc, acc_norm | |
前列腺素 | ✓ | 18736 | acc, acc_norm | ||
mc_taco | ✓ | ✓ | 9442 | f1, 时间 | |
公开媒体 | ✓ | 1000 | ACC | ||
sciq | ✓ | ✓ | ✓ | 1000 | acc, acc_norm |
qa4mre_2011 | ✓ | 120 | acc, acc_norm | ||
qa4mre_2012 | ✓ | 160 | acc, acc_norm | ||
qa4mre_2013 | ✓ | 284 | acc, acc_norm | ||
琐事 | ✓ | ✓ | 11313 | ACC | |
arc_easy | ✓ | ✓ | ✓ | 2376 | acc, acc_norm |
arc_challenge | ✓ | ✓ | ✓ | 1172 | acc, acc_norm |
逻辑卡 | ✓ | ✓ | ✓ | 651 | acc, acc_norm |
地狱犬 | ✓ | ✓ | 10042 | acc, acc_norm | |
openbookqa | ✓ | ✓ | ✓ | 500 | acc, acc_norm |
小队2 | ✓ | ✓ | 11873 | 精确,f1,HasAns_exact,HasAns_f1,NoAns_exact,NoAns_f1,best_exact,best_f1 | |
种族 | ✓ | ✓ | ✓ | 1045 | ACC |
头条 | ✓ | ✓ | ✓ | 2742 | acc, acc_norm |
headqa_es | ✓ | ✓ | ✓ | 2742 | acc, acc_norm |
headqa_en | ✓ | ✓ | ✓ | 2742 | acc, acc_norm |
数学 | ✓ | ✓ | ✓ | 2985 | acc, acc_norm |
网页qs | ✓ | ✓ | 2032 | ACC | |
wsc273 | ✓ | 273 | ACC | ||
威诺格兰德 | ✓ | ✓ | 1267 | ACC | |
anli_r1 | ✓ | ✓ | ✓ | 1000 | ACC |
anli_r2 | ✓ | ✓ | ✓ | 1000 | ACC |
anli_r3 | ✓ | ✓ | ✓ | 1200 | ACC |
伦理_cm | ✓ | ✓ | 3885 | ACC | |
伦理道义论 | ✓ | ✓ | 3596 | ac, em | |
伦理正义 | ✓ | ✓ | 2704 | ac, em | |
伦理_功利主义_原创 | ✓ | 4808 | ACC | ||
伦理功利主义 | ✓ | ✓ | 4808 | ACC | |
道德美德 | ✓ | ✓ | 4975 | ac, em | |
真实的qa_mc | ✓ | 817 | mc1, mc2 | ||
真实的qa_gen | ✓ | 817 | bleurt_max,bleurt_acc,bleurt_diff,bleu_max,bleu_acc,bleu_diff,rouge1_max,rouge1_acc,rouge1_diff,rouge2_max,rouge2_acc,rouge2_diff,rougeL_max,rougeL_acc,rougeL_diff | ||
相互的 | ✓ | ✓ | 886 | r@1, r@2, 先生 | |
相互加 | ✓ | ✓ | 886 | r@1, r@2, 先生 | |
数学代数 | ✓ | ✓ | 1187 | ACC | |
math_counting_and_prob | ✓ | ✓ | 474 | ACC | |
数学几何 | ✓ | ✓ | 479 | ACC | |
math_intermediate_algebra | ✓ | ✓ | 903 | ACC | |
math_num_theory | ✓ | ✓ | 540 | ACC | |
math_prealgebra | ✓ | ✓ | 871 | ACC | |
math_precalc | ✓ | ✓ | 546 | ACC | |
math_asdiv | ✓ | 2305 | ACC | ||
算术_2da | ✓ | 2000 | ACC | ||
算术_2ds | ✓ | 2000 | ACC | ||
算术_3da | ✓ | 2000 | ACC | ||
算术_3ds | ✓ | 2000 | ACC | ||
算术_4da | ✓ | 2000 | ACC | ||
算术_4ds | ✓ | 2000 | ACC | ||
算术_5da | ✓ | 2000 | ACC | ||
算术_5ds | ✓ | 2000 | ACC | ||
算术_2dm | ✓ | 2000 | ACC | ||
算术_1dc | ✓ | 2000 | ACC | ||
hendrycksTest-abstract_algebra | ✓ | ✓ | ✓ | 100 | acc, acc_norm |
hendrycks测试解剖学 | ✓ | ✓ | ✓ | 135 | acc, acc_norm |
亨德里克斯天文学 | ✓ | ✓ | ✓ | 152 | acc, acc_norm |
hendrycksTest-business_ethics | ✓ | ✓ | ✓ | 100 | acc, acc_norm |
hendrycksTest-clinical_knowledge | ✓ | ✓ | ✓ | 265 | acc, acc_norm |
hendrycksTest-college_biology | ✓ | ✓ | ✓ | 144 | acc, acc_norm |
hendrycksTest-college_chemistry | ✓ | ✓ | ✓ | 100 | acc, acc_norm |
hendrycksTest-college_computer_science | ✓ | ✓ | ✓ | 100 | acc, acc_norm |
hendrycksTest-college_mathematics | ✓ | ✓ | ✓ | 100 | acc, acc_norm |
hendrycksTest-college_medicine | ✓ | ✓ | ✓ | 173 | acc, acc_norm |
hendrycksTest-college_physics | ✓ | ✓ | ✓ | 102 | acc, acc_norm |
hendrycksTest-computer_security | ✓ | ✓ | ✓ | 100 | acc, acc_norm |
hendrycksTest-conceptual_physics | ✓ | ✓ | ✓ | 235 | acc, acc_norm |
亨德里克斯计量经济学 | ✓ | ✓ | ✓ | 114 | acc, acc_norm |
hendrycksTest-electrical_engineering | ✓ | ✓ | ✓ | 145 | acc, acc_norm |
hendrycksTest-elementary_mathematics | ✓ | ✓ | ✓ | 378 | acc, acc_norm |
hendrycksTest-formal_logic | ✓ | ✓ | ✓ | 126 | acc, acc_norm |
hendrycksTest-global_facts | ✓ | ✓ | ✓ | 100 | acc, acc_norm |
hendrycksTest-high_school_biology | ✓ | ✓ | ✓ | 310 | acc, acc_norm |
hendrycksTest-high_school_chemistry | ✓ | ✓ | ✓ | 203 | acc, acc_norm |
hendrycksTest-high_school_computer_science | ✓ | ✓ | ✓ | 100 | acc, acc_norm |
hendrycksTest-high_school_european_history | ✓ | ✓ | ✓ | 165 | acc, acc_norm |
hendrycksTest-high_school_geography | ✓ | ✓ | ✓ | 198 | acc, acc_norm |
hendrycksTest-high_school_government_and_politics | ✓ | ✓ | ✓ | 193 | acc, acc_norm |
hendrycksTest-high_school_macroeconomics | ✓ | ✓ | ✓ | 390 | acc, acc_norm |
hendrycksTest-high_school_mathematics | ✓ | ✓ | ✓ | 270 | acc, acc_norm |
hendrycksTest-high_school_microeconomics | ✓ | ✓ | ✓ | 238 | acc, acc_norm |
hendrycksTest-high_school_physics | ✓ | ✓ | ✓ | 151 | acc, acc_norm |
hendrycksTest-high_school_psychology | ✓ | ✓ | ✓ | 545 | acc, acc_norm |
hendrycksTest-high_school_statistics | ✓ | ✓ | ✓ | 216 | acc, acc_norm |
hendrycksTest-high_school_us_history | ✓ | ✓ | ✓ | 204 | acc, acc_norm |
hendrycksTest-high_school_world_history | ✓ | ✓ | ✓ | 237 | acc, acc_norm |
hendrycksTest-human_aging | ✓ | ✓ | ✓ | 223 | acc, acc_norm |
hendrycksTest-human_sexuality | ✓ | ✓ | ✓ | 131 | acc, acc_norm |
hendrycksTest-international_law | ✓ | ✓ | ✓ | 121 | acc, acc_norm |
亨德里克斯测试法学 | ✓ | ✓ | ✓ | 108 | acc, acc_norm |
hendrycksTest-logical_fallacies | ✓ | ✓ | ✓ | 163 | acc, acc_norm |
hendrycksTest-machine_learning | ✓ | ✓ | ✓ | 112 | acc, acc_norm |
hendrycks测试管理 | ✓ | ✓ | ✓ | 103 | acc, acc_norm |
hendrycks测试营销 | ✓ | ✓ | ✓ | 234 | acc, acc_norm |
hendrycksTest-medical_genetics | ✓ | ✓ | ✓ | 100 | acc, acc_norm |
hendrycks测试杂项 | ✓ | ✓ | ✓ | 783 | acc, acc_norm |
hendrycksTest-moral_disputes | ✓ | ✓ | ✓ | 346 | acc, acc_norm |
hendrycksTest-moral_scenarios | ✓ | ✓ | ✓ | 895 | acc, acc_norm |
hendrycksTest-nutrition | ✓ | ✓ | ✓ | 306 | acc, acc_norm |
亨德里克斯测试哲学 | ✓ | ✓ | ✓ | 311 | acc, acc_norm |
亨德里克斯史前史 | ✓ | ✓ | ✓ | 324 | acc, acc_norm |
hendrycksTest-professional_accounting | ✓ | ✓ | ✓ | 282 | acc, acc_norm |
hendrycksTest-professional_law | ✓ | ✓ | ✓ | 1534 | acc, acc_norm |
hendrycksTest-professional_medicine | ✓ | ✓ | ✓ | 272 | acc, acc_norm |
hendrycksTest-professional_psychology | ✓ | ✓ | ✓ | 612 | acc, acc_norm |
hendrycksTest-public_relations | ✓ | ✓ | ✓ | 110 | acc, acc_norm |
hendrycksTest-security_studies | ✓ | ✓ | ✓ | 245 | acc, acc_norm |
hendrycks测试社会学 | ✓ | ✓ | ✓ | 201 | acc, acc_norm |
hendrycksTest-us_foreign_policy | ✓ | ✓ | ✓ | 100 | acc, acc_norm |
hendrycks测试病毒学 | ✓ | ✓ | ✓ | 166 | acc, acc_norm |
hendrycksTest-world_religions | ✓ | ✓ | ✓ | 171 | acc, acc_norm |
wmt14-en-fr | ✓ | 3003 | bleu、chrf、ter | ||
wmt14-fr-en | ✓ | 3003 | bleu、chrf、ter | ||
wmt16-en-ro | ✓ | 1999 | bleu、chrf、ter | ||
wmt16-ro-en | ✓ | 1999 | bleu、chrf、ter | ||
wmt16-de-en | ✓ | 2999 | bleu、chrf、ter | ||
wmt16-en-de | ✓ | 2999 | bleu、chrf、ter | ||
wmt20-cs-en | ✓ | 664 | bleu、chrf、ter | ||
wmt20-de-en | ✓ | 785 | bleu、chrf、ter | ||
wmt20-de-fr | ✓ | 1619 | bleu、chrf、ter | ||
wmt20-en-cs | ✓ | 1418 | bleu、chrf、ter | ||
wmt20-en-de | ✓ | 1418 | bleu、chrf、ter | ||
wmt20-en-iu | ✓ | 2971 | bleu、chrf、ter | ||
wmt20-en-ja | ✓ | 1000 | bleu、chrf、ter | ||
wmt20-en-km | ✓ | 2320 | bleu、chrf、ter | ||
wmt20-en-pl | ✓ | 1000 | bleu、chrf、ter | ||
wmt20-en-ps | ✓ | 2719 | bleu、chrf、ter | ||
wmt20-en-ru | ✓ | 2002年 | bleu、chrf、ter | ||
wmt20-en-ta | ✓ | 1000 | bleu、chrf、ter | ||
wmt20-en-zh | ✓ | 1418 | bleu、chrf、ter | ||
wmt20-fr-de | ✓ | 1619 | bleu、chrf、ter | ||
wmt20-iu-en | ✓ | 2971 | bleu、chrf、ter | ||
wmt20-ja-en | ✓ | 993 | bleu、chrf、ter | ||
wmt20-km-en | ✓ | 2320 | bleu、chrf、ter | ||
wmt20-pl-en | ✓ | 1001 | bleu、chrf、ter | ||
wmt20-ps-en | ✓ | 2719 | bleu、chrf、ter | ||
wmt20-ru-en | ✓ | 991 | bleu、chrf、ter | ||
wmt20-ta-en | ✓ | 997 | bleu、chrf、ter | ||
wmt20-zh-cn | ✓ | 2000 | bleu、chrf、ter | ||
iwslt17-en-ar | ✓ | 1460 | bleu、chrf、ter | ||
iwslt17-ar-en | ✓ | 1460 | bleu、chrf、ter | ||
字谜1 | ✓ | 10000 | ACC | ||
字谜2 | ✓ | 10000 | ACC | ||
循环字母 | ✓ | 10000 | ACC | ||
随机插入 | ✓ | 10000 | ACC | ||
reversed_words | ✓ | 10000 | ACC | ||
桩_arxiv | ✓ | ✓ | 2407 | word_perplexity、byte_perplexity、bits_per_byte | |
堆书3 | ✓ | ✓ | 269 | word_perplexity、byte_perplexity、bits_per_byte | |
堆书语料库2 | ✓ | ✓ | 28 | word_perplexity、byte_perplexity、bits_per_byte | |
pile_dm-数学 | ✓ | ✓ | 1922年 | word_perplexity、byte_perplexity、bits_per_byte | |
桩安然 | ✓ | ✓ | 1010 | word_perplexity、byte_perplexity、bits_per_byte | |
pile_europarl | ✓ | ✓ | 157 | word_perplexity、byte_perplexity、bits_per_byte | |
桩自由法 | ✓ | ✓ | 5101 | word_perplexity、byte_perplexity、bits_per_byte | |
堆_github | ✓ | ✓ | 18195 | word_perplexity、byte_perplexity、bits_per_byte | |
桩古腾堡 | ✓ | ✓ | 80 | word_perplexity、byte_perplexity、bits_per_byte | |
桩黑客新闻 | ✓ | ✓ | 1632 | word_perplexity、byte_perplexity、bits_per_byte | |
pile_nih-exporter | ✓ | ✓ | 1884年 | word_perplexity、byte_perplexity、bits_per_byte | |
pile_opensubtitles | ✓ | ✓ | 642 | word_perplexity、byte_perplexity、bits_per_byte | |
堆_openwebtext2 | ✓ | ✓ | 32925 | word_perplexity、byte_perplexity、bits_per_byte | |
pile_philpapers | ✓ | ✓ | 68 | word_perplexity、byte_perplexity、bits_per_byte | |
pile_pile-cc | ✓ | ✓ | 52790 | word_perplexity、byte_perplexity、bits_per_byte | |
pile_pubmed-摘要 | ✓ | ✓ | 29895 | word_perplexity、byte_perplexity、bits_per_byte | |
pile_pubmed-中央 | ✓ | ✓ | 5911 | word_perplexity、byte_perplexity、bits_per_byte | |
桩堆栈交换 | ✓ | ✓ | 30378 | word_perplexity、byte_perplexity、bits_per_byte | |
pile_uspto | ✓ | ✓ | 11415 | word_perplexity、byte_perplexity、bits_per_byte | |
pile_ubuntu-irc | ✓ | ✓ | 22 | word_perplexity、byte_perplexity、bits_per_byte | |
桩维基百科 | ✓ | ✓ | 17511 | word_perplexity、byte_perplexity、bits_per_byte | |
桩_youtube字幕 | ✓ | ✓ | 342 | word_perplexity、byte_perplexity、bits_per_byte | |
blimp_adjunct_island | ✓ | 1000 | ACC | ||
blimp_anaphor_gender_agreement | ✓ | 1000 | ACC | ||
blimp_anaphor_number_agreement | ✓ | 1000 | ACC | ||
blimp_animate_subject_passive | ✓ | 1000 | ACC | ||
blimp_animate_subject_trans | ✓ | 1000 | ACC | ||
blimp_causative | ✓ | 1000 | ACC | ||
blimp_complex_NP_island | ✓ | 1000 | ACC | ||
blimp_coordinate_structure_constraint_complex_left_branch | ✓ | 1000 | ACC | ||
blimp_coordinate_structure_constraint_object_extraction | ✓ | 1000 | ACC | ||
blimp_determiner_noun_agreement_1 | ✓ | 1000 | ACC | ||
blimp_determiner_noun_agreement_2 | ✓ | 1000 | ACC | ||
blimp_determiner_noun_agreement_irregular_1 | ✓ | 1000 | ACC | ||
blimp_determiner_noun_agreement_irregular_2 | ✓ | 1000 | ACC | ||
blimp_determiner_noun_agreement_with_adj_2 | ✓ | 1000 | ACC | ||
blimp_determiner_noun_agreement_with_adj_irregular_1 | ✓ | 1000 | ACC | ||
blimp_determiner_noun_agreement_with_adj_irregular_2 | ✓ | 1000 | ACC | ||
blimp_determiner_noun_agreement_with_adjective_1 | ✓ | 1000 | ACC | ||
blimp_distractor_agreement_relational_noun | ✓ | 1000 | ACC | ||
blimp_distractor_agreement_relative_clause | ✓ | 1000 | ACC | ||
blimp_drop_argument | ✓ | 1000 | ACC | ||
blimp_ellipsis_n_bar_1 | ✓ | 1000 | ACC | ||
blimp_ellipsis_n_bar_2 | ✓ | 1000 | ACC | ||
blimp_existential_there_object_raising | ✓ | 1000 | ACC | ||
blimp_existential_there_quantifiers_1 | ✓ | 1000 | ACC | ||
blimp_existential_there_quantifiers_2 | ✓ | 1000 | ACC | ||
blimp_existential_there_subject_raising | ✓ | 1000 | ACC | ||
blimp_expletive_it_object_raise | ✓ | 1000 | ACC | ||
blimp_inchoative | ✓ | 1000 | ACC | ||
blimp_intransitive | ✓ | 1000 | ACC | ||
blimp_irregular_past_participle_adjectives | ✓ | 1000 | ACC | ||
blimp_irregular_past_participle_verbs | ✓ | 1000 | ACC | ||
blimp_irregular_plural_subject_verb_agreement_1 | ✓ | 1000 | ACC | ||
blimp_irregular_plural_subject_verb_agreement_2 | ✓ | 1000 | ACC | ||
blimp_left_branch_island_echo_question | ✓ | 1000 | ACC | ||
blimp_left_branch_island_simple_question | ✓ | 1000 | ACC | ||
blimp_matrix_question_npi_licensor_present | ✓ | 1000 | ACC | ||
blimp_npi_present_1 | ✓ | 1000 | ACC | ||
blimp_npi_present_2 | ✓ | 1000 | ACC | ||
blimp_only_npi_licensor_present | ✓ | 1000 | ACC | ||
blimp_only_npi_scope | ✓ | 1000 | ACC | ||
blimp_passive_1 | ✓ | 1000 | ACC | ||
blimp_passive_2 | ✓ | 1000 | ACC | ||
blimp_principle_A_c_command | ✓ | 1000 | ACC | ||
blimp_principle_A_case_1 | ✓ | 1000 | ACC | ||
blimp_principle_A_case_2 | ✓ | 1000 | ACC | ||
blimp_principle_A_domain_1 | ✓ | 1000 | ACC | ||
blimp_principle_A_domain_2 | ✓ | 1000 | ACC | ||
blimp_principle_A_domain_3 | ✓ | 1000 | ACC | ||
blimp_principle_A_reconstruction | ✓ | 1000 | ACC | ||
blimp_regular_plural_subject_verb_agreement_1 | ✓ | 1000 | ACC | ||
blimp_regular_plural_subject_verb_agreement_2 | ✓ | 1000 | ACC | ||
blimp_sentential_negation_npi_licensor_present | ✓ | 1000 | ACC | ||
blimp_sentential_negation_npi_scope | ✓ | 1000 | ACC | ||
blimp_sentential_subject_island | ✓ | 1000 | ACC | ||
blimp_superlative_quantifiers_1 | ✓ | 1000 | ACC | ||
blimp_superlative_quantifiers_2 | ✓ | 1000 | ACC | ||
blimp_tough_vs_raising_1 | ✓ | 1000 | ACC | ||
blimp_tough_vs_raising_2 | ✓ | 1000 | ACC | ||
blimp_transitive | ✓ | 1000 | ACC | ||
blimp_wh_island | ✓ | 1000 | ACC | ||
blimp_wh_questions_object_gap | ✓ | 1000 | ACC | ||
blimp_wh_questions_subject_gap | ✓ | 1000 | ACC | ||
blimp_wh_questions_subject_gap_long_distance | ✓ | 1000 | ACC | ||
blimp_wh_vs_that_no_gap | ✓ | 1000 | ACC | ||
blimp_wh_vs_that_no_gap_long_distance | ✓ | 1000 | ACC | ||
blimp_wh_vs_that_with_gap | ✓ | 1000 | ACC | ||
blimp_wh_vs_that_with_gap_long_distance | ✓ | 1000 | ACC |
用法
评估任务
可以使用--model_args
标志向模型构造函数提供其他参数。最重要的是,该gpt2
模型可用于加载任意 HuggingFace 模型,如下所示:
python main.py \
--model gpt2 \
--model_args pretrained=EleutherAI/gpt-neo-1.3B \
--device cuda:0 \
--tasks lambada,hellaswag \
--num_fewshot 2
要检查 LM 输入的样子,您可以运行以下命令:
python write_out.py \
--tasks all_tasks \
--num_fewshot 5 \
--num_examples 10 \
--output_base_path /path/to/output/folder
这将为每个任务写出一个文本文件。
代码结构
该库有两个主要组件:
- LMs(语言模型),例如 GPT-2、GPT-3
- 任务,例如 MNLI、RTE、SQuAD(即将推出)
LMs ( lm_eval.models
) 和 Tasks ( lm_eval.tasks
) 都保存在注册表数据结构中,以便于 CLI 实例化。
如果您想扩展模型或任务,只需添加一个新的 LM 或 Task 子类,并使用注册表装饰器进行装饰。
GPT-3 评估项目跟踪我们实施新任务的进度。现在,我们专注于加载所有数据集,以便我们可以对训练数据进行重复数据删除。实施实际评估很好,但目前没有必要。
任务版本控制
为了帮助提高可重复性,所有任务都有一个 VERSION 字段。从命令行运行时,这会在表中的列中报告,或者在评估器返回字典的“版本”字段中报告。该版本的目的是,如果任务定义发生变化(即修复错误),那么我们可以准确地知道哪些指标是使用旧的错误实现计算的,以避免不公平的比较。为了强制执行这一点,有一些单元测试可以确保所有测试的行为与首次实施时保持一致。任务版本从 0 开始,每次进行重大更改时,版本都会增加 1。
报告评估工具结果时,请同时报告每个任务的版本。这可以通过表格中的单独列来完成,也可以通过报告任务名称并附加版本来完成:taskname-v0。
描述
1. LM 评估
给定一个 LM,我们希望在广泛的 NLU 任务上对其进行评估。我们至少应该涵盖 GPT-3 论文中的一组任务,以及任何其他相关的任务/基准。我们将遵循 GPT-3 格式的 a) 零样本,b) 单样本,c) 少样本评估。
为此,我们需要 3 个组件:
- 数据下载器(与后面的部分共享,可能需要直接链接到后两个组件)
- 任务格式化程序
- 任务评估器
数据下载器应下载相关任务的数据。
- 为此,我们应该严重依赖 Hugging Face 的 NLP。他们已经在处理数据脚本/缓存方面完成了大部分工作。
- 或者,我们可以直接依赖 HF-NLP 的缓存,但这使得处理非 HF-NLP 数据集变得很尴尬。否则,我们可以将它们写到 .jsonl 中。我的感觉是,NLU 数据存储与 LM 数据相比将是杯水车薪。
- 在我们不使用 HF-NLP 的地方,我们可以将数据保留为原始格式(.jsonl、tsv 等),并让其他组件处理它的转换。
任务格式化程序将任务输入数据格式化为 LM 可用格式。
- 对于给定的任务,我们应该潜在地支持多种格式,例如,某些格式可能更好或更适合 LM 评估。另请参阅:即时工程
- 任务格式化程序还应该支持将训练示例零/一次/几次打包到输入中。这可能需要与标记器进行奇怪的交互来处理最大标记问题。
任务评估员对任务进行评分。
- 从本质上讲,我们希望为所有输入示例生成输出预测,并将它们输入到一些弹出分数(或分数)的函数中。另一种方法是收集输出 logits 并根据预期的输出集对它们进行评分。
- 有些任务有奇怪的评估方案,所以我们应该尽可能地通用。
- 因此可能必须与格式化程序密切相关。
- 同样,我们应该利用 HF-NLP 的指标。我们不妨为模型提供足够通用的 API 来支持 OpenAI API。这可以加倍努力重现 OpenAI NLU 结果。
2.从LM训练集中去除val/test数据
有了数据下载器,我们只需要 (1) 公开验证/测试示例,(2) 从训练集中删除它们。
- 可以说,(2) 应该由 LM 预处理以更一般的方式处理。可能存在我们想要从训练中删除一些特定数据的非 NLU 评估案例。
- 根据我们如何准确地执行 val/test 删除,我们可能希望以多种方式格式化相同的示例,以确保它们不会以稍微调整的格式泄漏到训练集中。
- 思想实验:SQuAD 主要基于维基百科。我们到底想从 LM 中删除什么?
- [GPT-3]:在 GPT-3 中,他们试图从他们的 LM 集合中删除 val/test,但有一个导致泄漏的错误。所以他们最终做了相反的事情:从 val/test 中删除 LM 集中的重叠。时髦。
- [GPT-3]:详见第 30 页和附录 C。他们做了一些基于 n-gram 的时髦搜索和删除。我们应该考虑是否要完全遵循他们的协议
3. 将任务训练数据加入LM训练集
这部分是最简单的。我想我们只是写出一些包含训练数据的文本文件?我们可以让通常的 LM 预处理管道从那里处理它。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。