一种人工智能模型动态加载的集群设计方法及集群架构与流程

文档序号:19788209发布日期:2020-01-24 13:53阅读:373来源:国知局
一种人工智能模型动态加载的集群设计方法及集群架构与流程

本发明涉及到人工智能领域,具体地说,是涉及到基于大规模神经网络的服务集群的架构设计方式。



背景技术:

深度学习的神经网络算法目前已经成为当今人工智能领域的主流算法。由于其多层、复杂的模型结构及其反向传播求导的算法特性,当下学术界最先进的模型,例如自然语言处理领域的bert或gpt-2.0等模型都由超过10亿参数变量组成,从而导致模型大小高达数gb。

在实际的工程领域,如果在线上每次对模型进行微调或者使用模型预测都重新将模型从硬盘加载到内存,则会消耗大量时间,严重影响用户线上使用体验。而如果将全部模型持久化加载在服务器内存中,当模型数量过多时则会导致内存溢出问题。例如在一个集群中拥有多台16gb内存的服务器,要求部署20个大小在1gb-4gb不等的深度学习模型,如果采用常规做法,部署模型数量等同的机器,则会造成大量的计算资源浪费,大大增加服务器成本支出。若在单机上随机分布模型,尝试充分利用内存,又会带来的问题是:模型有其流行性,大部分客户可能只访问少部分模型,而当这几种高频使用的模型都部署在同一台机器上时,则会造成gpu或cpu的计算资源拥塞。此外,在服务上线后,如果管理员发现服务资源无法满足用户需求,意图通过增加机器来增加服务资源时,通常的做法只能通过整体重启服务并重新随机加载模型,该做法极大地影响了服务的高可用性。



技术实现要素:

本发明的目的在于解决上述平台架构设计存在的种种不足,通过设计一种全新的模型及服务发现机制,提供一种新的分布式自动加载模型的服务器部署架构。本发明中的模型部署架构可以使得神经网络模型在服务集群中的部署实现全自动化、高并发、高可用、资源自动调配。从而使得服务器资源得到最大程度利用,极大地减小计算、内存资源的浪费。

为了达到上述发明目的,本发明专利提供的技术方案如下:

一种人工智能模型动态加载的集群设计方法,其特征在于,该方法设计一种模型及服务发现机制,通过分布式自动加载模型的服务器部署架构设计,使得神经网络模型在服务集群中实现自动部署,该方法处理环节:

模型发现服务,在模型发现服务中设有第一字典,该第一字典中包含当前服务器和已部署的模型对应关系,当用户在前台页面一键点击部署某个新模型时,模型发现服务收到指令,通过计算服务器在历史时段中的服务器压力情况及内存占用情况,自动将新模型在低压力服务器上执行部署;

机器发现服务,在机器发现服务中保存有第二字典,该第二字典中包含当前在线服务器状态,每隔10秒遍历检查服务集群中每台服务器状态,并更新该第二字典,当发现新服务器加入当前服务集群时,通过获取最高频使用的模型,在内存不超出的情况下,加载到低压力的服务器中;

设计服务健康检查机制,该服务监控检查机制通过所述的机器发现服务每10秒的状态检查,若发现宕机或任务卡死的现象,根据实际情况选择发送报警信息或自动重启服务;

在服务健康检查期间,同时分析每台服务器中每个字段的压力情况,若发现某个字段大量积压任务导致服务集群中个别服务器压力过大,则将自动寻找空闲服务器加载该模型,并在高压力服务器上卸载该模型,并将任务退回消息队列进行重新分发;

使用消息队列作为预测任务传播媒介,使用消息队列作为分发任务的传输媒介,使得不同模型的预测任务分开存储进不同的队列,当某个模型的预测任务队列过于拥堵时,所述的模型发现服务将自动选择空闲服务器加载该模型。

一种人工智能模型动态加载的集群结构,该集群架构包括有用户输入端口、预处理服务器、消息队列服务器、硬盘、服务集群、redis数据库,所述硬盘中存储有多个神经网络模型,所述的服务集群中包含多个模型部署服务器,所述的神经网络模型加载在服务集群中的模型部署服务器中进行人工智能运算,用户通过用户输入端口上传或输入信号,由预处理服务器转发机器可识别处理的代码,通过消息队列服务器分发到不同的模型部署服务器中,由模型部署服务器中的相应模型处理,处理结果输出存储在redis数据库中,其特征在于,该集群架构中还包括有模型/机器发现机制模块,该模型/机器发现机制模块存储在服务集群中单独的服务器内,并在服务器内部以主备服务的形式存在,该模型/机器发现机制模块包含有模型发现服务子模块、机器发现服务子模块、服务健康检查机制子模块和模型卸载子模块:

