首页> 中国专利> 一种深度学习预测服务系统的优化方法

一种深度学习预测服务系统的优化方法

摘要

本发明涉及深度学习预测服务系统,是深度学习与服务系统结合的领域,深度学习预测服务系统以计算为中心,预测服务系统中各深度学习模型同时进行预测计算,会有大概率对硬件资源竞争,使得服务质量不稳定。本发明为每个模型划分可用的硬件资源,主要是高速缓存分区技术对预测服务系统优化的方法,解决模型预测用时不稳定的问题。本发明的内容有:将核心硬件资源划分为资源池,每个模型只能占用对应的资源池,实现了模型在高速缓存、CPU核心级别的隔离,使得模型在运行时对核心资源的竞争减少,从而将每个模型的运行时间稳定在一定范围,而不会出现两次运行时间差别非常大的情况。

著录项

  • 公开/公告号CN112965808A

    专利类型发明专利

  • 公开/公告日2021-06-15

    原文格式PDF

  • 申请/专利权人 湖南大学;

    申请/专利号CN202110367161.4

  • 发明设计人 李松鞠;陈浩;

    申请日2021-04-06

  • 分类号G06F9/48(20060101);G06F9/50(20060101);G06N20/00(20190101);

  • 代理机构

  • 代理人

  • 地址 410082 湖南省长沙市岳麓区麓山南路1号湖南大学

  • 入库时间 2023-06-19 11:26:00

说明书

技术领域

本文发明涉及深度学习预测服务系统领域,深度学习预测服务系统,主要功能有部署深度学习模型,接受来自网络端的预测请求,并且能将请求的数据传输到对应的深度学习模型中进行计算,返回模型推理预测结果。深度学习预测服务系统与以数据为中心的服务系统不同,这是一个以计算为中心的服务系统,对每一个合法的预测请求,不仅会消耗I/O资源,同时还会消耗大量的计算资源。随着深度学习的兴起,深度学习预测服务系统的研究也逐渐得到关注。工业生产中,预测服务系统中部署多种深度学习模型,为不同应用提供预测服务。在这样的系统中如何高效地利用CPU核心、高速缓存等硬件资源就是一个重要的应用研究方向。

背景技术

深度学习作为机器学习算法研究中的一个新的技术,其动机在于建立、模拟人脑进行分析学习的神经网络。近十年来,各种深度学习算法和高效深度学习模型框架的提出,以及GPU,TPU等硬件设备在深度学习领域的使用,使得深度学习模型的训练时间减少,准确率的逐步提升,使之能在人工智能领域被广泛应用。工程应用中,深度学习模型的训练和预测是两个不同的阶段,训练时可以选择一种深度学习框架,从收集数据和设计模型、训练数据开始。当一种新的算法或者更好的模型框架出现,模型可能还需要从一种框架中迁移到另一种框架。深度学习的基础库的研究也得到很多关注,一些开源机器学习工具库,HadoopMahout、scikit-learn、Spark MLlib、tensorflow和Weka、torch也渐渐出现,这些基础库为深度学习模型的构建与训练提供了方便。

训练好的深度学习模型提供了将输入转换为解决方案的预测功能,将深度学习模型(Deep Learning模型,以下简称DL模型)与服务系统集成在一起,使服务系统成为与深度学习模型耦合并提供预测服务,这方面的研究也随着深度学习研究的兴起受到关注。深度学习预测服务系统,其中包括面向用户层应用程序接口,服务系统与深度学习模型的耦合方式的设计。通用的深度学习预测服务(以下简称预测服务系统)如附图1所示,用户层应用通过网络向服务系统发送预测请求,预测服务系统按照请求的内容将数添加到对应的DL模型的任务队列,等到DL模型空闲时调用DL模型对输入数据进行运算得到结果,预测服务系统将DL模型返回的结果传回用户层应用。预测服务系统中所有DL模型共享核心硬件资源,CPU核心、高速缓存、内存带宽等。

在深度学习预测服务系统中,评价性能的指标主要有:单个预测任务的时延;预测任务的准确率;DL模型的吞吐率。预测任务的准确率主要由DL模型的设计和训练过程用到的数据量决定,预测任务的时延主要由DL模型运行时可用的硬件资源(CPU核心、GPU、高速缓存、内存带宽等)决定,吞吐率则由DL模型是否支持批处理和做一次预测的时间共同决定。

