在局域网中实现神经网络模型线上服务的方法及装置与流程

文档序号:17162840发布日期:2019-03-20 01:00阅读:243来源:国知局
在局域网中实现神经网络模型线上服务的方法及装置与流程

本公开涉及人工智能技术领域,特别涉及一种在局域网中实现神经网络模型线上服务的方法及装置。



背景技术:

在开发客服机器人的问答系统时,一般会利用深度学习框架来进行问答系统问答模型的构建和离线训练,以提高问答系统开发的效率。但是在深度学习框架上所离线训练得到的问答模型并不能直接用于问答系统的线上服务,因为在深度学习框架上所离线训练得到的问答模型是一个二进制文件,线上服务程序无法直接读取这个二进制文件。

所以为了将离线训练所得到的问答模型用于线上服务,需要进行对问答模型的离线训练文件进行编译,但是编译需要依赖于广域网中版本控制工具中的在线资源比如依赖包。而在研发网络中,可使用的网络资源只有内部的研发网络(即构建的局域网),该研发网络并不能使研发人员使用版本控制工具的在线资源,所以造成在局域网中不能进行编译问答模型的离线训练文件。

由上可知,如何在局域网中实现将离线训练的神经网络模型用于线上服务的问题还有待解决。



技术实现要素:

为了解决相关技术中存在的问题,本公开提供了一种在局域网中实现神经网络模型线上服务的方法及装置。

一种在局域网中实现神经网络模型线上服务的方法,包括:

在广域网中利用版本控制工具的依赖包以及编译工具编译神经网络模型的离线训练文件,得到所述神经网络模型的线上服务文件,所述依赖包是在编译过程中利用所述广域网从所述版本控制工具所对应数据库中下载的;

将所述依赖包、所述编译工具以及所述线上服务文件创建为镜像归档文件,所述镜像归档文件处在所述广域网中的服务器上;

将所创建的所述镜像归档文件从所述广域网的服务器上传输到局域网中的服务器上;

在所述局域网中的服务器上运行所述镜像归档文件以调用所述线上服务文件,实现所述神经网络模型的线上服务。

一种在局域网中实现神经网络模型线上服务的装置,其特征在于,包括:

编译模块,被配置为执行:在广域网中利用版本控制工具的依赖包以及编译工具编译神经网络模型的离线训练文件,得到所述神经网络模型的线上服务文件,所述依赖包是在编译过程中利用所述广域网从所述版本控制工具所对应数据库中下载的;

镜像归档文件创建模块,被配置为执行:将所述依赖包、所述编译工具以及所述线上服务文件创建为镜像归档文件,所述镜像归档文件处在所述广域网中的服务器上;

传输模块,被配置为执行:将所创建的所述镜像归档文件从所述广域网的服务器上传输到局域网中的服务器上;

线上服务文件调用模块,被配置为执行:在所述局域网中的服务器上运行所述镜像归档文件以调用所述线上服务文件,实现所述神经网络模型的线上服务。

通过本公开的技术方案,通过利用广域网的资源进行神经网络模型的离线训练和编译得到所述神经网络模型的线上服务文件,并根据线上服务文件创建镜像归档文件,从而在局域网的服务器上通过加载并运行镜像归档文件来调用神经网络模型的线上服务文件,从而,即使在受到网络访问权限的限制,仍然可以在局域网中实现将离线训练的神经网络模型线上服务,便于研发人员在局域网中上线各种神经网络模型,提高研发效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的在局域网中实现神经网络模型线上服务的方法的流程图;

图2是根据另一示例性实施例示出的在局域网中实现神经网络模型线上服务的方法的流程图;

图3是图1所示实施例的步骤s130的流程图;

图4是图1对应实施例的步骤s170的流程图;

图5是根据一示例性实施例示出的在局域网中实现神经网络模型线上服务的装置的框图;

图6是根据另一示例性实施例示出的在局域网中实现神经网络模型线上服务的装置的框图;

图7是图5所示实施例的模块130的框图;

图8是图5所示实施例的模块170的框图。

具体实施方式

