文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

携程AI推理性能的自动化优化实践

2024-12-02 21:18

关注

一、背景

近年来,人工智能逐渐在安防,教育,医疗和旅游等工业和生活场景中落地开花。在携程旅游业务上,AI技术同样广泛覆盖了多个旅游产品和旅游服务领域,携程度假AI研发根据旅游的特定场景和业务需求,将自然语言处理,机器翻译,计算机视觉,搜索排序等主流AI技术成功应用于旅游度假的多个业务线,例如自由行,跟团游,签证,玩乐和租车等。

从技术角度,为了适应不同的业务场景需求,涉及到多种AI技术,包括传统机器学习,卷积神经网络,Transformer等深度学习模型结构,以及知识图谱和图神经网络等技术领域。同时,为了充分挖掘AI技术的优势,模型设计复杂度日渐提升,包括模型深度,宽度以及结构复杂度等各个维度,计算量的增大使得AI推理性能瓶颈日益凸显,尤其是实时性的业务需求对推理速度要求更高。为了追求最佳推理性能,往往需要手动进行逐个优化,涉及的开发,部署和沟通成本都很高。主要问题集中在:

因此,为了降低优化,部署和迭代成本,提高工作效率,并保证性能稳定,我们尝试搭建模型自动化优化平台,旨在为算法模型提供更全面易用,稳定性更好,使用和维护成本更低的优化解决方案。

二、优化平台的主要框架

从性能优化方法论的角度,无论是自动优化还是手动优化,主要关注以下两大方向:

围绕这两大优化方向以及人工智能的主流技术方向,优化平台的整体架构层自下而上可以划分为:

 

 

图1 模型平台的框架组成 

 

三、自动化优化流程

优化平台的搭建能够系统有效地将优化技术整合起来,并快速应用于实际需求,但是如果不实现自动化优化,优化效率比较低,部署和迭代成本,沟通和接入成本高。因此我们建立了自动化优化流程,将所支持的优化技术涵盖在内,结合模型训练平台,数据标注平台,从模型设计,模型训练到模型推理优化,模型部署全链路,实现零介入无感知的优化效果,大大提升工作效率以及整体优化效果的稳定性。

图2所示为数据平台,模型训练平台,模型优化和部署的大概流程。具体有哪些优化手段,如何进行自动化实现的流程细节如图3所示。

 

 

图2 模型自动化优化实现框架

 

 

 

 

 

 

图3 自动优化实现的基本流程 

 

四、功能模块

自动化优化平台的主要功能模块分四部分:

 

 

 

图4 模型优化平台基本模块 

 

4.1 高性能算子库

该模块主要实现了常用的算子以及激活函数,包含基础算子,例如卷积,全连接层,batch norm,softmax等等以及合并后的经典的模型结构,例如transformer encoder,decoder等,基于tensorflow实现,采用c++实现,支持CPU和GPU平台的优化。

具体的优化方法涵盖了:

 

 

 


图5 Self-attention原始实现流程 

 

 

 

 

图6 self-attention优化后实现流程 

 

二者对比,可以明显看出,优化后减少了4次transpose操作,也就是减少了内存访问的开销,同时对于矩阵乘法,调用批量矩阵乘法替代单个矩阵乘法操作,效率更高。

 

 

 

图7 算子融合举例 

 

4.2 模型压缩

模型压缩是提升推理性能的另一个有效手段,主要是指在算法层面上的模型优化,保证精度的前提下,通过合理的降低模型结构或者参数量,从而实现减少整个模型计算量的目的。

模型压缩的主要作用有:

宏观上来讲,当前的优化平台支持的模型压缩方法有模型蒸馏,模型剪枝,低精度量化等。

4.2.1 模型蒸馏

模型蒸馏采用的是迁移学习,通过预先训练好的复杂模型(Teacher model)的输出作为监督信号去训练另外一个简单的学生网络(Student Model),从而实现对模型的简化,减少模型参数。模型蒸馏普遍性很强,可有效提升小模型准确率,但是调参相对困难,主要的核心的问题包括,如何选择特征层如何设计损失函数,学生模型的设计和数据集的选择等等。图8是我们压缩框架中实现的对Transformer的decoder模型的蒸馏实现。

 

 

 

图8 Transformer模型蒸馏 

 

总损失函数构成:

其中α和β分别表示相应的损失值权重系数,α∈(0,1],β∈R,Lsoft是 Teacher网络的输出与Student网络模型输出的损失值,Lhard - 训练数据语料真实标签与Student网络模型输出的损失值,LAT_FMT - Teacher和Student网络模型的Decoder 的中间输出内容损失值,采用逐级分层蒸馏的方法,最终推理速度加速比达到2倍,精度损失BLEU值在可接受范围内(4%)。

