Reformer: The Efficient Transformer

一、背景介绍

   Transformer结构被广泛应用与自然语言处理中,并且在许多任务上都产生了当前最好的效果。为了达到进一步的效果,研究人员已经开始训练更大的Transformer模型。在某些报告的最大配置中,每层参数的数量超过了5亿(0.5B),而层的数量增加到了64层。Transformer模型也用于越来越长的序列中,在一个单独处理的样本中,序列的长度能达到11k,也就是包含11000个tokens每个序列,甚至还有更长的序列存在。这种大规模的长序列模型,虽然产生了较好的效果,但由于资源的限制,使得这一趋势正在打破NLP的研究发展。许多大型Transformer模型只能在大型工业研究实验室中进行实际训练,而这些并行训练的模型甚至不能在单个GPU上进行微调,因为它每训练一步,都需要多个加速器的硬件资源。

  这些大规模的Transformer模型真的需要这么多资源,还是因为不高效导致的呢?参考一下下面的i计算:单层的参数在5亿个,需要内存约2GB;每一层的激活结果,为64K tokens, embedding size是1024,batch size是8,共计64k *1k *8=5亿个floats,又需要2GB的内存。如果只是这种单层的内存需求,我们使用单个加速器就很容易满足一个甚至长到64k的序列上。但是在多层上,内存的消耗就是惊人的:

二、局部敏感哈希Attention

三、可逆Transformer

四、实验分析

五、总结

猜你喜欢

转载自www.cnblogs.com/gczr/p/12275065.html