size30(30寸是多少寸)

比特来自奥菲斯量子比特报告| QbitAI,微信官方账号4月9日,NVIDIA X qubit分享了一个在线nlp课程。来自英伟达的GPU计算专家、Faster

比特来自奥菲斯
量子比特报告| QbitAI,微信官方账号

4月9日,NVIDIA X qubit分享了一个在线nlp课程。来自英伟达的GPU计算专家、FasterTransformer 2.0的开发者之一薛博阳与数百名开发者讨论:

FasterTransformer 2.0 新增功能介绍如何针对Decoder和Decoding进行优化如何使用Decoder和DecodingDecoder和Decoding能够带来什么样的加速效果

应读者要求,我们将整理分享内容,与大家一起学习。文末附有这个现场回放和PPT链接,也可以直接观看。

为此分享整理以下内容:

大家好,今天我们介绍一下FasterTransformer 2.0的原理和应用。

什么是FasterTransformer?

首先,参与本次直播的朋友应该对《变形金刚》架构有一定的了解。这个架构是在《注意力是你所需要的全部》一文中提出的。BERT编码器中使用了大量的变压器,效果非常好。因此,Transformer已经成为NLP领域非常流行的深度学习网络架构。

但是,变压器的计算量通常很大。因此,变压器的延时往往难以满足实际应用的需要。

size30(30寸是多少寸)

△Attention is All You Need截图△关注就是你需要的全部截图

变压器架构可应用于编码器或解码器。在编码器中,变换器包含一个多头注意和一个前馈网络,在解码器中,它包含两个多头注意和一个前馈网络。

其中,纯编码器架构目前在很多应用中都有不错的表现,如问答系统、广告推荐系统等。因此,有必要对编码器进行优化。

在某些场景中,比如翻译场景,我们需要编码器和解码器架构。在这种架构下,解码器消耗的时间非常高,可能达到90%以上,是推理的主要瓶颈。所以解码器的优化也是一项重要的工作,可以带来明显的加速效果。

在实践中,更快的Transformer版本为BERT中的编码器做了大量的优化和加速。在2.0版本中,主要增加了对解码器的优化,其优越的性能将有助于翻译、对话机器人、文本补全和纠错等多种生成性场景。

size30(30寸是多少寸)

上表比较了编码器和解码器之间的差异。当我们需要对一个句子进行编码和解码时,编码器可以同时对很多单词进行编码,甚至可以直接对一个句子进行编码。

但是解码器是一个解码过程,一次只能解码一个字。所以在解码一句话的时候,我们很多时候需要解码器的转发,这对GPU来说就更不友好了。

size30(30寸是多少寸)

△Faster Transformer框架△更快的变压器框架

上图列出了FasterTransformer中针对BERT优化的模块。在编码上,基于BERT,提供了相当于BERT变换器的单层模块供用户调用。当我们需要一个多层变压器的时候,只需要多次调用Encoder即可。

解码方面更复杂。为了平衡灵活性和效率,我们提供了两种不同尺寸和效果的模块:

解码器(黄色块)由单层变压器层组成,其中包含两个注意和一个前馈网络;而解码(蓝块)除了多层变换层,还包括其他功能,比如embedding_lookup,beam search,position Encoding等等。

size30(30寸是多少寸)

我们用一个简单的伪代码来说明解码器和解码的区别。

在解码中,通常有两个终止条件,一个是是否达到预设的最大序列长度,另一个是是否翻译完了所有的句子,没有终止的时候循环继续。

以一个句子长度为128的句子翻译场景为例。如果它的解码器是由六层的Transformer层组成,那么它需要调用解码器128x6=768次。如果使用解码,只需要调用解码一次,所以解码的推理效率更高。

总结

size30(30寸是多少寸)

首先,FasterTransformer提供了高度优化的变换层:编码器基于BERT实现;解码器方面,以基于OpenNMT-TensorFlow的开源库为标准;解码包括翻译的全过程,也是基于OpenNMT-TensorFlow。

其次,FasterTransformer 2.0底层采用CUDA和cuBLAS实现,支持FP16和FP32计算模式。目前提供C++ API和TF OP。

现在,FasterTransformer 2.0是开源的,你可以在主英伟达/DeeplearningExamples的deep learning examples/Faster Transformer/V2获得所有源代码。GitHub。

如何进行优化?

以编码器为例。

size30(30寸是多少寸)

△TF Encoder Transformer layer△TF编码器变压器层

参数:无XLA,批量1件,12头,每头64个,FP 32