这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种在局域网中实现神经网络模型线上服务的方法的流程图,其中该方法由广域网中的服务器和局域网中的服务器协同执行,即步骤s110-s150由广域网中的服务器作为执行主体执行,而步骤s170由局域网中的服务器作为执行主体执行。如图1所示,该方法可以包括以下步骤:

步骤s110,在广域网中利用版本控制工具的依赖包以及编译工具编译神经网络模型的离线训练文件,得到神经网络模型的线上服务文件,依赖包是在编译过程中利用广域网从版本控制工具所对应数据库中下载的。

在具体实施例中,神经网络模型的离线训练文件是一个二进制文件,而在线上服务时,线上服务程序不能直接读取二进制的离线训练文件中的内容,所以需要通过编译工具进行离线训练文件的编译,使完成离线训练的神经网络模型用于线上服务。

在具体实施例中,通过深度学习框架构建和训练神经网络模型。深度学习框架(即深度学习工具)可以是tensorflow、caffe(convolutionalarchitectureforfastfeatureembedding,卷积神经网络框架)、keras、cntk(computationalnetworktoolkit)等深度学习框架,在此不进行具体限定。下文为了描述方便,以tensorflow学习框架上的实现来进行叙述。

在利用tensorflow完成神经网络模型的训练之后,可以通过tensorflow-serving作为编译工具进行编译神经网络模型的离线训练文件。在具体编译过程中,离线训练文件的编译还需要可再生的代码构建工具bazel、以及版本控制工具git上的依赖包。

其中通过bazel工具可以实现:在程序中某个模块被修改后,保证其他与该模块相关的部分也随之进行修改,从而使模块的修改不会影响模块之间的协调关系。通过版本控制工具git上的依赖包进行离线训练文件编译过程中的代码管理,从而提高编译的效率。依赖包是在编译过程中利用广域网从版本控制工具所对应数据库中下载的,即在编译过程中根据编译需要从版本控制工具的数据库中下载的。

在一示例性实施例中,如图2所示,在步骤s110之前还包括:

步骤s010,在深度学习框架上构建神经网络模型。

步骤s020,通过样本数据进行神经网络模型的离线训练。

步骤s030,完成神经网络模型的离线训练后,从深度学习框架上导出神经网络模型,得到离线训练文件。

以tensorflow作为深度学习框架来进行说明步骤s010-s030,但是本公开的技术方案并不仅限于使用tensorflow进行神经网络模型的构建和训练。在步骤s010中,通过深度学习框架,通过设置神经网络模型的各个神经网络层(例如每层神经元的个数、神经元的类型、神经元的算法等),以完成神经网络模型的构建。其中神经网络模型可以是循环神经网络模型、lstm神经网络模型、卷积神经网络模型等,在此不进行具体限定。神经网络模型可以是用于语义理解、文本分类(例如客服机器人中的问答模型)、图像识别、语音识别等应用场景的模型,在此不进行具体限定。

在进行神经网络模型的离线训练时,通过所获取的样本数据以及样本数据对应的标签进行训练,即在训练过程中调整神经网络模型的参数,直至神经网络模型的数据处理达到要求的精度,则完成神经网络模型的训练,反之,继续进行训练。比如用于文本分类的神经网络模型,在训练之后,如果神经网络模型对文本的分类精度达到要求的精度,则完成训练,反之,继续进行训练。

在完成神经网络模型的离线训练后,神经网络的参数可以满足线上服务时对数据的处理精度。在tensorflow导出所训练的神经网络模型的代码文件,即得到离线训练文件。通过深度学习框架构建和训练神经网络模型,研发人员可以不用关注神经网络模型的代码实现,仅关注神经网络模型的结构和算法,神经网络模型的代码由深度学习框架的服务器实现,从而提高神经网络模型的开发速率。

步骤s130,将依赖包、编译工具以及线上服务文件创建为镜像归档文件,镜像归档文件处在广域网中的服务器上。

在具体实施例中,采用镜像工具创建镜像归档文件,其中镜像工具可以是docker,kubernetes、mesos。通过镜像工具,研发人员可以将应用程序打包在一个可移植的容器当中,然后再发布到任何流行的linux机器上。在本公开的技术方案中,通过镜像工具将神经网络模型的线上服务文件打包在径向工具的可移植容器中,然后将可移植容器中的线上服务文件创建为镜像归档文件,从而可以通过局域网中服务器上的镜像工具加载并运行镜像归档文件,实现神经网络模型的线上服务。为了描述方便,以使用docker作为镜像工具来进行下文的描述。

