微调后的模型,如何在加载进行跟使用预训练模型一样的方式推理
预训练的模型为我们提供了一个强大的语言模型基础,在些基础上,我们进行微调,就可以实现满足特殊需求的模型。
先将代码先拼接在一起。然后写个小脚本,将transformer库中的python文件都读出来连接在一起。
进行训练之前,我们先安装下transformer库,先cd到transformers的下载目录,然后执行,
安装成功之后,可以使用transformers下的examples中的run_lm_finetuning.py脚本来进行fine-tuning,
由于预训练模型(Pretrained Models, PTMs)的蓬勃发展,“预训练(pretrain)+微调(finetune)”成为了AI模型开发领域的标准范式。
预训练的研究最早起源于迁移学习。迁移学习的核心思想,即运用已有的知识来学习新的知识,通俗来说就是将一个预训练的模型被重新用在另一个任务中。
PTM成功的关键是自监督学习和Transformer。
GPT是第一个在Transformer结构上应用自监督学习目标的PTM,它仅使用了Transformer的decoder作为基础结构,由于采用自监督学习,所以删去了cross-attention层。GPT是一个标准的自回归语言模型,它的学习目标,是根据上文预测下一个词,因此也往往更适合自然语言生成任务。
BERT是基于双向 Transformer 结构构建,仅使用了Transformer的encoder结构。这里的双向主要是通过它的预训练目标实现的,BERT设计了一个 masked language modeling (MLM) 预训练任务,根据上下文来预测masked词汇。“双向”即体现在,在进行注意力计算时,BERT会同时考虑被遮蔽词左右的词对其的影响。BERT是一种自编码语言模型,更适合自然语言理解任务。
预训练模型的主要目标是如何利用未标注语料来获取通用知识,以便快速迁移到各种下游任务中。GPT和BERT的预训练任务Autoregressive language modeling和masked language modeling,它们也分别是自回归语言模型和自编码语言模型无法替代的预训练任务,后续的一些PTMs中探索的新的预训练任务均是在此基础上追加的。
对于预训练模型的应用,除了“pretrain+finetune”,逐渐盛行了一种新的范式“pretrain+prompt+predict",致力于重构不同的下游任务,打造大一统的多任务模型。
LightSeq是字节跳动火山翻译团队开源的一款Transformer系列模型加速引擎,分为训练和推理两个部分。其中推理加速引擎早在2019年12月就已经开源,而训练加速引擎也在2021年6月开源。 项目地址: https://github.com/bytedance/lightseq