图中蓝色方块表示GPU实际在运行,白色方块表示GPU空闲,所以GPU空闲的时间很多。GPU闲置的原因是内核太小,GPU要等待CPU启动内核,也就是所谓的内核启动绑定问题。

如何解决这个问题?

size30(30寸是多少寸)

我们尝试打开TF的XLA,其他参数保持不变。在图中我们可以看到,从最初的计算中,第一层Transformer层所需的50个内核的数量减少到了24个左右。大多数内核都变得更宽了,虽然它们已经加速了,但是它们仍然有更多空闲时间。

size30(30寸是多少寸)

因此,我们建议使用快速转换器来优化编码器。

首先我们选取矩阵计算部分,使用NVIDIA高度优化的库cuBLAS进行计算。另一部分,我们尽可能的融合可以融合的核。

最终结果在上图右侧。经过整体优化,我们只需要8个矩阵计算加6个核就可以完成单层变压器层计算,也就是说需要的核从24个减少到14个。

size30(30寸是多少寸)

我们可以看到优化后每个内核都比较大,时间占比小的内核数量也减少了。但是还是有很多空白色的碎片。

size30(30寸是多少寸)

我们直接调用C++ API,如图,GPU空闲时间差不多了。所以在批量较小的情况下,我们建议使用C++ API,速度更快。批量大的时候,GPU的空闲时间会少一些。

接下来,让我们看看解码器。

size30(30寸是多少寸)

参数:无XLA,批量1件,8头,每头64个,FP32

据统计,TF计算layer 1 Transformer层大约需要使用70个内核。直观来看,很小很短时间的内核比较多。因此,当批量较小时,优化效果会更明显。

size30(30寸是多少寸)

解码器的优化与上面提到的编码器相同。特别是解码器的矩阵计算量很小,所以我们用一个内核完成整个多头注意力。优化后,原本需要70个内核才能完成的计算只需要16个内核。

size30(30寸是多少寸)

在较大的解码模块中,另一个占用时间较多的内核是beam search,这里我们针对Top K进行优化,在GPU中可以同时执行多个block和多个warp,并行操作可以大大节省时间。

size30(30寸是多少寸)

△更多优化细节△更多优化细节

如何使用FasterTransformer?你可以在主NVIDIA/DeeplearningExamples/faster transformer/v2的根目录下找到相应的资料:

size30(30寸是多少寸)

size30(30寸是多少寸)

size30(30寸是多少寸)

对于解码器和解码,FasterTransformer分别提供了C++和TensorFlow OP接口。

++接口

首先,创建一个Eecoder,超级参数如图所示:

size30(30寸是多少寸)

其次,设置训练好的模型的权重;

设置后直接呼叫前转。

Op接口

首先,我们需要先加载OP。这里以Decoder为例,TF需要使用的库会自动创建。当调用接口时。因此将首先导入文件(在图中标记为红色):

size30(30寸是多少寸)

然后调用解码器,输入输入、权重和超级参数,然后为输出进行会话运行。

这里需要注意的是,参数中有一个虚拟输入。这个输入是为了避免TensorFlow的解码器和更快的Transformer的解码器之间的并行,因为我们发现解码器中的内存在并行执行时可能会被污染。在实际应用中,这种输入可以去掉。

优化效果

最后,让我们看看优化是如何工作的。首先,测试环境设置:

size30(30寸是多少寸)

使用的GPU是英伟达特斯拉T4和V100。

Tesla V100中编码器模块的结果

超级参数设置:12层,32序列长度,12个磁头,每个磁头64个尺寸(BERT base),低于FP 16

size30(30寸是多少寸)

如上图所示,在批量从100逐渐增加到500的过程中,FasterTransformer开启XLA相比TF,可以提供快1.4倍左右的速度。

特斯拉T4解码器和解码模块的结果

超级参数设置:批量1,束宽4,8头,64头,6层,词汇大小30000,FP 32

size30(30寸是多少寸)

如上图所示,在不同序列长度下,与TF相比,FasterTransformer解码器可以带来3.4倍左右的加速,解码可以带来7-8倍左右的加速,效率更高。

超级参数设置:批量256,序列长度32,束宽4,8头,64头,6层,字数30000

size30(30寸是多少寸)

如上图所示,当批量大小固定在较高值时,FasterTransformer解码器和解码在不同FPs下也带来了一定的加速效果。

最后,这个直播的PPT得到连接:“链接”

本次现场回放:NVIDIA网络研讨会

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/31140.html

发表回复

登录后才能评论