nh文件用什么打开(nh文件用什么软件打开)

背景介绍随着人工智能技术在爱奇艺视频业务线的广泛应用,深度学习算法在云端的部署需要计算资源,尤其是GPU资源。如何提高深度学习应用的部署效率,降低云平台的运行成

干货|基于 CPU 的深度学习推理部署优化实践

背景介绍

随着人工智能技术在爱奇艺视频业务线的广泛应用,深度学习算法在云端的部署需要计算资源,尤其是GPU资源。如何提高深度学习应用的部署效率,降低云平台的运行成本,帮助算法和业务团队快速落地应用和服务,让AI发挥真正的生产力,是深度学习云平台团队的目标。

从基础设施的角度来看,GPU资源短缺,GPU利用率不足是我们面临的主要挑战。由于大量的算法训练和推理服务,云GPU资源往往供不应求;而使用CPU的推理服务,往往因为性能问题达不到服务指标。此外,在线服务通常对实时性要求较高,需要独占GPU,但由于QPS较低,GPU利用率往往处于较低状态(

在此背景下,我们尝试对基于CPU的深度学习推理服务进行优化,通过提高其在CPU上的性能,达到将推理服务从GPU迁移到CPU的目的,从而利用集群中大量的CPU服务器,节省GPU计算资源。

干货|基于 CPU 的深度学习推理部署优化实践

图 1. 深度学习服务对云平台的挑战图一。深度学习服务对云平台的挑战

1.深度学习推理服务及优化流程

1.1什么是深度学习推理服务?

深度学习推理服务通常是指将训练好的深度学习模型部署到云端,向外界提供gRPC/HTTP接口请求的服务。推理服务内部实现的功能包括模型加载、模型版本管理、批处理和多路径支持,以及服务接口的封装,如图2所示:

干货|基于 CPU 的深度学习推理部署优化实践

图 2. 深度学习推理服务功能模块图二。深度学习推理服务功能模块

业界常用的深度学习推理服务框架有Google的tensorflow serving,Nvidia的Tensor RT Impact Server,Amazon的Elastic Impact等。目前,爱奇艺深度学习云平台(Jarvis)提供基于tensorflow serving的自动推理服务部署功能。支持的深度学习模型有tensorflow、caffe、caffe2、mxnet、tensorrt等。,以后还会支持openvino和pytorch。此外,业务团队还可以根据自己的需求实现和定制特定的深度学习服务容器,并通过QAE部署和管理服务。

1.2服务优化的流程是什么?

如图3所示,服务优化过程是朝着优化目标不断迭代的过程。

干货|基于 CPU 的深度学习推理部署优化实践

图 3. 服务优化的流程图3。服务优化过程

为了优化深度学习推理服务,首先需要定义服务类型和主要性能指标,从而确定服务优化目标。从系统资源的角度,深度学习服务可以分为计算密集型或I/O密集型服务。例如,基于CNN的图像/视频算法通常需要大量的计算,这是一种计算密集型服务。搜索和推荐类型的大数据算法由于特征维数高、数据量大,通常属于I/O密集型服务。从服务质量的角度来看,可以分为延迟敏感服务和高吞吐量服务。例如,在线服务通常要求较低的请求响应时间,并且大多是延迟敏感的服务,而离线服务通常是批处理的高吞吐量服务。不同类型的深度学习服务优化有不同的目标和方法。

干货|基于 CPU 的深度学习推理部署优化实践

图 4. 深度学习推理服务的分类图4。深度学习推理服务的分类

1.3深度学习推理服务的性能指标是什么?

深度学习服务的性能指标主要包括响应延迟、吞吐量和模型准确率,如图5所示。其中,响应延迟和吞吐量是服务过程中关注的两个性能指标。定义了服务性能指标后,就可以分析服务规模,计算单个服务节点需要达到的服务性能。

干货|基于 CPU 的深度学习推理部署优化实践

图 5. 深度学习服务性能指标图5。深度学习服务的绩效指标

2.基于CPU的深度学习推理服务优化

2.1深度学习优化在CPU上的主要方法有哪些?

“工欲善其事,必先利其器”。在CPU上优化深度学习推理服务的方法可以分为系统级、应用级和算法级,每一级也有相应的性能分析工具,如图6所示:

系统级优化主要从硬件和平台的角度加速计算。方法主要有基于SIMD指令集的编译器加速、基于OMP的并行计算加速、硬件厂商提供的深度学习加速SDK。

应用级优化主要是从具体应用和服务的角度来优化流水线和并发。通常,深度学习服务不仅包括推理,还包括数据预处理、后处理、网络请求响应等环节。良好的并发设计可以有效提高服务器端的性能。

算法级优化主要针对深度学习模型本身,采用超参数设置、网络结构切割、量化等方法,降低模型规模和计算量,从而加快推理过程。

干货|基于 CPU 的深度学习推理部署优化实践

图 6. 深度学习服务性能优化方法及分析工具图6。深度学习服务性能优化方法及分析工具

2.2如何在系统层面进行优化?

在CPU系统级优化的实践中,主要采用两种方式:数学库优化(基于MKL-DNN)和深度学习推理SDK优化(Intel OpenVINO)。这两种方法都包括SIMD指令集的加速。

数学库优化有主流深度学习框架(tensorflow,caffe,mxnet,pytorch等)的官方源码支持。).以tensorflow为例,使用方法如下:

干货|基于 CPU 的深度学习推理部署优化实践

图 7. 基于 MKL-DNN 优化的 Tensorflow 使用方法图7。基于MKL-DNN优化的张量流使用方法

深度学习推理SDK的优化方法需要先对原生深度学习模型进行转换,生成IR中间模型格式,然后调用SDK接口加载模型,封装推理服务。具体流程如下:

干货|基于 CPU 的深度学习推理部署优化实践

图 8. OpenVINO 优化推理服务流程图8。OpenVINO优化推理服务流程

2.3选择哪种系统级优化方法?

两种优化方法的比较如图9所示:

干货|基于 CPU 的深度学习推理部署优化实践

图 9. 系统级优化方式比较图9。系统级优化方法的比较

基于两种优化方法的特点,在实际应用中,可以首先使用基于MKL-DNN的优化方法来测试服务性能。如果符合业务需求,可以直接部署;对于性能要求更高的服务,尽量优化OpenVINO SDK。

2.4系统级优化中影响性能的因素有哪些?

对于以上两种系统级优化方法,以下因素会影响使用过程中的服务性能。

(1)1)OpenMP参数的设置

两种推理优化方法都使用基于OMP的并行计算加速,因此OMP参数的配置对性能影响很大。主要参数的推荐配置如下:

OMP线程数= "容器中cpu内核的数量"

KMP _封锁时间= 10

KMP亲和力=粒度=精细、详细、紧凑,1,0

(2)部署服务的CPU核心对性能的影响

CPU核心数对推理服务性能的影响主要表现在以下几个方面:

当批量较小时(例如在线服务),CPU核的增加逐渐削弱推理吞吐量的提高。实际中,根据不同型号推荐8-16核CPU进行服务部署;

当批量较大时(例如离线服务),推理吞吐量可以随着CPU核的增加而线性增加。在实践中,建议使用20核以上的CPU进行服务部署。

(3)3)CPU型号对性能的影响

不同类型的CPU对推理服务的性能加速不同,这主要取决于CPU中的SIMD指令集。例如,相同核数的至强金牌6148的平均推理性能是至强E5-2650 v4的两倍左右,主要是因为6148 SIMD指令集从avx2升级到avx-512。

目前,在线集群已经支持选择不同类型的CPU进行服务部署。

(4)输入数据格式的影响

除了Tensorflow,其他常见的深度学习框架通常会推荐NCHW格式的数据作为图像算法的输入。Tensorflow原生框架在CPU上默认只支持NHWC格式的输入,MKL-DNN优化的Tensorflow可以支持两种输入数据格式。