在一示例性实施例中,如图3所示,步骤s130包括:

步骤s131,利用镜像工具创建依赖包、编译工具以及线上服务文件的镜像。

步骤s132,从镜像工具的存储库中提取所创建的镜像,并将所提取的镜像打包为镜像归档文件。

以使用docker创建镜像来进行说明,但是本公开的技术方案并不限于使用docker来作为镜像工具。在docker的服务端,通过创建镜像名以及对应的容器,通过将依赖包、编译工具以及线上服务文件上传到该镜像名指向的容器中,从而完成镜像的创建。即在其他服务器上,可以通过在镜像工具的存储库中找到该镜像名的容器,通过在镜像工具上运行该容器中的文件即可实现神经网络模型的运行。值得说明的是,其他服务器上直接通过镜像工具运行容器中的文件需要依赖广域网,即通过广域网从镜像工具的存储库中提取该容器中的文件(即提取所创建的镜像)。

在本公开的技术方案中,由于局域网中的服务器受到网络访问限制,不能直接从镜像工具的存储库中提取所创建的镜像。所以需要在广域网中完成镜像的提取,并创建局域网中镜像工具可以运行的镜像归档文件。在docker中,通过dockerpull命令从镜像工具的存储库中提取所创建的镜像,之后通过dockersave命令将镜像保存为tar格式的镜像归档文件。从而在局域网中,通过镜像工具中的dockerload命令进行镜像归档文件的加载并运行。

步骤s150,将所创建的镜像归档文件从广域网的服务器上传输到局域网中的服务器上。

步骤s150可以通过移动存储器件,例如移动硬盘等,也可以通过可以同时访问局域网和广域网的服务进行传输,在此不进行具体限定。

步骤s170,在局域网中的服务器上运行镜像归档文件以调用线上服务文件,实现神经网络模型的线上服务。

通过本公开的技术方案,通过利用广域网的资源进行神经网络模型的离线训练和编译得到神经网络模型的线上服务文件,并根据线上服务文件创建镜像归档文件,从而在局域网的服务器上通过加载并运行镜像归档文件来调用神经网络模型的线上服务文件,从而,即使在受到网络权限的限制,仍然可以在局域网中实现将离线训练的神经网络模型线上服务,便于研发人员在局域网中上线各种神经网络模型,提高研发效率。

在现有技术中,由于局域网中不能直接将离线训练的神经网络模型用于线上服务,所以需要在完成神经网络模型的离线训练之后,需要根据线上服务程序的要求,使用对应的语言(例如c++)重新编写神经网络模型的预测代码,并保证重新编写的预测代码可以兼容神经网络模型的参数的加载。这种方法虽然可靠性高,但是需要大量的时间和人力重新编写预测代码,而且在神经网络模型升级时,如果涉及到预测方法的修改,需要再次改动预测代码。从而使得将离线训练的神经网络模型用于线上服务的工作量大且花费的时间长,而通过本公开的技术方案,可以避免进行预测代码的编写,大大提高模型的上线效率。

在一示例性实施例中,步骤s170之前还包括:

在局域网中的服务器上部署镜像工具,以使镜像工具在局域网中的服务器上运行。

在一示例性实施例中,线上服务文件包括神经网络模型的服务接口信息,如图4所示,步骤s170包括:

步骤s171,利用镜像工具加载并运行镜像归档文件,镜像工具运行在局域网中的服务器上。

步骤s172,在运行镜像归档文件的过程中,通过服务接口信息调用线上服务文件,以实现神经网络模型的线上服务。

在具体实施例中,线上服务文件包括grpc协议的服务接口以便于进行线上服务文件中程序的调用。在步骤s172中,模型的线上服务程序通过该grpc协议的服务接口来进行线上服务文件中程序的调用,进而实现神经网络模型的线上服务。

在一示例性实施例中,局域网中设有多台服务器来进行神经网络模型的线上服务,局域网中还设有负载均衡服务器,方法还包括:

在通过局域网中的多台服务器进行神经网络模型的线上服务过程中,利用负载均衡服务器进行均衡分配多台服务器的负载。

