欧洲杯买球官网-欧洲杯买球网站

新闻资讯
首页 > 新闻中心

欧洲杯买球官网-NVIDIA BERT 推理解决方案 Faster Transformer 开源了

2021-05-09
本文摘要:欧洲杯买球官网,欧洲杯买球网站,文中将详细介绍NVIDIAGPU计算专家团对于Transformer逻辑推理明确提出的性能改进方案:FasterTransformer。FasterTransformer是一个BERTTransformer单面前向计算的高效率完成,其编码简单明了,事后能够根据简易改动适用多种多样Transformer构造。

模型

NVIDIABERT逻辑推理解决方法FasterTransformer开源系统了FasterTransformer是一个根据CUDA和cuBLAS的TransformerEncoder前向计算完成,其优异的性能将助推于多种多样BERT的应用领域。2017年12月Google在毕业论文“AttentionisAllYouNeed”[1]中初次明确提出了Transformer,将其做为一种通用性高效率的特点提取器。

迄今,Transformer早已被多种多样NLP模型选用,例如BERT[2]及其上个月公布再刷其纪录的XLNet[3],这种模型在多种NLP每日任务上都有主要表现。在NLP以外,TTS,ASR等行业也在逐渐选用Transformer。能够预料,Transformer这一简约合理的网络架构会像CNN和RNN一样被普遍选用。

尽管Transformer在多种多样情景下都是有出色的主要表现,可是在逻辑推理布署环节,其计算性能却遭受了极大的挑戰:以BERT为原形的双层Transformer模型,其性能经常无法达到线上业务流程针对低延迟时间确保服务水平和高吞吐考虑到成本费的规定。以BERT-BASE为例子,超出90%的计算時间耗费在12层Transformer的前向计算上。

因而,一个高效率的Transformer前向计算计划方案,既能够为线上业务流程产生降低成本的功效,也有益于以Transformer构造为关键的各种互联网在大量具体工业生产情景中落地式。文中将详细介绍NVIDIAGPU计算专家团对于Transformer逻辑推理明确提出的性能改进方案:FasterTransformer。FasterTransformer是一个BERTTransformer单面前向计算的高效率完成,其编码简单明了,事后能够根据简易改动适用多种多样Transformer构造。

现阶段提升集中化在伺服电机encoder的前向计算视频解码器decoder开发设计在事后特点整体规划中。最底层由CUDA和cuBLAS完成,适用FP16和FP32二种计算方式,在其中FP16能够灵活运用Volta和Turing构架GPU上的TensorCore计算模块。FasterTransformer共接受4个键入主要参数。

最先是attentionhead的总数及其每一个head的层面。这两个主要参数是决策Transformer网络架构的重要主要参数。

这两个主要参数的动态性传到,能够确保FasterTransformer既适用规范的BERT-BASE12headx64维,也适用剪裁过的模型比如,4headx32维,或是别的各式各样专业订制化的模型。其他2个主要参数是BatchSize和语句较大长短。出自于性能考虑到,现阶段语句较大长短固定不动为最常见的32,64和128三种,将来会适用随意长短。

FasterTransformer对外开放出示C API,TensorFlowOP插口,及其TensorRT[4]软件,并出示了相对的实例,用于适用客户将其集成化到不一样的网上运用编码中。FasterTransformer现阶段早已开源系统,能够浏览https://github.com/NVIDIA/DeepLearningExamples/tree/master/FasterTransformer获得新项目所有源码,全新的性能数据信息及其适用的特点。热烈欢迎大伙儿前去应用,加星和意见反馈。性能数据信息FasterTransformer在不一样的应用领域下都拥有突显的主要表现。

大家在这儿检测了不一样工作环境下FasterTransformer前向计算的实行時间及其与TensorFlowXLA的性能较为。接口测试如表1所显示:表1.性能数据处理自然环境本地服务器:IntelRXeonRGold6132CPU2.60GHzTuringT4[5]mclk5000MHz,pclk1590MHzVoltaV100[6]mclk877MHz,pclk1380MHzPascalP4[7]mclk2999MHz,pclk1531MHz最先对于网上QPS较低的业务流程比如话题讨论,大家将batchsize设定为1,检测了BERT规范模型在不一样的语句长短下,12层Transformer在P4和T4上的性能。

因为这类情景下TensorFlow的性能十分取决于CPU,因而这儿未予列举。表2.小batchsize状况下FasterTransformer的性能batchsize=1,numberofheads=12,sizeperhead=64,12layers,...2然后大家来观察FasterTransformer在检索或是广告宣传强烈推荐等大batchsize情景下的加快实际效果。表3和表四分别检测了固定不动语句长短为32,规范模型12headx64维和剪裁模型4headx32维在不一样batchsize下,12层Transformer在V100上应用了FP16计算精密度的性能。表3.规范模型不一样BatchSize下TensorFlowXLA和FasterTransformer在V100上的性能比照Sequencelength=32,numberofheads=12,sizeperhead=64,12layersBatchsizeTensorFlowXLAmsFasterTransformerms.....5x表4.剪裁模型不一样BatchSize下TensorFlowXLA和FasterTransformer在V100上的性能比照Sequencelength=32,numberofheads=4,sizeperhead=32,12layersBatchsizeTensorFlowXLAmsFasterTransformerms.....9x能够看得出,在规范模型和剪裁模型上,FasterTransformer都是有非常好的加快实际效果。