工业界相关预测服务系统有:领英研发的一款在线精准广告预测服务系统LASER,支持在线训练和在线预测服务;UC Berkeley的开源项目clipper,支持部署不同框架的DL模型,同时提供版本管理,clipper能够很好地适应多种常见的深度学习框架(torch、keras、tensorflow、spark、caffe等),并且以动态大小的批处理方式处理预测请求;Google的tenserflow serving是部署tensorflow DL模型的预测服务系统,可以很好地配置tensorflow模型并使用GPU资源加速,并且使用固定大小的批处理策略降低模型调度的代价。

发明内容

本发明公开了一种优化深度学习预测服务系统的方法,解决了在预测服务系统中,不同DL模型对核心硬件资源的竞争造成实际预测用时不稳定的问题,以稳定预测服务系统的服务质量。

1.技术方案

深度学习预测服务系统(如附图1)响应一次预测请求的过程如下:

(1)用户层的应用通过网络向预测服务系统发起预测请求;

(2)预测服务系统根据请求的应用,将请求数据添加到对应的DL模型任务队列中;

(3)在DL模型完成时,预测服务系统取出任务队列中的数据,并且调用DL模型对数据进行计算得到预测结果,完成后预测服务系统将结果返回给用户层应用;

一个预测请求的SLO(Service Level Object)时间(用户层的应用发出预测请求到返回结果的时间)可以粗粒度分为三段,网络时延,排队时延,预测时延。预测服务系统内部的时延为后两段,而排队时延也取决于前一次对DL模型调用的响应时间,前一次调用越快返回结果,下一次的任务排队时间相应也会减少。

由于不同的用户层的应用对预测请求的用时限制是不同的,附图1中所示的预测服务系统,一个用户层的应用对应一个DL模型。用户层的应用对应的DL模型是以相同的优先级运行在操作系统中,同等权限地共享硬件资源,而共享就会有竞争发生。假如在某一次预测请求中,某个DL模型运行时大量消耗了核心硬件资源(CPU核心、高速缓存、内存带宽),预测请求的实际用时满足了SLO时间,此时另一个DL模型可使用的核心硬件资源可能就会变得很少,使得预测用时远远超过SLO时间,但如果在这两个DL模型可使用核心硬件资源上做一些限制,减少它们之间的竞争,就可以使DL模型实际预测用时都满足SLO时间,多个DL模型同时运行则更需要减少竞争。

本发明的技术方案如系统框架如图2所示,核心思想就是减少DL模型对硬件资源的竞争。相较于框架图1中各个DL模型共享所有硬件资源,本技术方案将硬件资源划分为多个资源池Pool(逻辑资源池,是部分硬件资源的集合),DL模型能独占被分配的资源池内的硬件资源,降低对硬件资源竞争的概率。在通用预测服务系统中增加一个模型服务质量感知模块,感知模块可从服务系统中读取模型的元信息,主要是获取DL模型每次做预测的时间。感知模块将核心硬件资源划分成多个资源池,并调整资源池与DL模型的对应,实现硬件级别的隔离,某个DL模型不会大量抢占其他DL模型的可用硬件资源,以稳定DL的服务质量,使每次预测用时基本相同。在系统运行过程中根据DL模型预测用时以及负载情况动态关联资源池与DL模型,以提升服务质量,并提高硬件的利用率。

2.预测服务系统用中常用的优化策略

在深度学习预测服务系统中,使用GPU硬件加速对预测服务系统进行优化是一个常见选项。大多数深度学习模型可以运用GPU的计算能力,在只有一个DL模型工作时,运行在GPU上可以比在CPU上提供更高的并行加速。但DL模型运行在GPU上是独占式的工作方式,某个时间段只能有一个模型在GPU上运行,此外GPU上模型的调度还涉及到大量的CPU内存数据与GPU内存数据的交换。在多个深度学习模型共享同一块GPU做预测任务时,也会消耗大量时间在数据的换入换出以及模型的等待。因此也有GPU共享方面相关的研究,研究在多个DL模型同时运行时共享GPU,使得多个DL模型都可以得到运行速度上的提升。

深度学习预测服务系统在软件层面的优化技术有批处理策略、动态批处理策略、动态副本策略。

批处理策略:DL模型大都是可以处理多组输入数据,一次计算得到多组输出,一次只计算一组数据可能没有充分发挥DL模型的计算能力,因此将多组预测数据打包成一批,一次计算得到结果来减小预测平均用时。

