关于深度学习:地址标准化服务AI深度学习模型推理优化实践
导读深度学习已在面向自然语言解决等畛域的理论业务场景中宽泛落地,对它的推理性能优化成为了部署环节中重要的一环。推理性能的晋升:一方面,能够充分发挥部署硬件的能力,升高用户响应工夫,同时节省成本;另一方面,能够在放弃响应工夫不变的前提下,应用构造更为简单的深度学习模型,进而晋升业务精度指标。 本文针对地址标准化服务中的深度学习模型发展了推理性能优化工作。通过高性能算子、量化、编译优化等优化伎俩,在精度指标不升高的前提下,AI模型的模型端到端推理速度最高可取得了4.11倍的晋升。 1. 模型推理性能优化方法论模型推理性能优化是AI服务部署时的重要环节之一。一方面,它能够晋升模型推理的效率,充沛开释硬件的性能。另一方面,它能够在放弃推理提早不变的前提下,使得业务采纳复杂度更高的模型,进而晋升精度指标。然而,在理论场景中推理性能优化会遇到一些艰难。 1.1 自然语言解决场景优化难点典型的自然语言解决(Natural Language Processing, NLP)工作中,循环神经网络(Recurrent Neural Network, RNN)以及BERT[7](Bidirectional Encoder Representations from Transformers.)是两类使用率较高的模型构造。为了便于实现弹性扩缩容机制和在线服务部署的高性价比,自然语言解决工作通常部署于例如Intel® Xeon®处理器这样的x86 CPU平台。然而,随着业务场景的复杂化,服务的推理计算性能要求越来越高。以上述RNN和BERT模型为例,其在CPU平台上部署的性能挑战如下: RNN循环神经网络是一类以序列(sequence)数据为输出,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络。理论应用中常见的RNN有LSTM,GRU以及衍生的一些变种。在计算过程中,如下图所示,RNN构造中每一次的后级输入都依赖于相应的输出和前级输入。因而,RNN能够实现序列类型的工作,近些年在NLP甚至是计算机视觉畛域被宽泛应用。RNN相较于与BERT而言,计算量更少,模型参数共享,但其计算时序依赖性会导致无奈对序列进行并行计算。 BERTBERT[7]证实了可能以较深的网络结构在大型数据集上实现无监督预训练(Unsupervised Pre-training),进而供应特定工作进行微调(finetune)的模型。它不仅晋升了这些特定工作的精度性能,还简化了训练的流程。BERT的模型构造简略又易于扩大,通过简略地加深、加宽网络,即可取得相较于RNN构造更好的精度。而另一方面,精度晋升是以更大的计算开销为代价的,BERT模型中存在着大量的矩阵乘操作,这对于CPU而言是一种微小的挑战。 1.2 模型推理优化策略基于上述推理性能挑战的剖析,咱们认为从软件栈层面进行模型推理优化,次要有如下策略: 模型压缩:包含量化、稠密、剪枝等特定场景的高性能算子AI编译器优化量化模型量化是指将浮点激活值或权重(通常以32比特浮点数示意)近似为低比特的整数(16比特或8比特),进而在低比特的示意下实现计算的过程。通常而言,模型量化能够压缩模型参数,进而升高模型存储开销;并且通过升高访存和无效利用低比特计算指令(如Intel® Deep Learning Boost Vector Neural Network Instructions,VNNI),获得推理速度的晋升。给定浮点值,咱们能够通过如下公式将其映射为低比特值:其中和是通过量化算法所得。基于此,以Gemm操作为例,假如存在浮点计算流程:咱们能够在低比特域实现相应的计算流程:高性能算子在深度学习框架中,为了放弃通用性,同时兼顾各种流程(如训练),算子的推理开销存在着冗余。而当模型构造确定时,算子的推理流程仅是原始全量流程个一个子集。因而,当模型构造确定的前提下,咱们能够实现高性能推理算子,对原始模型中的通用算子进行替换,进而达到晋升推理速度的目标。在CPU上实现高性能算子的关键在于缩小内存拜访和应用更高效的指令集。在原始算子的计算流程中,一方面存在着大量的两头变量,而这些变量会对内存进行大量的读写操作,进而拖慢推理的速度。针对这种状况,咱们能够批改其计算逻辑,以升高两头变量的开销;另一方面,算子外部的一些计算步骤咱们能够间接调用向量化指令集,对其进行减速,如Intel® Xeon®处理器上的高效的AVX512指令集。AI编译器优化随着深度学习畛域的倒退,模型的构造、部署的硬件呈现出多样化演进的趋势。将模型部署至各硬件平台时,咱们通常会调用各硬件厂商推出的runtime。而在理论业务场景中,这可能会遇到一些挑战,如: 模型构造、算子类型的迭代的速度会高于厂家的runtime,使得一些模型无奈疾速基于厂商的runtime实现部署。此时须要依赖于厂商进行更新,或者利用plugin等机制实现缺失的算子。业务可能蕴含多个模型,这些模型可能由多个深度学习框架训得,此外模型可能须要部署至多个硬件平台。此时须要将这些格局不同的模型转化至各个硬件平台所需的格局,同时要思考各推理框架实现的不同导致的模型精度性能变动等问题,尤其是像量化这类对于数值差别敏感度较高的办法。AI编译器就是为了解决上述问题而提出的,它形象出了多个档次来解决上述的一些问题。首先,它承受各个前端框架的模型计算图作为输出,并通过各类Converter转化生成对立的两头示意。随后,诸如算子交融、循环展开等图优化pass会作用至两头示意,以晋升推理性能。最初,AI编译器会基于优化后的计算图进行面向特定硬件平台的codegen,生成可执行的代码,这过程中会引入诸如stitch、shape constraint等优化策略。AI编译器有很好鲁棒性、适应性、易用性,并且可能播种显著优化收益。 本文中,阿里云机器学习平台PAI团队联结英特尔数据中心软件团队、英特尔人工智能和剖析团队、达摩院NLP地址标准化团队,针对地址标准化服务的推理性能挑战,单干实现了高性能的推理优化计划。 2. 地址标准化介绍公安政务、电商物流、能源(水电燃)、运营商、新批发、金融、医疗等行业在业务发展的过程中往往波及大量地址数据,而这些数据往往没有造成规范构造标准,存在地址缺失、一地多名等问题。随着数字化的降级,城市地址不规范的问题更加凸显。 地址标准化[2](Address Purification)是阿里巴巴达摩院NLP团队依靠阿里云海量的地址语料库,以及超强的NLP算法实力所积淀出的高性能及高准确率的规范地址算法服务。地址标准化产品从标准地址数据、建设统一标准地址库的角度登程,提供高性能地址算法。 该地址算法服务能主动地标准化解决地址数据,可无效地解决一地多名,地址辨认,地址真伪分别等地址数据不标准、人工治理耗时耗力、地址库反复建设问题,为企业,政府机关以及开发者提供地址数据荡涤,地址标准化能力,使地址数据更好的为业务提供反对。地址标准化产品具备如下的几个特点: 准确率高:领有海量地址语料库以及超强的NLP算法技术,并继续优化迭代,地址算法准确率高超强性能:积攒了丰盛的我的项目建设教训,可能稳固承载海量数据服务全面:提供20多种地址服务,满足不同业务场景需要部署灵便:反对公共云、混合云、私有化部署。本次优化的模块属于地址标准化中的搜寻模块。地址搜寻是指用户输出地址文本相干信息,基于地址库和搜索引擎,对用户输出的地址文本进行搜寻和联想,并返回相干趣味点(Point of Interest,POI)信息。地址搜寻性能不仅可能晋升用户数据处理体验,同时也是多个地址上游服务的根底,如经纬度查问、门址标准化、地址归一等,因而在整套地址服务体系中起到了关键作用。 具体而言,本次优化的模型是基于多任务天文预训练语言模型底座产出的多任务向量召回模型和精排模型。 多任务天文预训练语言模型底座在掩码语言模型 (Masked Language Model, MLM) 工作的根底上联合了相干趣味点分类与地址元素辨认(省、市、区、POI 等),并通过元学习(Meta Learning)的形式,自适应地调整多个工作的采样概率,在语言模型中融入通用的地址常识。 多任务向量召回模型基于上述底座训练所得,蕴含双塔类似度、Geohash (地址编码) 预测、分词和 Term Weighting (词权重) 四个工作。 作为计算地址类似度匹配的外围模块,精排模型则是在上述底座的根底上,引入了海量点击数据和标注数据训练训练所得[3],并通过模型蒸馏技术,晋升了模型的效率[4]。最终用利用于召回模型召回的地址库文档从新排序。基于上述流程训练失去的4层单模型可能在CCKS2021中文NLP地址相关性工作[5]上取得较12层基线模型更好的成果(详见性能展现局部)。 3. 模型推理优化解决方案阿里云机器学习平台PAI团队推出的Blade产品反对以上提及的所有优化计划,提供了对立的用户接口,并领有多个软件后端,如高性能算子、Intel Custom Backend、BladeDISC等等。 ...