贪心科技|让每个人享受个性化教育服务NLP框架————————transformersbrucehan2020-06-21贪心科技|让每个人享受个性化教育服务12原理回顾原理回顾3代码解析CONTENTS贪心科技|让每个人享受个性化教育服务XLNET应用讨论&资源汇总finetuneinference源码TransformersPython库Sentencetransformers框架:tf-serving,pythonweb,RPC性能:albert,tiny-bert,蒸馏,C++inference库贪心科技|让每个人享受个性化教育服务框架Fast-bertFARMpyText关系分类NER文本生成各类NLP任务的特征初始化贪心科技|让每个人享受个性化教育服务transformersNLP范式:大型语言模型+迁移学习BERTology预训练需要大量的资源,一般研究者无法承担。以RoBERTa为例,它在160GB文本上利用1024块32GB显存的V100卡训练得到,如果换算成AWS上的云计算资源的话,但这一模型就需要10万美元的开销。很多大机构的预训练模型被分享出来,但没有得到很好的组织和管理。BERTology的各种模型虽然师出同源,但在模型细节和调用接口上还是有不少变种,用起来容易踩坑贪心科技|让每个人享受个性化教育服务BERTologytransformerTransformer-xlBERTAlbertXLNet长距学习,生成模型绝对位置编码Multi-headself-attention相对位置编码双向LM,预训练先驱绝对位置编码2速度飞跃AR&AE相对位置编码相对位置编码段循环段循环参数共享、Embedding分解SOP双流注意力、PLM、局部预测NSP随机Mask贪心科技|让每个人享受个性化教育服务transformersConfiguration配置类。存储模型和分词器的参数,诸如词表大小,隐层维数,dropoutrate等。配置类对深度学习框架是透明的。Tokenizer分词器类。每个模型都有对应的分词器,存储token到index的映射,负责每个模型特定的序列编码解码流程,比如BPE(BytePairEncoding),SentencePiece等等。也可以方便地添加特殊token或者调整词表大小,如CLS、SEP等等。Model模型类。提供一个基类,实现模型的计算图和编码过程,实现前向传播过程,通过一系列self-attention层直到最后一个隐藏状态层。在最后一层基础上,根据不同的应用会再做些封装,比如XXXForSequenceClassification,XXXForMaskedLM这些派生类结构