Decorative image frame

lowinli’s blog

from drop to ocean

lowinli’s blog

bigbird长文本预训练模型介绍

前言

基于Transformer的模型已经被证明了在许多NLP任务中的价值,但这类模型的时间复杂度、内存使用复杂度都是n2n^2(n为序列长度),因此当序列长度超过常规的512时,模型对算力的要求将会大幅提高。最近的一些文章Longformer, Performer, Reformer, Clustered attention都试图通过近似全主力机制改善该问题。例如这个帖子就是介绍这些模型的。
BigBird论文是处理这类问题最新模型的其中之一,它使用block sparse attention替换了原类似Bert一样的全注意力机制,在与BERT一样的计算力情况下,可以处理的序列长度达到4096。它已经在很多长文本序列的任务上达到SOTA效果,例如长文本摘要、长文本问答。
BigBird RoBERTa模型现在已经可以在Transformers仓库中使用。这篇博客的目的是为了让读者深入理解big bird的运行机制,快速使用Transformers仓库上手BigBird模型。但在开始之前,我们需要知道,BigBird的注意力机制是一个近似BERT的全注意力机制,因此它不是说比BERT的注意力机制效果更好,而是运行效率更高。BERT的注意力机制的存储与序列长度是二次方关系,在长文本情况下的存储需求就已经开始令人难以忍受,而BigBirdblock sparse attention就是为了解决这个问题。也就是说,在\infty长度序列上,计算& \&\ \infty次时,我们应该把BERT的全注意力机制换成block sparse attention
如果你想知道,为什么在计算长序列时,我们需要更多的算力,这篇博客正好适合你。

阅读全文...

Transformers仓库做语言生成的解码方法介绍

简介

最近几年,以OpenAI公司的GPT3为代表,基于transformer结构的大模型都已经开始在上百万级别的网页上面训练。因此大家对开放领域语言生成的期待值也越来越高。开放领域的条件语言生成效果也日新月异,例如GPT2XLNetCTRL。除了transformers结构和海量的无监督预训练数据,更好的解码方法也在其中扮演了重要角色。

这篇博客简要回顾了多种解码策略,帮助你用transformers库实现他们。

阅读全文...

谁说torchtext不能做多标签任务

背景

最近刷到一篇博客,吐槽torchtext不能做多标签任务,特来为torchtext鸣不平,看好,我要用torchtext做多标签任务了。

简要

  • 解读
    • torchtext库,做多标签任务
  • 实践
  • 运行
    • githubaction中,完成全程训练、批测,结果报告通过cml工具发送至commit评论

阅读全文...

Transformers仓库解读之序

Transformers仓库是HuggingFace公司开源的非常火的预训练模型仓库,它把预训练模型处理的流程抽象包装成了高级的api接口,非常适合掉包侠快速使用。但如果是新手第一次分析源码,拆开一步步的功能的话,是有一定学习成本的。而且仓库源码太多,涉及到方方面面的细节,一时间难以抓住重点。


介于此,作为掉包侠的我,尝试将仓库各个模块从类的角度拆分,结合实操代码,系统分析每个模块基本功能。

阅读全文...

python服务镜像编译so

为什么要编译so

  • 源码安全:
    1. 当服务部署后,别人很容易进入docker容器内部,对你的py脚本一览无余。
    2. 即使py脚本编译pyc再部署,也是可以很轻易反编译的。但是若编译成so文件,反编译成本就非常高了。

什么是so文件

Unix系統下的动态库文件

阅读全文...