利用以上两种优化方法,建议算法模型采用NCHW作为输入格式,以减少推理过程中内存数据重排带来的额外开销。

(5)NUMA配置的影响

对于NUMA架构的服务器,同一节点上的NUMA配置的性能通常比不同节点上的高5%-10%。

2.5如何在应用层面进行优化?

对于应用级优化,首先需要对应用的各个环节进行端到端的性能分析和测试,找到应用的性能瓶颈,然后进行针对性的优化。性能分析和测试可以通过添加时间戳日志或使用时间序列性能分析工具来完成,如Vtune、timeline等。优化方法主要包括并发和流水线设计、数据预取和预处理、I/O加速、特定功能加速(例如使用加速库或硬件进行编解码、帧提取、特征嵌入等功能加速)。

以视频质量评估服务为例,介绍了如何使用Vtune工具进行瓶颈分析,以及如何通过多线程/进程并发来优化服务。

视频质量评估服务的基本流程如图10所示。OpenCV对视频码流进行读入、解码、帧提取和预处理,然后由深度学习网络对处理后的码流进行推理。最后通过聚合推理结果得到视频质量评分,以确定是哪种视频。

干货|基于 CPU 的深度学习推理部署优化实践

图 10. 视频质量评估服务流程图10。视频质量评估服务流程

图11显示Vtune工具捕获的原始应用线程。可以看到,OpenCV单解码线程总是忙碌的(棕色),而OMP推理线程总是等待的(红色)。整个应用的瓶颈在于Opencv的解码和预处理。

干货|基于 CPU 的深度学习推理部署优化实践

图 11. 应用优化前线程状态图11。应用程序优化前的线程状态

图12示出了服务线程的优化状态,该服务线程通过生成多个进程来解码视频流,并以批处理模式对其进行预处理;处理后的数据以批处理方式传递给OMP线程,用于推理以优化服务。

干货|基于 CPU 的深度学习推理部署优化实践

图 12. 应用并发优化后线程状态图12。应用并发优化后的线程状态

经过上述简单的并发优化后,720帧视频流的处理时间由7秒提升至3.5秒,性能提升一倍。此外,还可以通过流水线设计、专用解码硬件加速等方法进一步提升整体服务性能。

2.6算法层面如何优化?

提高推理服务性能的常用算法级优化方法包括批量调整、模型剪枝、模型量化等。其中,模型的剪枝和量化涉及到模型结构和参数的调整,所以通常需要算法同学的帮助共同优化,以保证模型的精度能够满足要求。

2.7批量选择对CPU上的服务性能有什么影响?

批量选择的基本原则是为延迟敏感的服务选择较小的批量,为吞吐量敏感的服务选择较大的批量。

图13示出了不同批量对推理服务的吞吐量和延迟的影响。测试结果表明,当batchsize较小时,适当增加batchsize(例如bs从1增加到2)对时延影响不大,但可以快速提高吞吐量性能;当batchsize较大时,增加其值(例如从8增加到32)无助于提高服务吞吐量,反而会极大地影响服务延迟性能。因此,在实践中,需要根据部署的服务节点的CPU核数量和服务性能要求来优化批处理大小。

干货|基于 CPU 的深度学习推理部署优化实践

图 13. Batchsize 对服务性能影响图13。批量大小对服务性能的影响

总结与展望

上述系统级优化方法已经在深度学习云平台上落地了10+以上的应用和算法,部署了上千种核心服务,平均性能提升了1~9倍。更详细的用法请参考文末的相关链接。

针对深度学习的推理服务优化,深度学习云平台还计划增加更多异构计算资源来加速特定任务,如VPU、FPGA等计算资源。同时,我们将继续在服务灵活性和最优调度、部署参数的自动优化和选择等方面进行深入优化。,从而充分发挥云平台的计算资源和能力,加速深度学习推理服务的落地。

相关链接

(1)OpenVINO:

https://software.intel.com/en-us/openvino-toolkit

(2)Vtune性能分析工具:

https://software.intel.com/en-us/vtune

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

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

发表回复

登录后才能评论