所述的模型发现服务子模块单独部署在服务集群中,内部以主备服务的形式存在,在所述的模型发现服务子模块中设有第一字典,该第一字典中包含当前服务器和已部署的模型对应关系,用户在前台页面一键点击部署某个新模型,所述的模型发现服务子模块收到指令,通过计算服务器在历史时段中的服务器压力情况及内存占用情况,自动将新模型在低压力服务器上执行部署;

所述的机器发现服务子模块与所述的模型发现服务子模块部署在同一服务器中,机器发现服务子模块中保存有第二字典,该第二字典中包含当前在线服务器状态,每隔10秒遍历检查服务集群中每台模型部署服务器状态,并更新所述的第二字典,当发现新的模型部署服务器加入当前服务集群时,通过获取最高频使用的模型,在内存不超出的情况下,加载到低压力的模型部署服务器中;

所述的服务监控检查机制子模块通过所述的机器发现服务子模块每10秒的状态检查,若发现宕机或任务卡死的现象,根据实际情况选择发送报警信息或自动重启服务,在服务健康检查期间,同时分析每台模型部署服务器中每个字段的压力情况,若发现某个字段大量积压任务导致服务集群中个别模型部署服务器压力过大,所述的卸载模型子模块将自动寻找空闲的模型部署服务器加载该模型,并在高压力的模型部署服务器上卸载该模型,并将任务退回消息队列进行重新分发;

使用消息队列作为预测任务传播媒介,使用消息队列作为分发任务的传输媒介,使得不同模型的预测任务分开存储进不同的队列,当某个模型的预测任务队列过于拥堵时,所述的模型发现服务子模块将自动选择空闲的模型部署服务器加载该模型。

基于上述技术方案,本发明专利一种人工智能模型动态加载的集群设计方法及集群架构经过实践应用取得了如下技术效果:

1.本发明一种人工智能模型动态加载的集群设计方法及基于该方法的架构设计可以使得神经网络模型的上线实现一键部署,减少人为干预,降低人工错误的出现。

2.本发明一种人工智能模型动态加载的集群设计方法及基于该方法的架构设计可以在服务在线时自动检测单个服务器的压力并通过模型发现机制自动调配空闲服务器加载高频使用模型。

3.本发明一种人工智能模型动态加载的集群设计方法及基于该方法的架构设计可以在集群中增加新服务器时自动发现,并按当前或历史记录中高频使用的模型实现动态加载。

4.本发明一种人工智能模型动态加载的集群设计方法及基于该方法的架构设计的服务架构可以使神经网络服务实现高并发、高可用。

附图说明

图1是本发明一种人工智能模型动态加载的集群架构示意图。

图2是本发明一种人工智能模型动态加载的集群设计方法的流程示意图。

具体实施方式

下面我们结合附图和具体的实施例来对本发明专利一种人工智能模型动态加载的集群设计方法及集群架构做进一步的详细阐述,以求更为清楚明了地理解其结构组成和工作流程,但不能以此来限制本发明专利的保护范围。

本发明首先描述的是一种人工智能模型动态加载的集群设计方法,该方法设计一种模型及服务发现机制,通过分布式自动加载模型的服务器部署架构设计,使得神经网络模型在服务集群中实现自动部署。

详细来实现上述思路,本发明的集群设计方法包括有如下处理环节:

模型发现服务,在模型发现服务中设有第一字典,该第一字典中包含当前服务器和已部署的模型对应关系,当用户在前台页面一键点击部署某个新模型时,模型发现服务收到指令,通过计算服务器在历史时段中的服务器压力情况及内存占用情况,自动将新模型在低压力服务器上执行部署。

机器发现服务,在机器发现服务中保存有第二字典,该第二字典中包含当前在线服务器状态,每隔10秒遍历检查服务集群中每台服务器状态,并更新该第二字典,当发现新服务器加入当前服务集群时,通过获取最高频使用的模型,在内存不超出的情况下,加载到低压力的服务器中。

设计服务健康检查机制,该服务监控检查机制通过所述的机器发现服务每10秒的状态检查,若发现宕机或任务卡死的现象,根据实际情况选择发送报警信息或自动重启服务。

在服务健康检查期间,同时分析每台服务器中每个字段的压力情况,若发现某个字段大量积压任务导致服务集群中个别服务器压力过大,则将自动寻找空闲服务器加载该模型,并在高压力服务器上卸载该模型,并将任务退回消息队列进行重新分发。

使用消息队列作为预测任务传播媒介,使用消息队列作为分发任务的传输媒介,使得不同模型的预测任务分开存储进不同的队列,当某个模型的预测任务队列过于拥堵时,所述的模型发现服务将自动选择空闲服务器加载该模型。

