首发于 携程技术

携程AI应用的推理性能优化

随着深度学习技术的快速发展,人工智能应用逐渐落地到各个生产生活场景,大大提升了生产效率,降低了生产成本。携程旅游的度假AI部门根据业务特征需求,已将计算机视觉,自然语言处理,机器翻译,语音识别和处理等多种主流AI技术逐步应用到旅游业务的多个场景,包括智能客服平台,搜索排序等。另外值得一提的是度假AI自主研发的机器翻译技术为全集团公司提供翻译服务,将为携程推进国际化进程发挥重要作用。

为了保证服务质量,模型复杂度逐渐提升,计算量不断增加,由此带来的问题也日益明显:一是计算资源需求增加所带来的成本上升;二是推理过程计算量过大导致响应时间延长,极大影响了用户体验,而训练速度太慢则降低了生产效率。因此优化训练和推理性能的需求尤为迫切。

本文将着重介绍AI应用的推理性能优化方法,从系统以及模型等层面阐述推理性能优化的一般方法,并从实际应用出发,给出了具体优化的实践案例和取得的部分成果以及对未来发展方向的一些展望和思考。

一、推理性能优化的背景和发展现状

当前绝大多数人工智能应用都是基于深度学习技术,在数据驱动下建立算法模型,再经过训练测试、工程部署和推理实现完成。某个具体的算法模型能否最终成功落地为产品,满足场景需求,推理性能是关键变量之一。影响这个关键变量的因素非常多,包括硬件配置,工程部署方式,算法和模型复杂度以及深度学习框架等。

1.1 推理服务的性能评价指标

深度学习推理服务根据应用需求和特征不同,对性能需求也有所不同。比如计算机视觉和自然语言处理,机器翻译等服务主要是计算密集型应用,对计算资源需求较高;搜索推荐类的应用的输入数据特征维度高,更偏向于I/O密集型。

无论是哪种应用,都用延迟和吞吐作为常用的服务性能指标。在线类的应用延迟敏感,对响应时间要求高,而离线类的应用则侧重于批量处理的高吞吐需求。

具体来说,延迟(latency)可以细分为平均延迟,90线,95线和99线(99%的请求所达到响应时间)等,吞吐(throughput)则表示每单位时间处理的请求数(QPS/TPS),或者字符数(CPS)等,整体服务的并发度取决于两者的共同表现。

除此之外,还有一系列用来反映服务处理质量的指标,跟深度学习模型和算法关系密切,主要有精确率,召回率等,或者针对具体应用的特定指标,比如机器翻译常用的BLEU等。推理服务的终极目标就是满足服务质量的指标需求,实现低延迟和高吞吐。

1.2 主流的深度学习框架

工业界将深度学习技术快速落地的便捷有效的方式就是借助深度学习框架,部分框架兼顾训练和推理,将二者合二为一,比如TensorFlow,PyTorch和MXNet等主流框架,另外一些为了实现推理的高性能,将训练和推理进行分离,专门实现推理框架,比如ONNX Runtime,TensorRT等。

表1 当前主流框架

针对推理的性能优化,除了开发新的推理框架,另一个方法是即时编译技术(Just-In-Time)。即时编译技术对于传统的计算机编程已经不算是新名词了,但是在AI领域的应用也是近两年才发展起来。比较常用的编译优化技术TVM目前已应用于深度学习的各个场景。

随着tvm功能的逐步完善,业界也将tvm称为一种特殊的推理框架。TVM的设计初衷就是解决兼容性和推理性能问题,因为硬件平台越来越多样化,深度学习框架也层出不穷,经过tvm编译优化后可以方便地部署到不同硬件平台,并且获取满意的推理性能。图1是tvm的基本框架总览图,来自tvm主页( tvm.apache.org/)。

图1 tvm框架和主要功能总览

Tvm主要优化包括:

深度学习推理服务的性能跟其他传统应用一样受很多因素影响,包括模型本身的算法复杂度,硬件平台,操作系统,部署方式,请求处理方式,是否缓存等等。深度学习框架的选择和优化只是其中一个影响因子。