动态批处理策略:在批处理策略的基础上,每次打包数据的组数是动态变化的,根据上一次的请求返回结果的用时的变化去改变批处理的大小,一般是上次预测用时增加时,批处理大小减半,预测用时减少时,批处理大小增加一个单位,即加性增,乘性减。

动态副本策略:一个DL模型做预测时的吞吐率是有上限的,在服务系统中一个DL模型的吞吐率达到了上限则难以再增加了,这时预测任务的增加则会使一些任务得不到服务,此时可以增加此任务对应的DL模型的副本数,以增加吞吐率,吞吐率下降之后再调整副本数。

以上这些软件层优化策略都只能尽可能地降低预测请求用时的波动,而不能DL模型改变运行时对核心硬件资源竞争,本技术方案通过一定硬件层面的隔离降低竞争。

3.技术方案的实现

附图2中对应本技术方案的实现,增加了一个服务质量感知模块,初始划分硬件资源为不同的资源池Pool,使DL模型独占某个Pool内的资源。感知模块读取DL模型每一次的预测时延和负载情况,自适应地调整Pool大小,和动态调整DL模型和Pool的关联。

初始按照每个模型的输入数据的大小将硬件资源划分为不同的资源池Pool,并分别将Pool与DL模型对应的进程或线程关联,使对应的进程或线程只能使用对应的资源池的硬件资源;

当某个模型运行时延增加到10%以上时,则给这个模型的资源池增加资源,当模型运行时间增加到20%以上,为模型分配一个更大的Pool;

模型时延稳定不变或者请求的数据量减少时,尝试为模型分配到小一点的Pool。

实现技术方案需要计算机硬件支持intel RDT(Resource Director Technology)技术,为资源池Pool分配高速缓存使用到RDT中的CAT(Cache Allocation Technology)技术。首先使用RMID标记DL模型对应的进程,OS或VMM会给每个进程或虚拟机标记一个软件定义的ID,叫做RMID(Resource Monitoring ID),通过RMID可以同时监控运行在多处理器上相互独立的线程,此外线程可以被独立监控,也可以按组的方式进行监控,多个线程可以标记为相同的RMID。

为资源池Pool分配高速缓存,附图3所示,CAT技术中引入了一个中间结构叫做CLOS(Class of Service),是一种资源控制标签。CLOS是MSR Block中的一项,每个CLOS定义了CBM(capacity bit masks),CLOS和CBM一起,确定有多少高速缓存可以被这个CLOS使用。本方案中一个资源池Pool配置一个CLOS来确定Pool内由多少可使用的高速缓存。

CAT技术通过设置关联RMID与CLOS的寄存器IA32_PQR_ASSOC(MSR),如附图4,则可以为RMID标签对应的进程设置CLOS中可使用的高速缓存分区大小。通过高速缓存分配技术功能提供的可伸缩接口可以创建出大量的使用模式,包括对重要应用程序的优先级以及隔离应用程序降低干扰。

附图说明

图1:深度学习预测服务系统框架图

图2:使用优化方案的深度学习系统框架图

图3:CAT技术的CLOS说明图

图4:CAT技术CLOS与RMID关联图

具体实施方式

Intel Xeon(R)E5系列和Gold系列的CPU支持RDT技术。Linux Kernel 4.10引入了Intel RDT实现架构,提供了一系列的资源分配能力,实施的基础硬件:Intel(R)Xeon(R)Gold 5218R CPU。基于操作系统:Ubuntu18.04,内核版本是5.0.0-23-generic。

本发明可以用来优化通用的深度学习预测服务系统,在完成资源池Pool的划分后,只需要将模型对应的操作系统进程pid或者对应的线程id与资源池关联。如:可以用来对clipper预测服务系统或tensorflow serving进行优化。在clipper预测服务系统中,模型运行在容器中,需要将容器内的进程对应到操作系统中的进程,将容器内的所有进程打包分配一个资源池。tensorflow serving的情况则分为两种,当tensorflow serving运行在容器中时,它部署的模型也就运行在容器中,也需要找到容器进程pid与操作系统进程的对应关系。tensorflow serving也可以直接运行在操作系统中,将其模型对应的进程与资源池关联。

1.安装编程基本环境

高速缓存分区技术CAT由intel-cmt-cat工具提供,根据源码编译安装RDT共享动态库,提供C++,Perl,python API。本发明具体使用其中的python API。

2.实现服务质量感知模块