如图1所示,本发明专利还涉及到一种人工智能模型动态加载的集群结构。从整体来说,本发明的集群架构包括有用户输入端口、预处理服务器、消息队列服务器、硬盘、服务集群、redis数据库,所述硬盘中存储有多个神经网络模型,所述的服务集群中包含多个模型部署服务器,所述的神经网络模型加载在服务集群中的模型部署服务器中进行人工智能运算,用户通过用户输入端口上传或输入信号,由预处理服务器转发机器可识别处理的代码,通过消息队列服务器分发到不同的模型部署服务器中,由模型部署服务器中的相应模型处理,处理结果输出存储在redis数据库中。本发明专利申请的创新之处还在于,该集群架构中还包括有模型/机器发现机制模块,该模型/机器发现机制模块存储在服务集群中单独的服务器内,并在服务器内部以主备服务的形式存在,该模型/机器发现机制模块包含有模型发现服务子模块、机器发现服务子模块、服务健康检查机制子模块和模型卸载子模块。

在上述的模型发现服务子模块单独部署在服务集群中,内部以主备服务的形式存在,在所述的模型发现服务子模块中设有第一字典,该第一字典中包含当前服务器和已部署的模型对应关系,用户在前台页面一键点击部署某个新模型,所述的模型发现服务子模块收到指令,通过计算服务器在历史时段中的服务器压力情况及内存占用情况,自动将新模型在低压力服务器上执行部署。

在上述的机器发现服务子模块与所述的模型发现服务子模块部署在同一服务器中,机器发现服务子模块中保存有第二字典,该第二字典中包含当前在线服务器状态,每隔10秒遍历检查服务集群中每台模型部署服务器状态,并更新所述的第二字典,当发现新的模型部署服务器加入当前服务集群时,通过获取最高频使用的模型,在内存不超出的情况下,加载到低压力的模型部署服务器中。

上述的服务监控检查机制子模块通过所述的机器发现服务子模块每10秒的状态检查,若发现宕机或任务卡死的现象,根据实际情况选择发送报警信息或自动重启服务,在服务健康检查期间,同时分析每台模型部署服务器中每个字段的压力情况,若发现某个字段大量积压任务导致服务集群中个别模型部署服务器压力过大,所述的卸载模型子模块将自动寻找空闲的模型部署服务器加载该模型,并在高压力的模型部署服务器上卸载该模型,并将任务退回消息队列进行重新分发。

本发明专利中还使用消息队列作为预测任务传播媒介,使用消息队列作为分发任务的传输媒介,使得不同模型的预测任务分开存储进不同的队列,当某个模型的预测任务队列过于拥堵时,所述的模型发现服务子模块将自动选择空闲的模型部署服务器加载该模型。

以下用一个具体的实施例来详细描述本发明专利的集群架构组成以及基于该集群架构来实现人工智能模型的动态加载方法。

实施例1

本实施例是一种基于上述方法和系统的文本挖掘任务。本实施例中对系统的需求在于:由用户上传一批合同文件,希望挖掘出甲方、乙方信息、合同生效时间、合同具体条款等字段内容。文本中每个字段对应一个深度学习神经网络模型。假设该任务有40个字段,即有40个神经网络模型。硬件方面主要是服务器:数量要求为4台服务器。其处理流程如图2所示:

步骤1.用户在页面点击“模型上线”,此时模型/机器发现机制将自动检测模型总数和服务器个数,通过计算内存占用率实现初始化加载。例如模型1-10加载进服务器a;模型11-20加载进服务器b;模型21-30加载进服务器c;模型31-40加载进服务器d。

步骤2.当用户上传一批文件后,预处理服务器将进行一系列文本处理工作,清洗出适合模型读取的文本结构。将文本切分成5000字左右的小任务,依次传入消息队列,每个字段一份。此时消息队列服务中应有20个队列,分别对应着20个字段,每个队列都挖掘一遍用户上传的所有文档。

步骤3.模型部署服务器此时将从对应的消息队列里拉取对应任务,开始执行挖掘任务。

步骤4.此时管理员发现4台服务器加载过高,决定增加4台服务器。机器发现服务在10秒后发现新加入集群的4台机器,通过分析当前各字段的总任务数,决定将剩余任务数最多的字段模型加载进新的机器。

步骤5.假设模型10预测速度比其余字段都长,并且机器a的负载过重。服务健康检查机制发现这一现象后,会在未加载10号模型的机器上加载10号模型,从消息队列中拉取10号模型的相关任务。同时卸载a机器中的10号模型,如有正在进行的任务,该任务会自动被退回消息队列供其他服务器消费。

毫无疑问,以上只是本发明专利人工智能模型动态加载的集群架构的一种具体应用案例,该案例中应用到了新的专利系统架构和实现方式,体现了其实践价值,但除此之外本发明专利的设计方法和架构设计还能够有多种表现形式和应用场景。总而言之,本发明的保护范围还包括其他对于本领域技术人员来说显而易见的变换和替代。

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