掌桥专利:专业的专利平台
掌桥专利
首页

一种基于Tensorflow Serving的模型部署方法及设备、介质

文献发布时间:2023-06-19 09:43:16


一种基于Tensorflow Serving的模型部署方法及设备、介质

技术领域

本申请涉及模型部署技术领域,尤其涉及一种基于TensorFlow Serving的模型部署方法及设备、介质。

背景技术

随着机器学习技术的发展,各种机器学习模型应运而生,由谷歌公司提供的TensorFlow Serving是一个用于机器学习模型serving的高性能开源库,它能够在服务器架构和应用程序接口(Application Program Interface,API)保持不变的情况下,安全地部署新模型并运行试验,简化并加速了从模型到生产的过程。

但现有的Tensorflow Serving在添加新版本模型时,需要重启TensorflowServing服务器,这会导致客户端容易发生服务中断的情况,影响客户的使用体验。

发明内容

本申请实施例提供一种基于Tensorflow Serving的模型部署方法及设备、介质,用以解决现有的Tensorflow Serving在添加新版本模型时,需要重启Tensorflow Serving服务器,导致客户端发生服务中断的问题。

本申请实施例提供的一种基于Tensorflow Serving的模型部署方法,包括:通过Tensorflow训练初始模型,并导出所述初始模型;将所述初始模型部署到TensorflowServing,并进行复制;根据所述初始模型复制的各路径中的模型信息,将目标模型部署到相应的路径中。

在一个示例中,将所述初始模型部署到Tensorflow Serving之前,所述方法还包括:确定TensorFlow Serving中的模型目录可部署的格式;将所述初始模型的格式转换为所述模型目录可部署的格式。

在一个示例中,进行复制,包括:将所述初始模型按照预设条件进行复制,所述预设条件包括复制次数。

在一个示例中,接收客户端的模型调用请求;根据所述模型调用请求,从所述初始模型复制的各路径中,调用相应的模型;通过调用的模型对所述模型调用请求进行处理,并将处理结果返回至客户端。

在一个示例中,调用请求包括模型标识、版本标识;根据所述模型调用请求,从所述初始模型复制的各路径中,调用相应的模型,包括:根据所述模型调用请求中的模型标识,确定所述初始模型复制的各路径中,与所述模型标识匹配的路径;根据所述模型调用请求中的版本标识,从所述匹配的路径中,调用与所述版本标识匹配的模型。

在一个示例中,所述模型调用请求中的版本标识为空时,从所述匹配的路径中,调用最新版本的模型。

在一个示例中,按照预设时间间隔,定期对所述初始模型进行复制。

在一个示例中,初始模型的大小不大于4k。

本申请实施例提供一种基于Tensorflow Serving的模型部署的设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:通过Tensorflow训练初始模型,并导出所述初始模型;将所述初始模型部署到TensorflowServing,并进行复制;根据所述初始模型复制的各路径中的模型信息,将目标模型部署到相应的路径中。

本申请实施例还提供一种基于Tensorflow Serving的模型部署的非易失性计算机存储介质,存储有计算机可执行指令,计算机可执行指令设置为:通过Tensorflow训练初始模型,并导出所述初始模型;将所述初始模型部署到Tensorflow Serving,并进行复制;根据所述初始模型复制的各路径中的模型信息,将目标模型部署到相应的路径中。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本申请实施例通过将初始模型部署到Tensorflow Serving中并复制,在增加新模型、或者需要对已有的模型进行更新时,可直接将新模型或新版本部署到复制的路径中,并在模型调用的过程中,自动识别新版本模型,无需关闭、重启Tensorflow Serving服务,避免了服务端发生服务中断的情况,实现了多模型、多版本的热部署,提高了用户的使用体验。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例提供的一种基于Tensorflow Serving的模型部署方法流程图;

图2为本申请实施例提供的对应于图1的一种基于Tensorflow Serving的模型部署设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