用python编程实现一个感知系统,感知系统的功能是配置资源池pool,并设置pool和DL模型的关联。配置资源池pool,包含CPU核心的ID和高速缓存分区。配置逻辑应用app(对应DL模型),每个app可以关联多个操作系统进程,即用来关联深度学习模型对应的进程。关联app与资源池pool,则app内所有进程可以共享使用资源池pool的CPU核心,高速缓存,内存带宽,而不能使用没有在此资源池中的CPU核心、高速缓存和内存带宽。在运行过程中,感知系统每隔0.5s去读取每个模型上一次预测的用时,判断这个模型的时延是否波动较大,时延增加超过20%,将当前模型app与更大的资源池pool关联,即为这个模型分配了更多的高速缓存或者CPU核心。模型时延有减小的趋势则尝试为这个模型分配稍小的高速缓存和CPU核心。

伪代码如下:

3.实验结果对比

硬件条件:Intel(R)Xeon(R)Gold 5218R CPU,有20个物理核心,每个核心支持两个线程,即有40个逻辑核心,28160K的L3级缓存,32G内存空间。操作系统:Ubuntu18.04,内核版本是5.0.0-23-generic。

实验模型说明:本次实验用到了4个深度学习模型,Keras-mnist,Keras-vgg16,Torch-vgg16,Torch-resnet50。Keras-mnist是基于mnist数据集训练的3个卷积层和4个全连接层构成的神经网络模型,Keras-vgg16是Keras框架中VGG16模型,使用基于IMAGENET数据集预训练的权重参数,Torch-vgg16是基于Pytoch框架的VGG16模型,也是使用IMAGENET预训练的权重参数,Torch-resnet50是基于Pytoch的Resnet50模型,使用IMAGENET预训练的权重参数。

预测请求的数据说明:Keras-mnist模型输入数据的最小单位是28x28x1 Bytes,Keras-vgg16、Torch-vgg16、Torch-resnet50模型输入数据的最小单位是224x224x3x4Bytes。

模型平均批处理大小:本次实验用到的预测服务系统采用了动态批处理策略,若模型一次计算n组输入数据,每组数据为一个最小输入单位,那么批处理大小为n,平均批处理大小指的是对模型所有批处理大小加和求平均值。

模型预测用时:模型进行一次批处理计算所需要的时间,假设模型预测用时(P95)为m,指的是95%的预测用时都小于或等于m;P50表示50%的预测用时,平均用时表示对模型所有预测用时加和求平均值。

预测任务平均用时:预测任务用时表示从预测请求到达预测服务系统,直到服务系统返回结果,对所有的预测任务用时加和求平均,得到预测任务的平均用时。

表格说明:在预测服务系统中部署了4个模型(Keras-mnist、Keras-vgg16、Torch-vgg16、Torch-resnet50),每个模型都只有一个副本,分三种情况测试模型的各项性能数据,分别对应表1、表2和表3。

表1:单独对一个模型进行测试的结果。测试思路为:在其他模型都空闲的情况,对此模型持续发送预测请求,持续5分钟后得到模型的各项性能数据。

表2:测试4个模型同时工作时的性能。思路为对4个模型同时发送预测请求,持续请求5分钟后得到各个模型的性能数据。

表3:使用了本发明方法优化的情况下,测试4个模型同时工作时的各项性能数据。

实验数据对比:表1中各项数据是每个模型的在实验所用的机器上单独运行的最佳表现,所测试的模型几乎能使用计算机的全部硬件资源,但此时计算机硬件资源的利用率是最低的。从表2中的各项数据可以看出,4个模型同时运行并保持忙碌的情况下,模型批处理大小有所降低,预测用时有所增加,但此时硬件能达到很高的利用率。表2的各项数据是预测服务系统的工作时的一般情况。表3与表2中各项数据对比,可以发现模型的批处理大小有所增加,所有模型(Keras-mnist除外)各项预测用时(特别是平均用时)有所减少,Keras-mnist是因为相对于其他3个模型较小的缘故,初始分配的硬件资源过少,导致模型平均预测用时变相对于表2基本没有变化。

使用本方法的优化效果:在部署多个深度学习的预测服务系统中,使用本方法可以降低模型预测的平均用时,并降低模型预测的P95、P50时间,即一定程度上稳定了服务质量,结合预测平均用时和模型平均批处理大小上看,增加了预测服务系统的吞吐率。

表1

表2

表3

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号