操作方法FasterTransformer出示了TensorFlowOP,C API和TensorRTPlugin三种插口。在TensorFlow中应用FasterTransformer在TensorFlow中应用FasterTransformer更为简易。只必须先import.so文件,随后在代码段中加上对FasterTransformerOP的启用就可以。

实际编码以下所显示。importoptransformer_op_module=tf.load_op_library'../../build/lib/libtf_transformer.so'...deffast_transformer_model_trans......originalcode...layer_output=layer_normlayer_output attention_outputcallingfastertransformeroptrainable_vars=tf.get_collection,scope=tf.get_variable_scope.namelayer_output=transformer_op_module.bert_transformerlayer_input,layer_input,trainable_vars[0],trainable_vars[2],trainable_vars[4],trainable_vars[1],trainable_vars[3],trainable_vars[5],attention_mask,trainable_vars[6],trainable_vars[7],trainable_vars[8],trainable_vars[9],trainable_vars[10],trainable_vars[11],trainable_vars[12],trainable_vars[13],trainable_vars[14],trainable_vars[15],batch_size=batch_size,from_seq_len=seq_length,to_seq_len=seq_length,head_num=num_attention_heads,size_per_head=attention_head_sizeoriginalcode...all_layer_outputs.appendlayer_output...应用C API或是TensorRT启用FasterTransformer充分考虑封裝成TensorFlowOP会引进一些附加的花销,大家更提议客户立即应用C API或是TensorRTPlugin的方法去集成化。现阶段这二种方法不兼容立即分析训炼好的模型。Transformer层所必须的weights主要参数,必须客户手动式从训炼好的模型中导出来。

启用方法相对性简易,将导出来的weights取值给主要参数建筑结构,建立相对的目标,启用initialize或是build_engine函数复位目标。运作时,每一次启用forward或是do_inference就可以。

实际编码以下所显示。/*C interface*/typedefBertEncoderTransformerTraitsEncoderTraits_;fastertransformer::Allocatorallocator0;EncoderInitParamencoder_param;//initparamhereencoder_param.from_tensor=d_from_tensor;...BertEncoderTransformer*encoder_transformer_=newBertEncoderTransformerallocator,batch_size,from_seq_len,to_seq_len,head_num,size_per_head;encoder_transformer_->initializeencoder_param;encoder_transformer_->forward;/*TensorRTPlugin*/std::vectorparams;/*pushallweightpointersintothevectorparams*/TRT_Transformer*trt_transformer=newTRT_Transformerbatch_size,seq_len,head_num,hidden_dim,layers;trt_transformer->build_engineparams;trt_transformer->do_inferencebatch_size,h_from_tensor,h_attr_mask,h_transformer_out,stream;提升基本原理在深入了解FasterTransformer的提升基本原理以前,大家先看来下TensorFlow的完成状况。

图1是TensorFlow在默认设置计算方式不应用XLA优化下的时间轴精彩片段。图1.TensorFlow计算GELU的时间轴在其中,淡黄色矩形中相匹配的是激活函数GELU。

模型

能够见到,在TensorFlow中,这一涵数是根据八个相近Pow,Add,和Tanh等基本上OP来完成的。LayerNormalization实际操作也是相近的状况图2。

图2.TensorFlow计算LayerNormalization的时间轴在TensorFlow中,每一个基本上OP都是会相匹配一次GPUkernel的启用,和数次显卡内存读写能力,这种都是会提升很多附加的花销。TensorFlowXLA能够在一定水平上减轻这个问题,它会对一些基本上的OP开展合拼,以降低GPUkernel的生产调度和显卡内存读写能力。但在大部分状况下,XLA仍然没法做到最优化的性能,尤其是针对BERT这类计算聚集的状况,一切性能的提高都将节约大量的计算資源。

如大家前边提及的,OP结合能够减少GPU生产调度和显卡内存读写能力,从而提高性能。出自于性能利润最大化的考虑到,在FasterTransformer內部,大家将除矩阵乘法之外的全部kernel都开展了尽量的结合,单面Transformer的计算步骤如下图所显示:图3.BERT中TransformerLayer的计算流程表如图所示3所显示,FasterTransformer仅用了14个kernel就完成了原先接近60个kernel的计算逻辑性。这在其中,八个kernel是根据启用cuBLAS插口计算矩阵乘法翠绿色框,其他6个是自定kernel深蓝色框。

对于batchsize较为小的场景比如话题讨论,TTS等,简易的结合后,大部分就可以做到非常好的性能。这类场景下,TensorFlow原生态完成的较大短板就取决于经常的kernellaunch,结合后大幅度降低了launch的花销,因而能够较为随便地得到非常好的加快实际效果。