在神经网络模型线上服务时处理的数据量较大,例如客服机器人,一方面客服机器人的工作量大,而且需要客服机器人可以快速进行用户所提出问题的回复,要求客服机器人的运算速度快,所以就对运行神经网络模型所对应程序的服务器的要求比较高,而且一般一台服务器并不能满足神经网络模型的线上服务要求,所以需要布置多台服务器来进行神经网络模型的线上服务。通过采用负载均衡服务器来均衡分配各个服务器的负载,可以保证神经网络模型线上服务的效果,并保证服务器平稳运行,降低服务器因超负荷运行发生运行故障的概率。

下述为本公开装置实施例,对于本公开装置实施例中未披露的细节,请参照本公开在局域网中实现神经网络模型线上服务的方法实施例。

图5是根据一示例性实施例示出的一种在局域网中实现神经网络模型线上服务的装置的框图,该装置可以用于执行图1-图4任一所示的在局域网中实现神经网络模型线上服务的方法的全部或者部分步骤。如图5所示,该装置包括但不限于:编译模块110、镜像归档文件创建模块130、传输模块150以及线上服务文件调用模块170,其中:

编译模块110,被配置为执行:在广域网中利用版本控制工具的依赖包以及编译工具编译神经网络模型的离线训练文件,得到神经网络模型的线上服务文件,依赖包是在编译过程中利用广域网从版本控制工具所对应数据库中下载的。

镜像归档文件创建模块130,该模块与编译模块110连接,被配置为执行:将依赖包、编译工具以及线上服务文件创建为镜像归档文件,镜像归档文件处在广域网中的服务器上。

传输模块150,该模块与镜像归档文件创建模块130连接,被配置为执行:将所创建的镜像归档文件从广域网的服务器上传输到局域网中的服务器上。

线上服务文件调用模块170,该模块与传输模块150连接,被配置为执行:在局域网中的服务器上运行镜像归档文件以调用线上服务文件,实现神经网络模型的线上服务。

在一示例性实施例,如图6所示,在局域网中实现神经网络模型线上服务的装置还包括:

神经网络模型构建模块010,被配置为执行:在深度学习框架上构建神经网络模型。

离线训练模块020,被配置为执行:通过样本数据进行神经网络模型的离线训练。

离线训练文件获取模块030,被配置为执行:完成神经网络模型的离线训练后,从深度学习框架上导出神经网络模型,得到离线训练文件。

在一示例性实施例中,镜像归档文件创建模块130包括:

镜像创建单元131,被配置为执行:利用镜像工具创建依赖包、编译工具以及线上服务文件的镜像。

镜像归档文件创建单元132,被配置为执行:从镜像工具的存储库中提取所创建的镜像,并将所提取的镜像打包为镜像归档文件。

在一示例性实施例中,在局域网中实现神经网络模型线上服务的装置还包括:

部署模块,被配置为执行:在局域网中的服务器上部署镜像工具,以使镜像工具在局域网中的服务器上运行。

在一示例性实施例中,离线训练文件包括神经网络模型的服务接口信息,如图8所示,线上服务文件调用模块170包括:

加载和运行单元,被配置为执行:利用镜像工具加载并运行镜像归档文件,镜像工具运行在局域网中的服务器上;

调用单元,被配置为执行:在运行镜像归档文件的过程中,通过服务接口信息调用线上服务文件,以实现神经网络模型的线上服务。

在一示例性实施例中,局域网中设有多台服务器来进行神经网络模型的线上服务,局域网中还设有负载均衡服务器,在局域网中实现神经网络模型线上服务的装置还包括:

均衡分配模块,被配置为执行:在通过局域网中的多台服务器进行神经网络模型的线上服务过程中,利用负载均衡服务器进行均衡分配多台服务器的负载。

上述装置中各个模块/单元的功能和作用的实现过程具体详见上述在局域网中实现神经网络模型线上服务的方法中对应步骤的实现过程,在此不再赘述。

可以理解,这些模块/单元可以通过硬件、软件、或二者结合来实现。当以硬件方式实现时,这些模块可以实施为一个或多个硬件模块,例如一个或多个专用集成电路。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1