机器学习技术发展的越来越快,各种机器学习模型也应运而生,TensorFlowServing能够在服务器架构和API保持不变的情况下,安全地部署新模型并运行试验,简化并加速了从模型到生产的过程。但现有的Tensorflow Serving在进行新版本的模型部署时,必须重启服务器,导致客户端容易发生服务中断的情况,影响客户的使用体验。

本申请实施例通过将初始模型部署到Tensorflow Serving中并复制,在增加新模型、或者需要对已有的模型进行更新时,可直接将新模型或新版本部署到复制的路径中,并在模型调用的过程中,自动识别新版本模型,无需关闭、重启Tensorflow Serving服务,避免了服务端发生服务中断的情况,实现了多模型、多版本的热部署,提高了用户的使用体验。

下面通过附图对本申请实施例提出的技术方案进行详细的说明。

请参见图1,图1为本申请实施例提供的一种基于Tensorflow Serving的模型部署方法流程图,具体包括以下步骤:

S101:通过Tensorflow训练初始模型,并导出初始模型。

在本申请实施例中,服务端首先使用Tensorflow生成一个初始模型,然后利用Tensorflow对生成的初始模型进行训练,将初始模型训练完毕后,导出训练完成的初始模型。其中,Tensorflow是谷歌研发的可以将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的人工智能学习系统。初始模型的类型不限,具体可以包括分类模型、目标检测模型等,例如烟火检测模型、行人检测模型等。

例如,服务端使用Tensorflow生成一个分类模型,利用Tensorflow对分类模型进行物体检测、图像分类等训练,将分类模型训练完毕后,冻结训练完成的分类模型,然后导出要使用的分类模型。

在本申请实施例中,服务端导出训练完毕的初始模型之后,首先确定TensorFlowServing中的模型目录可以进行部署的格式,然后将初始模型的格式转换为模型目录可以进行部署的格式。

具体的,TensorFlow导出的初始模型是checkpoint格式的,但是TensorflowServing中的servable的模型目录中包括pb格式文件和名称为variables的目录。因此,服务端在将训练完毕的初始模型保存到Tensorflow Serving之前,需要将已经训练完毕的checkpoint格式的初始模型转换为pb格式或者servable要求的其他格式。其中,pb(Protocol Buffer)是谷歌开源的一种数据存储语言,不依赖特定的语言与平台,扩展性极强。

S102:将初始模型部署到Tensorflow Serving,并进行复制。

在本申请实施例中,服务端将转换格式后的初始模型部署到TensorFlow Serving的模型目录对应的文件夹里,并进行复制,以获得若干带有初始模型的模型文件夹。其中,TensorFlow Serving是一个由Google提供的用于机器学习模型serving的高性能开源库,非常适用于大规模运行能够基于真实情况的数据发生动态改变的多重模型。

在本申请实施例中,服务端可根据预先设置好的模型复制的预设条件,对部署到Tensorflow Serving里的初始模型进行复制。预设条件可包括复制次数等。本申请实施例通过复制初始模型,并将复制出来的模型放进模型目录下的文件夹里,可实现利用复制的模型进行占位的目的。

例如,预设条件为复制1000次,则Tensorflow Serving按照复制1000次的条件,将初始模型复制出1000个,将1000个复制出的模型放置到model1~model 1000共1000个文件夹中,每个model文件夹中包括一个初始模型。

在本申请实施例中,初始模型是简单的回归模型,其体积通常较小,只有输入层、隐藏层、输出层,大小不大于4k。本申请实施例通过复制体积较小的初始模型,能够减少对服务器资源的占用,避免资源浪费。

S103:根据初始模型复制的各路径中的模型信息,将目标模型部署到相应的路径中。

在本申请实施例中,服务端在部署新模型、或对已有模型的版本进行更新时,可将待部署的模型(即上述新模型或已有模型的新版本)作为目标模型。然后,服务端可根据初始模型复制的各路径中的模型信息,将目标模型部署到初始模型复制的其中一条路径中。

具体的,每个模型的模型信息均可包括模型标识、版本标识。其中,模型标识用于唯一标识一个模型,版本标识用于唯一标识该模型的一个版本。

