"妙笔"生花大升级!TextBox 2.0来啦!
导读
全面!灵活!统一!文本生成开源库TextBox推出新版本啦。
什么?你还不知道TextBox是啥?快点击下方链接了解一下吧~
"妙笔"生花:一个易用、高效的文本生成开源库
随着预训练语言模型的快速发展,文本生成领域涌现出越来越丰富的模型和任务。TextBox 2.0 在原有版本的基础上,致力于构建一个统一、灵活、标准化的框架。为了更好地支持基于预训练语言模型的文本生成,我们构建了统一的端到端训练评测框架,数据加载、模型训练、结果评测分析一站式配齐。话不多说,一起来看看TextBox 2.0 中的更新亮点吧!
47种预训练语言模型/模块:涵盖通用文本生成、翻译、可控、对话、轻量化、提示、中文模型等各种类别。 13种文本生成任务:包括翻译、对话、问答、摘要、故事生成、风格迁移等各类生成任务。 83种数据集:包含统一处理后的各类文本生成任务中广泛使用的数据集,并提供了各个数据集的详细介绍。 17种评测指标:涵盖所有主流的评测方式,支持个性化选择和设置。 用户友好的pipeline:统一标准化的训练评测pipeline,简单设置,一键运行。 高效的训练策略:支持4种预训练目标和4种高效稳健的训练策略。
论文地址:https://arxiv.org/abs/2212.13005
项目Github地址:https://github.com/RUCAIBox/TextBox#2.0
核心设计
端到端统一的训练评测pipeline
TextBox 2.0 致力于构建一个统一、灵活、标准化的框架,支持基于预训练语言模型的文本生成。作为一个统一的框架,我们设计了支持从数据装载、模型训练到结果评测分析整个训练流程的pipeline,只需一个简短的命令行设置即可实现端到端的训练和评测。我们提供了详细的参数设置说明,方便用户根据自己的需求设置相应的参数。更多的设置细节,请移步下方链接:https://github.com/RUCAIBox/TextBox
全面丰富的生成任务、预训练模型和评测指标
TextBox支持全面丰富的文本生成任务,从常见的翻译、对话、问答、摘要到文本风格迁移、故事生成以及中文文本生成共13种,可以满足用户各类需求。针对各类文本生成任务,我们共收集了广泛使用的83个数据集,并进行了text-to-text的标准化处理。对于每个数据集,我们提供了详细的介绍、样例、leaderboard等信息方便用户快速了解和使用。
Task Category | Dataset Name |
---|---|
Text summarization | CNN/Daily Mail, XSum, SAMSum, WLE, Newsroom, WikiHow, MicroSoft News, MediaSum, English Gigaword |
Machine Translation | WMT14 English-French, WMT16 Romanian-English, WMT16 German-English, WMT19 Czech-English, WMT13 Spanish-English, WMT19 Chinese-English, WMT19 Russian-English |
Open-ended dialogue system | PersonaChat, DailyDialog, DSTC7-AVSD, SGD, Topical-Chat, Wizard of Wikipedia, Movie Dialog, Cleaned OpenSubtitles Dialogs, Empathetic Dialogues, Curiosity, CMU Document Grounded Conversations, MuTual, OpenDialKG, and DREAM |
Data-to-text generation | WebNLG v2.1, WebNLG v3.0, WikiBio, E2E, DART, ToTTo, ENT-DESC, AGENDA, GenWiki, TEKGEN, LogicNLG, WikiTableT, WEATHERGOV |
Question generation | SQuAD, CoQA, NewsQA, HotpotQA, MS MARCO, MSQG, NarrativeQA, QuAC |
Story generation | ROCStories, WritingPrompts, Hippocorpus, WikiPlots, ChangeMyView |
Question answering | SQuAD, CoQA, Natural Questions, TriviaQA, WebQuestions, NarrativeQA, MS MARCO, NewsQA, HotpotQA, MSQG, QuAC |
Task-oriented dialogue system | MultiWOZ 2.0, MetaLWOZ, KVRET, WOZ, CamRest676, Frames, TaskMaster, Schema-Guided, MSR-E2E |
Chinese generation | LCSTS, CSL, ADGEN |
Commonsense generation | CommonGen |
Paraphrase generation | Quora ParaNMT-small |
Text style transfer | GYAFC-E&M F&R |
Text simplification | WikiAuto + Turk/ASSET |
TextBox 2.0 集成了六大类的47种预训练语言模型或模块,包括通用文本生成、机器翻译、可控、prompt、中文模型等类别,以及轻量化模块如Adapter、Prefix-tuning等,涵盖各个方向的最新模型和方法,方便用户复现和分析比较传统的和最新的模型。除此以外,用户还可以通过简单定义模型,在已有模型的基础上开发新的文本生成模型,满足用户个性化需求。
Category | Model Name |
---|---|
CLM | OpenAI-GPT, GPT2, GPT_Neo, OPT |
Seq2Seq | BART, T5, UniLM, MASS, Pegasus, ProphetNet, MVP, BERT2BERT, BigBird-Pegasus, LED, LongT5, Pegasus_X |
Multilingual Models | mBART, mT5, Marian, M2M_100, NLLB, XLM, XLM-RoBERTa, XLM-ProphetNet |
Chinese Models | CPM, CPT, Chinese-BART, Chinese-GPT2, Chinese-T5, Chinese-Pegasus |
Dialogue Models | Blenderbot, Blenderbot-Small, DialoGPT |
Conditional Models | CTRL, PPLM |
Distilled Models | DistilGPT2, DistilBART |
Prompting Models | PTG, Context-Tuning |
Lightweight Modules | Adapter, Prefix-tuning, Prompt-tuning, LoRA, BitFit, P-Tuning v2 |
Non-Pretraining Models | Transformer,RNN |
快速上手
1. 安装
git clone https://github.com/RUCAIBox/TextBox.git && cd TextBox
bash install.sh
2. 一键运行
我们在Github提供了一键运行的脚本,可以通过以下命令指定模型和数据集一键运行:
python run_textbox.py --model=<model-name> --dataset=<dataset-name> --model_path=<hf-or-local-path>
例如,下面这个命令可以实现在samsum数据集上进行facebook/BART-base模型的fine-tuning和测试。
python run_textbox.py --model=BART --dataset=samsum --model_path=facebook/bart-base
在TextBox 2.0中我们提供了模型和数据集的列表以及各个模型使用的instruction方便用户参考。
其他训练评测相关的参数,我们也提供了详细的介绍,我们提供yaml、config files和命令行三种设置方式。更多细节,请移步项目主页:https://github.com/RUCAIBox/TextBox/tree/2.0.0。
使用场景
说了这么多,TextBox有哪些使用场景呢?让我们一起来看看吧~
复现现有模型
TextBox 2.0 包含全面丰富的预训练模型和文本生成数据集,方便用户快速复现现有模型在各个数据集的实验结果。只需在命令行中设置好dataset, model和model_path,就可以一键复现啦。
python run_textbox.py --dataset=xsum --model=pegasus --model_path=google/pegasus-xsum
我们还提供了超参数调优的脚本run_hyper.py。通过在hyper.test中指定超参数及搜索范围,就可以根据在验证集上的结果返回最优的超参数组合。
# hyper.test
learning_rate loguniform (-8, 0)
embedding_size choice [64, 96 , 128]
train_batch_size choice [512, 1024, 2048]
# command line instruction
python run_hyper.py --space=hyper.test --algo='exhaustive' --model_path=facebook/bart-base --metrics=\[\'rouge\'\] --metrics_for_best_model=\[\'ROUGE-1\'\]
另外我们还提供了run_multi_seed.py脚本用于多个随机种子重复实验。
实现新模型
在TextBox端到端统一的训练评测pipeline支持下,如果你想实现一个新的模型,只需通过继承AbstractModel class简单定义模型而不必关心数据加载、结果评测等其他步骤的实现。
class new_model(AbstractModel):
def __init__(self):
...
self.t5 = T5_MODEL
self.gnn = GNN_MODEL
def forward(self, input, label):
...
embeds = self.gnn(input)
output = self.t5(embeds)
return loss_func(output, label)
def generate(self, input):
...
embeds = self.gnn(embeds)
return self.t5.generate(embeds)
预训练新模型
当然你也可以使用TextBox从头预训练一个新模型,我们支持了4种预训练任务:language modeling, masked sequence-to-sequence modeling, denoising auto-encoding和masked span prediction,只需设置pretrain_task、dataset和model来指定预训练任务、预训练语料库和模型架构就可以轻松开始训练啦。
python run_textbox.py --dataset=wudao --model=bart --pretrain_task=denoising
为了提高预训练效率,我们支持基于accelarete使用多GPU和FP16方法加速模型训练,只需输入简单的命令行即可执行DDP操作。
accelerate config
accelerate launch run_textbox.py --dataset=wudao --model=bart --pretrain_task=denoising
为了进一步加快解码效率,我们集成了 FastSeq,通过注意力缓存优化、重复 n-gram 检测和异步并行 I/O 来优化解码过程,可以使生成速度提高三倍左右。
分析生成结果
除了简单地获取评估结果外,我们的库还提供了多种可视化分析机制来对模型生成的结果进行深度分析。例如,我们可以通过以下命令比较BART 和 T5 在 CNN/DailyMail 数据集上生成的文本。
python run_analysis.py --dataset=cnndm BART_output.txt T5_output.txt
小结
”妙笔“文本生成库将承诺持续开发维护,保持版本稳定,同时不断规划更多实用、强大的功能。我们的团队一直保有着认真负责的工作态度和不怕吃苦的工作精神,为了将TextBox打造为推动文本生成研究发展的强大工具包而努力奋斗。
TextBox的更新迭代离不开社区用户的支持和帮助,我们持续关注着用户的反馈,积极地在GitHub社区中回复issue和discussion,并认真汲取着用户的建议和意见。再次感谢所有向我们提出问题和发展建议的朋友们。
以上就是 TextBox 2.0 的主要更新内容啦!还在等什么呢?马上安装 TextBox 2.0,体验一下全新版本吧!
更多推荐
综述:全新视角回顾基于预训练语言模型的稠密检索
一文速览知识增强的对话推荐系统