对于大batch的场景,大家必须对矩阵乘法和全部的自定kernel做细致的调优,才可以做到非常好的加快实际效果。大家从矩阵乘法优化算法挑选,非矩阵乘法实际操作的参数配置,SoftMax多版本完成,及其算法设计种类等好多个层面对大batch的状况开展了专业的调优。

最先对于矩阵乘法,在启用cuBLAS的插口时,能够特定性能最优化的优化算法。尤其是对于Volta和Turing构架的GPU,应用TensorCore开展半精度计算时,当精度满足需求的状况下,累加器还可以挑选半精度,进而进一步提高性能。

除矩阵乘法之外的6个kernel,绝大多数全是对引流矩阵乘的結果开展一些element-wise的实际操作。键入引流矩阵的尺寸,跟4个主要参数相关,batchsize,语句长短,attention的head总数及其每一个head的层面。

对于不一样的运用场景,主要参数尺寸很有可能极其不一样。例如在线咨询类的场景,batchsize很有可能为会不大,一般为1。

而广告宣传强烈推荐或是检索类的场景,batchsize一般跟备选集尺寸相关,一般会是好几百的经营规模。那样,键入引流矩阵的个数转变 范畴可能是几十到过千。因而,大家必须对于不一样的状况,动态性的调节kernellaunch时的配备主要参数grid和block的尺寸,乃至要对于同一个作用完成好几个不一样版本的kernel涵数,比如,SoftMax的计算就会有2个不一样的完成版本。

对于半精度FP16,大家对每个kernel也开展了相对提升。最先,在kernel的完成中,将键入的half表针转成half2种类,并应用了half2有关的数学函数。

那样不仅能够做到2倍于half的访存网络带宽和计算吞吐,还能够巨大地降低命令的发送总数。次之,在SoftMax及其LayerNormalization的实际操作中,为避免求饶外溢,将数据信息以half2的方式读取后,会转为float2种类,来做求饶计算。除以上提升以外,FasterTransformer还提升了前向计算中用时较高的GELU激活函数,LayerNormalization及其SoftMax等实际操作。例如运用warpshuffle完成高效率的引流矩阵按行求饶实际操作,将1/sqrtf计算更换为rsqrtf涵数,及其powerx,3.0更换为x*x*x等。

总而言之,大家对于Transformer开展了各种各样提升以确保它的高效执行。结果FasterTransformer是一个开源系统的高效率Transformer完成,对比TensorFlowXLA能够产生1.5-2x的加速。FasterTransformer对外开放出示C API,TensorFlowOP,及其TensorRTPlugin三种插口。

对每个插口的启用方法,大家出示了详细的实例,便捷客户集成化。FasterTransformer现阶段早已开源系统,能够浏览https://github.com/NVIDIA/DeepLearningExamples/tree/master/FasterTransformer获得新项目所有源码,全新的性能数据信息及其适用的特点。热烈欢迎大伙儿前去应用,加星和意见反馈。

[1]Vaswani,Ashish,NoamShazeer,NikiParmar,JakobUszkoreit,LlionJones,AidanN.Gomez,LukaszKaiser,andIlliaPolosukhin.“AttentionIsAllYouNeed.”ArXiv:1706.03762[Cs],June12,2017./1706.03762.[2]Devlin,Jacob,Ming-WeiChang,KentonLee,andKristinaToutanova.“BERT:Pre-TrainingofDeepBidirectionalTransformersforLanguageUnderstanding.”ArXiv:1810.04805[Cs],October10,2018./1810.04805.[3]Yang,Zhilin,ZihangDai,YimingYang,JaimeCarbonell,RuslanSalakhutdinov,andQuocV.Le.“XLNet:GeneralizedAutoregressivePretrainingforLanguageUnderstanding.”ArXiv:1906.08237[Cs],June19,2019./1906.08237.[4]TensorRT:[5]TuringT4gPU,moreinformation:-us/data-center/tesla-t4/[6]VoltaV100GPU,moreinformation:-us/data-center/tesla-v100/[7]PascalP4gPU,moreinformation:-us/deep-learning-ai/solutions/inference-platform/hpc/文中创作者:NVIDIAGPU计算专家团,贾晓莹有关NVIDIANVIDIANasdaq股票号:NVDA在1999年创造发明的GPU激起了PC游戏销售市场的提高,彻底改变了当代计算机独立显卡,而且对并行处理计算开展了创新。近期,根据将GPU做为能够认知和了解全球的计算机、智能机器人甚至无人驾驶车辆的人的大脑,GPU深度神经网络再一次引燃了全新升级的计算时期——当代人工智能技术。其他信息,请浏览。


本文关键词:启用,主要参数,欧洲杯买球网站,矩阵乘法

本文来源:欧洲杯买球官网-www.zannahmerricks.com



上一篇:LibrePCB升级闪光点-欧洲杯买球网站
下一篇:金山毒霸、360公司回应“浏览器主页劫持”:加强行业自律:欧洲杯买球官网