综合来看,为了实现深度学习的高性能推理服务,我们需要一套科学系统的推理优化方法论,基于该方法论,充分考虑各种影响因素并逐个击破,才能达到最理想的符合应用场景需求的性能结果。

二、性能优化的一般方法论

无论是传统应用还是深度学习应用,提升性能都有相应的方法论,使用正确的方法能够事半功倍,大大提升效率。这一节内容我们重点探讨深度学习的推理优化应该如何来展开。

2.1 优化流程

深度学习应用的优化流程如下图所示。分为以下几步:

图2 优化的一般流程

2.2 优化方法

针对深度学习推理服务,很多优化方法跟传统应用既有共性又有其特殊之处。从整体服务性能来看,可以简单的将其分为模型外的优化和针对模型的优化。其中模型外的优化跟传统应用的优化类似,使用的方法也基本相同,比如添加多级缓存,异步处理,考虑负载均衡等。针对模型本身的优化是本节的重点,下图是普通的深度学习推理服务的系统结构图。基于该系统结构图,本文将所有的优化分为两大类,分别是系统级优化和模型优化。

图3 深度学习推理的主要技术架构图

2.2.1 系统级优化

对于一个已训练好的模型,模型复杂度和计算量都不变的前提下,通过优化代码和运行时优化等手段提升软件的执行效率,充分压榨硬件平台的性能和利用率,这样的优化方式称为系统级优化。

系统级优化可以分为多个层次,分别对应于深度学习推理服务的系统结构层,针对每一层都有相应的优化方法,根据不同硬件平台有不同的实现。例如CPU平台基于SIMD指令集加速和数学库MKL-DNN加速,GPU平台使用cuDNN加速等。下图描述了系统级优化的不同层级和实现方法。

图4 深度学习推理的系统级优化

深度学习模型大多数是计算密集型应用,在优化的过程中,同样需要遵循几大原则,一是尽量提升代码并行效率,充分发挥cpu或者gpu的核心利用率;二是提升计算访存比,同时想办法隐藏内存访问延迟;三是尽量提升访存命中率,降低访存带宽需求;四是充分发挥硬件的特殊性能,例如特定的硬件指令集等。

2.2.2 模型优化

实际AI应用部署时,充分提升硬件利用率的优化往往不足以达到推理目标需求,尤其对于计算复杂度较高的模型。因此需要保证模型质量的前提下,降低模型计算量,从而实现更好的优化效果,这种方式称为模型优化。模型优化的方式很多,如下图所示。

图5 深度学习推理的模型优化

这些方法可以同时使用,但是具体效果和对推理质量的影响取决于实际模型和应用。总结而言,低精度量化和模型剪枝广泛应用于计算机视觉模型的压缩优化,尤其是分类模型,但是优化效果依赖于硬件平台的实现,例如CPU的VNNI指令集,GPU的Tensor core等。低秩估计更多是针对耗时较多的算子从数学角度进行优化,提升效果和压缩效果比较有限。模型蒸馏概念比较广泛,不依赖任何框架和硬件平台,配合其他压缩方法使用往往能收获不错的效果。模型优化除了提升性能,还可以减少参数量,从而减小了模型尺寸,降低内存占用量,使得移动端部署更加可行。

将模型压缩优化和系统级优化结合使用,能更好地提升总体推理性能。

三、优化实践案例

本节内容将基于上述优化方法论提供一些优化案例。这些模型都已成功应用到携程旅游的实际业务中,包括图形图像,自然语言处理和机器翻译等多个场景。

下面重点以Transformer翻译模型为例阐述优化实践过程。Transformer翻译模型基于Encoder-decoder结构,其中encoder主要包含self-attention, FFN(Feed Forward)和residual connection等结构,decoder包含self-attention,交叉attention,FFN和residual connection等。图6给出的具体的图结构。

图6 Transformer模型结构

无论是cpu还是gpu平台,我们使用tensorflow的timeline进行性能分析发现:

由此可以确定优化方向:

因此,我们实现对transformer的算子融合和算子重写,合理设计内存布局,降低访存开销,再结合硬件平台进行微架构和编译运行优化,在cpu和gpu平台都取得了明显的提升。在实际线上业务部署时,同时采用批处理等模型外的优化措施,大大提升了翻译服务的性能。

图7 是Transformer翻译模型基于T4 GPU平台使用系统级优化和float16低精度优化后的结果,图中给出的是token长度为32不同batch大小时的响应时间。

实际测试中,我们发现token越大,float16的优势越明显。图8是batch=1时,使用不同token长度进行测试的结果,纵坐标表示优化前后的吞吐,每秒处理的token数。由于翻译在GPU平台耗时主要在于解码,这里的token指的都是解码长度。

图7 Transformer翻译模型GPU延迟优化结果
图8 Transformer翻译模型GPU吞吐优化结果

同样的,对于其他模型,我们也是用类似的分析和优化措施,取得一定的优化成果,如图9所示。所测试平台为CPU: Intel(R) Xeon(R) Silver 4210CPU @ 2.20GHz,CPU平台使用8个逻辑核进行测试,以固定算例的平均响应延迟为测试数据,优化后和优化前的加速比。其中,原始性能基于tensorflow1.14为测试基准,Bert和Albert的batch_size=1, seq_len=128. Transformer翻译模型的cpu结果展示的是token=16的算例结果。

图9 推理性能CPU优化加速比

目前展现的主要是系统级优化所取得的成果,经验证,推理服务的质量指标也完全符合旅游业务需求。对于推理服务的性能优化还在持续进行中,尤其是模型压缩的优化,需充分权衡模型质量指标,值得更多尝试,相信未来会有更大的提升。

四、未来发展与展望

AI理论和模型日益完善,应用场景对模型精度等推理服务质量有更高的要求,模型深度和宽度都可能变大,对推理服务的性能需求只会有增无减。业界各种优化方法也已广泛使用并取得不错的成效,但突出的问题是,如果每增加一个模型都需要手动一点点优化,对技术人员要求较高,而且需耗费大量时间和精力,长久来看通过自动优化提升效率是未来推理模型的发展趋势。

尤其是编译优化技术的推广,tvm的出现便是一个先行者,就像当初各种语言编译器的出现可以自动解决大部分传统应用的性能问题一样,深度学习的编译优化技术也会在未来发挥更重要的作用。同时,自动优化的普及能极大提升优化效率,完成80%的优化工作,而对于性能的极致追求仍然依赖技术经验由工程师手动优化来实现剩下的20%。

推理性能优化技术的逐步完善和提高将极大地降低人工智能应用的部署成本,提升生产效率,同时加快AI应用的落地,扩充应用场景,推动人工智能行业的整体发展。携程度假AI也将持续结合实际业务需求,进一步提升模型性能,降低成本,推动AI技术在旅游行业的全面落地,提供高质量的旅游服务,更好地服务客户。

【作者简介】Shan Zhou,携程算法专家,主要负责携程度假AI应用在CPU和GPU平台的性能优化,涉及计算机视觉,自然语言处理,机器翻译和语音处理等多个领域。

更多携程技术人一手干货文章,请关注“携程技术”微信公众号。

深圳SEO优化公司漯河网站优化排名价格白银SEO按效果付费公司鸡西网络推广哪家好蚌埠网站推广系统临猗企业网站制作公司保山阿里店铺托管多少钱韶关网站优化推广价格扬州网站建设哪家好阜阳百度竞价包年推广多少钱天门模板推广多少钱潮州外贸网站设计报价鹤岗SEO按效果付费推荐海东模板推广报价通辽营销型网站建设公司普洱设计公司网站价格湘西seo网站推广价格思茅SEO按天收费哪家好鹰潭网站优化哪家好布吉网站建设设计推荐乌海网页制作价格延边网站关键词优化价格柳州SEO按天扣费多少钱驻马店网站seo优化价格永湖SEO按天计费报价湖州网站制作推荐中山网站改版温州设计网站鹤壁网站改版公司朝阳网站建设价格坪山百度网站优化排名哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化