于是,服务端在部署目标模型时,可根据初始模型复制的各路径中的模型信息,确定各路径中部署的模型与相应的版本。之后,服务端可根据目标模型的模型标识,确定该目标模型为新模型或者为已有模型的新版本。

若各路径中不存在与目标模型的模型标识相匹配的模型标识,表示目标模型为新模型,则服务端可将目标模型部署到只包含初始模型的路径中,并根据初始模型的默认版本标识,确定该目标模型对应的版本标识。

若各路径中存在与目标模型的模型标识相匹配的模型标识,表示目标模型为已有模型的新版本,则服务端可将目标模型部署到与其模型标识匹配的路径中,并根据已有模型的版本标识,确定该目标模型对应的版本标识。

例如,服务器生成了烟火检测模型的新版本V3.0版本,而且Tensorflow Serving中的model 120文件夹存放的模型类型为烟火检测,则将V3.0版本的烟火检测模型部署到model120文件夹内。服务器生成了一个行人检测模型V1.0,则将V1.0版本的行人检测模型部署到一个空的model文件夹内,并定义该文件夹用于存放的模型类型为行人检测。

其中,服务端在部署目标模型之前,也需要将其格式转换为servable的模型目录可部署的格式,具体可参照上述S102中对初始模型的生成及转换过程,本申请在此不再赘述。

在本申请实施例中,服务端接收来自客户端的模型调用请求,根据模型调用请求,从初始模型复制的各路径中,调用相应版本的模型。然后,服务器通过调用的模型对模型调用请求进行处理,并将处理结果返回至客户端。

在本申请实施例中,服务器根据模型调用请求,从初始模型复制的各路径中,调用相应的模型的具体步骤包括:

客户端发送的模型调用请求包括模型标识、版本标识。服务端根据模型调用请求中的模型标识,确定初始模型复制的各路径中,与模型标识匹配的路径。之后,服务端根据模型调用请求中的版本标识,从匹配的路径中,调用与版本标识匹配的模型,即客户端指定的模型。

服务端确定客户端发送的调用请求中的版本标识为空时,表示客户端未指定特定版本的模型,则服务器从与模型标识匹配的路径中,调用最新版本的模型。

例如,客户端发送的模型调用请求中的模型标识为烟火检测模型,版本标识为V3.0版本。服务器接收模型调用请求后,从存放烟火检测模型的model文件夹里,调用V3.0版本的烟火检测模型。

客户端发送的模型调用请求中的模型标识为烟火检测模型,版本标识为空。服务器接收模型调用请求后,则从存放烟火检测模型的model文件夹里,调用当前最新版本的烟火检测模型。

在本申请实施例中,服务端按照预设时间间隔,定期对初始模型进行复制,以扩大可部署的模型种类与数量。其中,预设时间间隔具体可根据需要设置,本申请对此不做限定。

例如,model文件夹中的model 1~model 1000都已经部署了相应的模型,则服务端需要对初始模型进行再次复制,得到新的文件夹model 1001~model2000,然后再将新模型部署到新生成的model文件夹中。

以上为本申请实施例提供的一种基于Tensorflow Serving的模型部署方法,基于同样的发明思路,本申请实施例还提供了相应的基于Tensorflow Serving的模型部署设备,如图2所示。

图2为本申请实施例提供的对应于图1的基于Tensorflow Serving的模型部署设备的一种结构示意图,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:通过Tensorflow训练初始模型,并导出初始模型;将初始模型部署到Tensorflow Serving,并进行复制;根据初始模型复制的各路径中的模型信息,将目标模型部署到相应的路径中。

本申请的一些实施例提供的对应于图1的一种基于Tensorflow Serving的模型部署的非易失性计算机存储介质,存储有计算机可执行指令,计算机可执行指令设置为:通过Tensorflow训练初始模型,并导出初始模型;将初始模型部署到Tensorflow Serving,并进行复制;根据初始模型复制的各路径中的模型信息,将目标模型部署到相应的路径中。

本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本申请实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 一种基于Tensorflow Serving的模型部署方法及设备、介质
  • 模型部署方法、模型部署装置、终端设备及可读存储介质
技术分类

06120112269313