4.2.2 低精度量化

低精度量化更多是从计算机硬件的设计角度,修改数据类型,降低数据精度,从而进行加速,依赖于硬件实现。量化的方式也包含多种,训练后量化(PTQ post training quantization),训练时量化(QAT,quantization aware traning)等。

目前我们优化平台支持float16和int8,其中int8量化只支持PTQ方式,一般情况下,为了保证模型精度,采用int8量化需要对量化后的模型校准,校准方式实现依赖于复杂的数学算法,目前较常用的是KL散度,对于CV模型,精度损失可接受。对于基于Transformer的NLP模型,精度损失较大,我们目前只支持GPU平台的float16实现。相比于float32,存储空间和带宽减半,精度几乎无损失,吞吐提升可达3倍。

4.2.3 模型剪枝

剪枝的主要思想是将权重矩阵中相对“不重要”的权值剔除,然后再对网络进行微调;方法简单,压缩效果可控,但是在剪枝粒度和方法选择需要认为定义规则,而且非结构化的剪枝效果需要依赖于硬件平台实现。模型剪枝在计算机视觉领域广泛使用,并取得了不错的效果。

图9举例实现了一种典型的结构化剪枝的方法[4]。我们针对CV模型,在原始模型中加入batch_normal层,对batch_normal的参考论文2:ChannelPruning for Accelerating Very Deep Neural Networks论文中提出利用channel进行剪枝,实验如下:在超分辨率的实验中,考虑在原始模型中加入batch_normal层,然后对batch_nomal的α值做正则化,最后利用该值作为依据进行剪枝,对训练好的模型中的batch_normal层的参数α进行分析,针对不同的卷积模型应用同样的方式,发现有些模型有近一半的参数在1e-5数量级,此外同一层中的分布方差极小,据此对模型进行通道级别的剪枝并进行fine tune训练,剪枝效果明显,模型大小减少到原来的1/4,精度不变的前提下,加速比可达4倍。而对于yolov3模型,大部分参数差异不大(MAP降低2%),可剪掉的有限,所以为了保持精度,参数量减半,加速比1.5x左右。

 

 

 

 

图9 模型剪枝实例

 

 

4.3 接口设计

模型优化平台采用即插即用的模块化设计,可无缝对接模型训练平台,模型发布平台等。

具体使用方式如图10和图11所示。

 

 

图10 高性能算子库的调用

 

 

图11给出了模型压缩模块的调用方式。

 

 

图11 模型压缩模块调用

 

 

五、优化成果

以实际应用机器翻译的Transformer模型为例,所测试平台为CPU: Intel(R) Xeon(R) Silver 4210CPU @ 2.20GHz; GPU:Nvidia T4,以固定算例的平均响应延迟为测试数据,优化后和优化前的加速比如下图12所示。

其中,原始性能基于tensorflow1.14为测试基准,在GPU平台框架层优化和编译运行时等多层优化实现,图13是Transformer翻译模型基于T4平台使用模型压缩和高性能算子库优化之后的对比结果,图中给出的是token长度为64,不同batch大小时的延迟和吞吐提升比例,实际中token越大,float16的优势越明显。

 

 

图12
图13

 

 

基于CPU硬件平台,针对CV和NLP模型(例如yolov3,bert和albert等),也取得了不错的优化效果,延迟加速比最高达到5倍以上。

六、未来展望

AI优化的潜力和需求很大,因为AI理论和模型的日益完善,应用场景对模型精度等推理服务质量的更高要求,必然使得模型结构和计算复杂度越来越高,对推理服务的性能需求只会有增无减。从成本和效率多个角度考虑,自动优化是必然趋势,并且业界也都陆续开展了相关研究,取得了一些进展。

依旧从两方面来看,同样是基于自动化优化这个大方向,算子优化等系统级优化最终都会通过tvm等AI编译器实现,而模型压缩则侧重于使用AutoML的思想,基于当前平台和实际需求,通过结构搜索找到符合要求的最简化的网络。当然,当前的蒸馏,剪枝等传统压缩方法也可以跟AutoML的思想相结合,同样能够高效地实现压缩效果。

因此,我们的自动化优化平台也正是基于自动化优化的思路,综合考虑业务场景需求,参考业界更先进的优化技术,为旅游场景的AI模型带来更加高效的优化方案,推动AI技术在旅游业务更好落地。

 

来源:知乎内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