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

基于深度学习模型的数据处理方法和装置、设备及介质

文献发布时间:2024-04-18 20:01:30


基于深度学习模型的数据处理方法和装置、设备及介质

技术领域

本申请涉及深度学习技术领域,尤其涉及一种基于深度学习模型的数据处理方法和装置、设备及介质。

背景技术

在计算机视觉领域,深度学习模型被广泛应用于执行推理任务。推理任务可以为图像分类、物体检测、实例分割和文字识别等任务。

在部署深度学习模型时,由于对速度、吞吐量等性能指标有较高要求,通常将深度学习模型部署在专门的推理框架上,以提供推理服务。推理框架通常是指一种用于进行推理和逻辑推断的计算机程序或系统,它可以用于推理、推断和决策过程。在硬件平台上,某些推理框架通常不支持NVIDIA GPU以外的其它芯片,例如TensorRT和Triton只支持NVIDIAGPU,OpenVINO仅支持Intel的GPU产品。而这些推理框架仅支持少数模型格式,如TorchServe仅支持Pytorch格式,TensorflowServing仅支持Tensorflow格式,OnnxRuntime仅支持ONNX格式。

现有技术的缺点在于,单一推理框架所支持的少数模型格式只能运行在特定拥有特定芯片的设备上,深度学习模型的应用范围受到限制。

发明内容

本申请实施例的主要目的在于提出一种基于深度学习模型的数据处理方法和装置、设备及介质,旨在实现在异构环境上对多种模型进行调度,以提高推理框架对多种模型格式和多种类型设备的兼容性的技术目标。

为实现上述目的,本申请实施例的第一方面提出了一种基于深度学习模型的数据处理方法,所述方法应用于结点网络的多个结点中的主结点,所述方法包括:

获取模型包,所述模型包包括模型配置文件和模型文件,所述模型配置文件包括芯片信息和模型格式;

基于所述芯片信息和所述结点拥有的芯片对所述结点进行筛选,得到目标结点;

根据所述模型格式和所述模型文件向所述目标结点发送启动服务命令;

通过所述启动服务命令,控制所述目标结点根据所述模型格式从预设的候选镜像选取出目标镜像,并根据所述模型文件启动所述目标镜像的推理服务代码,用于执行推理任务;其中,在每个所述结点运行多个所述候选镜像,在每个所述候选镜像上运行一种模型格式。

在一些实施例,所述基于所述芯片信息与所述结点拥有的芯片对所述结点进行筛选,得到目标结点,包括:

向所述结点发送状态检测指令,由所述结点发送反馈信息;

根据所述反馈信息中的发送结点标识,得到候选结点;

获取所述候选结点拥有的芯片,得到候选芯片;

基于所述芯片信息对所述候选芯片进行选取,得到目标芯片,将所述目标芯片所属的候选结点作为所述目标结点。

在一些实施例,所述方法还包括:

接收目标对象发送的操作指令;其中,所述操作指令包括停止服务命令或者退出服务命令;

将所述停止服务命令发送给所述目标结点,通过所述停止服务命令控制所述目标结点停止运行所述目标镜像;或者将所述退出服务命令发送给各个所述结点,通过所述退出服务命令控制各个所述结点停止运行所述候选镜像。

在一些实施例,所述目标镜像为普通型镜像,所述方法还包括构建所述普通型镜像:

根据所述芯片确定镜像,得到基础镜像;

根据所述模型格式获取第一目标工具软件和第一目标软件包,将所述第一目标工具软件和第一目标软件包安装至所述基础镜像,得到第一初步镜像;

根据所述模型格式获取第一目标推理服务代码,将所述第一目标推理服务代码拷贝至所述第一初步镜像,得到所述普通型镜像;

获取所述普通型镜像的名称,得到普通镜像名称;

将所述普通镜像名称和所述模型格式广播至所述结点网络中的所述结点。

在一些实施例,所述根据所述模型文件启动所述目标镜像的推理服务代码,包括:

将所述模型文件挂载至所述目标镜像的预定位置,启动目标模型;

启动调用接口,通过所述调用接口接收由所述主结点发送对推理任务的第一推理请求,通过所述目标模型执行所述推理请求,得到第一任务推理数据;

通过所述调用接口向所述主结点发送所述第一任务推理数据。

在一些实施例,所述目标镜像为预设型镜像,所述方法还包括构建所述预设型镜像:

根据所述芯片获取镜像,得到基础镜像;

根据预设代码获取目标运行环境和代码依赖库,根据所述模型格式获取第二目标工具软件和第二目标软件包,将所述目标运行环境、所述代码依赖库、所述第二目标工具软件和第二目标软件包安装至所述基础镜像,得到第二初步镜像;

根据所述模型格式获取目标推理服务代码,将所述目标推理服务代码拷贝至所述第二初步镜像,得到所述预设型镜像。

在一些实施例,所述模型包还包括预先设置的目标代码文件;所述启动所述目标镜像的推理服务代码,包括:

所述启动所述目标镜像的推理服务代码,包括:

执行所述目标代码文件中的预设代码,根据所述预设代码的初始化部分,将所述模型文件挂载至所述目标镜像的预定位置,启动目标模型;

启动调用接口,通过所述调用接口接收由所述主结点发送对推理任务的第二推理请求,通过所述目标模型执行所述第二推理请求,得到第二任务推理数据;

通过所述调用接口发送所述第二任务推理数据。

为实现上述目的,本申请实施例的第二方面提出了一种基于深度学习模型的数据处理装置,所述装置应用于结点网络的多个结点中的主结点,所述装置包括:

获取模块,用于获取模型包,所述模型包包括模型配置文件和模型文件,所述模型配置文件包括芯片信息和模型格式;

筛选模块,用于基于所述芯片信息和所述结点拥有的芯片,对所述结点进行筛选,得到目标结点;

发送模块,用于根据所述模型格式和所述模型文件向所述目标结点发送启动服务命令;

启动模块,用于通过所述启动服务命令,控制所述目标结点根据所述模型格式从预设的候选镜像选取出目标镜像,并根据所述模型文件启动所述目标镜像的推理服务代码,用于执行推理任务;其中,在每个所述结点运行多个所述候选镜像,在每个所述候选镜像上运行一种模型格式。

为实现上述目的,本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。

为实现上述目的,本申请实施例的第四方面提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。

本申请提出了基于深度学习模型的数据处理方法和装置、设备及介质。在本申请中,模型包中的模型配置文件包括芯片信息和模型格式,且结点网络中的每个结点拥有某些芯片以及支持某些模型格式。因此,基于模型配置文件中的芯片信息与结点拥有的芯片进行筛选,可以得到目标结点。该目标结点拥有的芯片支持推理任务的执行。由于在每个结点运行多个候选镜像,且在每个候选镜像上运行一种模型格式,因此基于模型配置文件中的模型格式能从目标结点上运行的多个候选镜像中确定目标镜像。然后根据模型文件启动目标镜像的推理服务代码,用于执行推理任务。可见,无论执行推理任务需要哪些芯片和/或模型格式,均可在结点网络中找到合适的目标结点来执行该推理任务,通用性和可用性高。此外,本申请的结点网络中的每个结点都有单独的芯片、以及支持的模型格式,属于一个异构分布式环境,能够运行多种模型格式的推理框架,提升深度学习模型对不同硬件平台和推理框架的兼容性。

附图说明

图1是本申请实施例提供的基于深度学习模型的数据处理方法的流程图;

图2是图1中的步骤102的流程图;

图3是本申请另一实施例提供的基于深度学习模型的数据处理方法的流程图;

图4是本申请另一实施例提供的基于深度学习模型的数据处理方法的流程图;

图5是图1中的步骤104的流程图;

图6是本申请另一实施例提供的基于深度学习模型的数据处理方法的流程图;

图7是本申请另一实施例提供的图1中的步骤104的流程图;

图8是本申请实施例提供的一个应用示例的流程图;

图9是本申请实施例提供的另一个应用示例的流程图;

图10是本申请实施例提供的关于普通型镜像运行的流程图;

图11是本申请实施例提供的关于预设型镜像运行的流程图;

图12是本申请实施例提供的基于深度学习模型的数据处理装置的结构示意图;

图13是本申请实施例提供的电子设备的硬件结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。

需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

首先,对本申请中涉及的若干名词进行解析:

深度学习推理框架:在使用深度学习训练框架完成模型训练后,在生产环境进行部署时,需要使用专门的深度学习推理框架,它们通常提供并发、模型优化加速等功能,并提供HTTP或GRPC等接口以供调用。

人工智能(artificial intelligence,AI):是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学;人工智能是计算机科学的一个分支,人工智能企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能可以对人的意识、思维的信息过程的模拟。人工智能还是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。

图像分类,根据不同类别的目标各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

物体检测,用框标出图像中物体的位置,并给出物体的类别。

实例分割,是目标检测和语义分割的结合,先在图像中将目标检测出来(目标检测,识别图像中存在的内容和检测其位置),然后对每个像素打上标签(语义分割,对图像中的每个像素打上类别标签进行分类)。

文字识别,是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,然后用字符识别方法将形状翻译成计算机文字的过程,即,对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。

本申请实施例提供的基于深度学习模型的数据处理方法和装置、设备及介质,具体通过如下实施例进行说明,首先描述本申请实施例中的基于深度学习模型的数据处理方法。

本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。

人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。

本申请实施例提供的基于深度学习模型的数据处理方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现基于深度学习模型的数据处理方法的应用等,但并不局限于以上形式。

本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

图1是本申请实施例提供的基于深度学习模型的数据处理方法的一个可选的流程图,图1中的方法应用于结点网络的多个结点中的主结点,方法可以包括但不限于包括步骤101至步骤104。

步骤101,获取模型包,模型包包括模型配置文件和模型文件,模型配置文件包括芯片信息和模型格式;

步骤102,基于芯片信息和结点拥有的芯片对结点进行筛选,得到目标结点;

步骤103,根据模型格式和模型文件向目标结点发送启动服务命令;

步骤104,通过启动服务命令,控制目标结点根据模型格式从预设的候选镜像选取出目标镜像,并根据模型文件启动目标镜像的推理服务代码,用于执行推理任务;其中,在每个结点运行多个候选镜像,在每个候选镜像上运行一种模型格式。

需要说明的是,本申请实施例中的结点是指实体机器。在结点上运行镜像,相当于在该结点内分出CPU或内存资源,形成虚拟机。

需要说明的是,镜像可视为一种容器模板,含有启动容器所需的文件系统结构及其内容,是启动容器的基础。镜像是容器的静态视角,容器是镜像的运行状态。镜像可视为一种构建时的结构,而容器可视为一种运行时的结构。本申请实施例中的运行镜像相当于容器。

在一些实施例的步骤101中,模型包可以是程序和文本文件、图片文件等数据的组合。模型包中的文件在启动目标镜像的推理服务时被使用。模型配置文件包括芯片信息和模型格式,芯片为GPU,模型格式包括但不限Pytorch、Tensorflow、ONNX、Mindspore和PaddlePaddle。

在一些实施例的步骤102中,基于芯片信息和结点拥有的芯片,对结点进行筛选,得到目标结点,可以是查找结点网络的多个结点,选择拥有的芯片符合芯片信息的各项数据的结点以作为目标结点。例如,选择与模型配置文件中芯片的型号、工作频率、接口类型信息相一致的结点。

在一些实施例的步骤103中,结点网络的多个结点已经通信连接。主结点向目标结点发送启动服务命令,使得目标结点启动服务进程。

在一些实施例的步骤104中,目标结点上可以同时运行多个镜像,不同镜像之间不会相互影响。

需要说明的是,本申请实施例提供的基于深度学习模型的数据处理方法,可以是一种基于深度学习模型的图像处理方法。具体地,对于实现物体检测功能的推理模型,根据模型格式和模型文件向目标结点发送启动图像物体检测的推理服务命令;通过启动服务命令,控制目标结点根据模型格式从预设的候选镜像选取出目标镜像,并根据模型文件启动目标镜像的图像物体检测的推理服务代码,用于执行图像中的物体检测任务;其中,在每个结点运行多个候选镜像,在每个候选镜像上运行一种模型格式。

在根据模型文件启动目标镜像的推理服务之后,还可以验证推理服务是否正常启动。具体地,对于实现物体检测功能的推理模型,验证推理服务是否正常启动的方法为,上传测试图片并检查图片的推理结果,若测试图片中的物体被正确识别标注,则说明目标镜像的推理服务正常启动。

需要说明的是,异构分布式环境通常指的是由CPU(Central Processing Unit,中央处理器)、GPU(graphics processing unit,图形处理器)、FPGA(Field ProgrammableGate Array,现场可编程门阵列)等不同类型的处理器和加速器组成的系统。在对软件平台的支持上,目前的推理框架仅支持少数模型格式,如TorchServe仅支持Pytorch格式,TensorflowServing仅支持Tensorflow格式,OnnxRuntime仅支持ONNX格式。但是,深度学习模型的更新换代很快,现有的软件平台难以兼容足够多的模型格式。

本申请实施例所示意的步骤101至步骤104,根据结点配置文件筛选目标结点,向目标结点发送启动服务命令,从而控制目标结点选取目标镜像并启动推理服务。每个结点运行多个镜像,在每个镜像上运行一种模型格式。在结点网络的多个结点中,运行多种推理模型并启动相应的推理服务,从而支持异构分布式环境,能在拥有不同芯片架构的设备上,运行多种模型格式的推理框架,提升深度学习模型对不同硬件平台和推理模型的兼容性。

请参阅图2,在一些实施例中,步骤102可以包括但不限于包括步骤201至步骤204:

步骤201,向结点发送状态检测指令,由结点发送反馈信息;

步骤202,根据反馈信息中的发送结点标识,得到候选结点;

步骤203,获取候选结点拥有的芯片,得到候选芯片;

步骤204,基于芯片信息对候选芯片进行选取,得到目标芯片,将目标芯片所属的候选结点作为目标结点。

在一些实施例的步骤201中,结点根据接收到的状态检测指令进行自检,如果结点的自检结果异常,则向主结点发送报错的反馈信息,自检异常的结点不被选为候选结点。

在一些实施例的步骤202中,每一结点对应于唯一的结点标识,反馈信息中含有发送该反馈信息的结点所对应的结点标识。根据反馈信息中的发送结点标识,得到发送反馈信息给主结点的结点,将其作为候选结点。

在一些实施例的步骤203中,在确定候选结点后,每个候选结点的芯片即为候选芯片。

在一些实施例的步骤204中,根据模型配置文件中的芯片信息筛选候选结点,找出符合芯片信息的目标芯片,将目标芯片所属的候选结点作为目标结点。

具体地,异构平台的每个结点具有固定的架构,例如cpu为x86或arm,但是整个平台是由多种不同架构的结点组成。主结点记录所有结点的架构信息。在启动一个推理模型的推理服务时,主结点根据模型包配置文件中的架构信息,使用调度算法选择合适的空闲结点并发送启动服务命令。结点根据模型包配置文件中的模型格式,如pytorch、tensorflow或onnx,选择合适的镜像,并启动推理服务。

本申请实施例所示意的步骤201至步骤204,对候选芯片架构进行筛选的过程中,通过对候选结点进行状态检测,状态检测正常则得到候选结点,提高了从候选结点中选择的目标结点的启动成功率。

请参阅图3,在一些实施例的步骤102之后,该基于深度学习模型的数据处理方法还包括步骤301至步骤302:

步骤301,接收目标对象发送的操作指令;其中,操作指令包括停止服务命令或者退出服务命令;

步骤302,将停止服务命令发送给目标结点,通过停止服务命令控制目标结点停止运行目标镜像;或者将退出服务命令发送给各个结点,通过退出服务命令控制各个结点停止运行候选镜像。

在一些实施例的步骤301中,操作指令包括停止服务命令或者退出服务命令,停止服务命令的功能为停止运行目标结点上的目标镜像从而关闭该镜像的推理服务,退出服务命令的功能为停止运行任一结点上运行的目标镜像从而关闭该镜像的推理服务。

在一些实施例的步骤302中,在收到停止服务命令时,目标结点仅停止运行目标镜像,而目标结点上运行的其他镜像不受影响。

本申请实施例所示意的步骤301至步骤302,停止服务命令根据指定的推理模型停止结点运行的任一推理进程,并且不影响同一结点上运行的其他推理进程,增加了选择数据处理方法的灵活性与运行的多样性。退出程序时,先退出目标结点的目标镜像,再退出主结点,确保程序的正常退出和推理结果的正常保存,避免因为单独退出主结点程序而失去对目标结点的控制。

请参阅图4,目标镜像为普通型镜像,在一些实施例的步骤104之后,该基于深度学习模型的数据处理方法还包括构建普通型镜像,即包括步骤401至步骤405:

步骤401,根据芯片确定镜像,得到基础镜像;

步骤402,根据模型格式获取第一目标工具软件和第一目标软件包,将第一目标工具软件和第一目标软件包安装至基础镜像,得到第一初步镜像;

步骤403,根据模型格式获取第一目标推理服务代码,将第一目标推理服务代码拷贝至第一初步镜像,得到普通型镜像;

步骤404,获取普通型镜像的名称,得到普通镜像名称;

步骤405,将普通镜像名称和模型格式广播至结点网络中的结点。

在一些实施例的步骤401中,根据芯片确定镜像的一种方法为根据芯片信息选择能运行在该芯片上的镜像,作为基础镜像。

需要说明的是,普通型镜像所支持的模型格式是固定的,比如pth格式和onnx格式。用户只需要提供模型文件与配置文件,不需要提供预设代码文件,模型按照固定方式进行推理,不可改变。

在一些实施例的步骤402中,根据模型格式获取第一目标工具软件和第一目标软件包,将第一目标工具软件和第一目标软件包安装至基础镜像,得到第一初步镜像。

在一些实施例的步骤403中,第一目标推理服务代码为用户,将第一目标推理服务代码拷贝至第一初步镜像,得到普通型镜像。

在一些实施例的步骤404中,普通型镜像的名称在结点网络中是唯一的,除了名称,还可以用其他类型的标识符作为镜像的标识。

在一些实施例的步骤405中,将普通镜像名称和模型格式广播至结点网络中的结点,使主结点接收到镜像部署成功的结点反馈的普通镜像名称和模型格式。

本申请实施例所示意的步骤401至步骤405,通过根据候选芯片架构,构建对应的镜像,不同镜像之间不相互影响,从而在异构的分布式平台上运行,并适用于多种设备与模型格式。

请参阅图5,在一些实施例中,步骤104可以包括但不限于包括步骤501至步骤503:

步骤501,将模型文件挂载至目标镜像的预定位置,启动目标模型;

步骤502,启动调用接口,通过调用接口接收由主结点发送对推理任务的第一推理请求,通过目标模型执行推理请求,得到第一任务推理数据;

步骤503,通过调用接口向主结点发送第一任务推理数据。

在一些实施例的步骤501中,挂载模型文件后启动目标模型。

在一些实施例的步骤502中,不同的镜像执行不同的推理服务,可执行多种推理请求,此处不作限定。

在一些实施例的步骤503中,推理数据汇总到主结点并通过主结点展现给用户。

本申请实施例所示意的步骤501至步骤503,通过对模型文件进行检查,可以确保模型文件没有损坏或错误,从而保证后续推理结果的准确性和可靠性。启动后无需对模型文件进行额外修复或处理,节省了时间和资源,提高了模型的使用效率。

请参阅图6,在一些实施例,目标镜像为预设型镜像,在一些实施例的步骤104之后,该基于深度学习模型的数据处理方法还包括构建预设型镜像,即包括步骤601至步骤603:

步骤601,根据芯片获取镜像,得到基础镜像;

步骤602,根据预设代码获取目标运行环境和代码依赖库,根据模型格式获取第二目标工具软件和第二目标软件包,将目标运行环境、代码依赖库、第二目标工具软件和第二目标软件包安装至基础镜像,得到第二初步镜像;

步骤603,根据模型格式获取目标推理服务代码,将目标推理服务代码拷贝至第二初步镜像,得到预设型镜像。

在一些实施例的步骤601中,预设型镜像所支持的模型格式是可变的,用户可以提供代码文件或可执行文件。预设型镜像调用入口函数启动推理服务,之后可以使用自定义代码进行推理,也可以由用户在镜像内进行任意操作。

需要说明的是,普通型镜像和预设型镜像的主要区别是能否运行自定义代码。预设型镜像配置了与自定义代码对应的运行环境和代码依赖库以支持运行自定义代码。

在一些实施例的步骤602中,对于运行在不同结点上的不同镜像,获取的第二目标工具软件和第二目标软件包也不同。

例如,构建在x86 cpu与nvidia gpu上支持onnx格式的推理镜像,首先在官方docker hub上选择支持上述架构的基础镜像,在该镜像的基础上先安装所需的工具软件,如C++编译器、python解释器、ssh或vim等,再安装代码中依赖的软件包,如opencv或numpy。

在一些实施例的步骤603中,将目标推理服务代码拷贝至第二初步镜像,得到预设型镜像,对应于上述构建在x86 cpu与nvidia gpu上支持onnx格式的推理镜像的例子,具体为,将支持onnx格式的推理服务代码拷贝至镜像中,如有需要则进行编译。将镜像保存并上传至平台内的docker hub中,并将新镜像的名称与支持的模型格式通过广播的方式告知结点网络中的所有结点。

具体地,预设型镜像支持C++和python接口。对应地,“与自定义代码对应的运行环境和代码依赖库”为C++和python的运行环境和代码依赖库。

本申请实施例所示意的步骤601至步骤603,预设型镜像支持使用自定代码对推理模型进行扩展,通过调用预设代码以执行用户扩展功能、构建复杂服务。由于预设型镜像是使用者建立的,其实现的功能相较于普适性功能更贴合特殊的推理应用场景。triton等推理模型也提供python接口以执行用户扩展功能,但triton的预设代码接口非常复杂,对于算法工程师来说难以使用。相对于triton的复杂预设接口,本申请实施例使用了更为简单的预设代码接口,接口具有较少的参数和选项,这有助于减少用户的输入错误从而提高代码的稳定性和可靠性,并提高了用户使用接口的便捷性。此外,triton建立镜像,由于其功能很多,因此镜像很大,部署镜像花费的时间资源和内存资源的成本高。本申请实施例的镜像功能精简,提高推理服务的运行速度,能够在不同镜像间灵活切换。

请参阅图7,在一些实施例中,模型包还包括预先设置的目标代码文件。步骤104的启动目标镜像的推理服务,可以包括但不限于包括步骤701至步骤703:

步骤701,执行目标代码文件中的预设代码,根据预设代码的初始化部分,将模型文件挂载至目标镜像的预定位置,启动目标模型;

步骤702,启动调用接口,通过调用接口接收由主结点发送对推理任务的第二推理请求,通过目标模型执行第二推理请求,得到第二任务推理数据;

步骤703,通过调用接口发送第二任务推理数据。

需要说明的是,预设型镜像可以运行用户提供的预设代码并进行相关操作,并且仅限于在预设型镜像内,不会影响其它镜像或者主机。

在一些实施例的步骤701中,预设代码的初始化部分可以是入口脚本文件。对于预设型镜像,其模型包中不只包含模型文件与配置文件,还包含代码文件或可执行文件。其中,至少需要一个入口脚本文件,该文件位于模型包的根目录,其文件名需要在配置文件中设置(如start.sh)。镜像启动后,首先在配置文件中检查该文件名,如果该文件存在,则执行该文件,并将一些参数(如模型包根目录地址,架构信息等)以命令行形式传入,之后的操作全部交由模型包中的代码控制。所谓格式正确,指配置文件中有入口文件名,并且此文件存在。

在一些实施例的步骤702中,执行第二推理请求的方式根据推理模型的不同而各不相同,本申请实施例对此不加限定。

在一些实施例的步骤703中,通过调用接口发送第二推理数据,可以是通过调用接口向主结点发送第二推理数据。

本申请实施例所示意的步骤701至步骤703,通过调用预设代码接口,执行预设功能,从而构建复杂服务。接口较为简洁,提升了使用的方便性,使得推理更加灵活。

请参阅图8,在一应用示例中,主结点启动后,检测结点网络中的所有结点,发送启动结点的命令,并记录能够正常启动的结点的信息。随后主结点监听用户命令。

如果监听到启动服务的命令,则根据模型配置选择合适结点,向服务对应结点发送启动服务命令。如果监听到停止服务的命令,则向服务对应结点发送停止服务命令。如果监听到退出的命令,向所有结点发出退出命令,主结点结束运行。

请参阅图9,在一应用示例中,子结点启动后,进行自检,如果自检出错则退出,如果正常则监听主结点命令。

如果监听到启动服务的命令,则根据模型配置选择合适镜像,挂载模型文件并启动镜像。如果监听到停止服务的命令,则停止相应镜像。如果监听到退出的命令,则停止子结点上运行的全部镜像。

请参阅图10,在一应用示例中,对于普通型镜像,目标结点检查模型文件,若出错则退出镜像的推理服务,若正常则载入模型,将模型文件挂载至镜像的预定位置,启动HTTP(Hypertext Transfer Protocol,超文本传输协议)或gRPC(PRC为Remote ProcedureCall,远程过程调用,gRPC是一种开源RPC框架)服务。目标结点监听主结点发送的推理请求,执行请求并将结果返回给主结点。

请参阅图11,在一应用示例中,对于预设型镜像,目标结点检查模型文件,若出错则退出镜像的推理服务,若正常则检查自定义程序文件,若自定义程序文件格式正确则执行自定义程序。所谓格式正确,指配置文件中有入口脚本文件名,并且此入口脚本文件存在。若自定义程序文件格式不正确,则退出运行镜像。

请参阅图12,本申请实施例还提供一种基于深度学习模型的数据处理装置,可以实现上述基于深度学习模型的数据处理方法,应用于结点网络的多个结点中的主结点,该装置包括:

获取模块801,用于获取模型包,模型包包括模型配置文件和模型文件,模型配置文件包括芯片信息和模型格式;

筛选模块802,用于基于芯片信息和结点拥有的芯片,对结点进行筛选,得到目标结点;

发送模块803,用于根据模型格式和模型文件向目标结点发送启动服务命令;

启动模块804,用于通过启动服务命令,控制目标结点根据模型格式从预设的候选镜像选取出目标镜像,并根据模型文件启动目标镜像的推理服务代码,用于执行推理任务;其中,在每个结点运行多个候选镜像,在每个候选镜像上运行一种模型格式。

在一实施例中,基于深度学习模型的数据处理装置还包括第一发送模块,用于:

接收目标对象发送的操作指令;其中,操作指令包括停止服务命令或者退出服务命令;

将停止服务命令发送给目标结点,通过停止服务命令控制目标结点停止运行目标镜像;或者将退出服务命令发送给各个结点,通过退出服务命令控制各个结点停止运行候选镜像。

在一实施例中,基于深度学习模型的数据处理装置还包括第一构建模块,用于:构建普通型镜像。

在一实施例中,基于深度学习模型的数据处理装置还包括第二构建模块,用于:构建预设型镜像。

该基于深度学习模型的数据处理装置的具体实施方式与上述基于深度学习模型的数据处理方法的具体实施例基本相同,在此不再赘述。

本申请实施例还提供了一种电子设备,电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述基于深度学习模型的数据处理方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。

图13示意了另一实施例的电子设备的硬件结构,电子设备包括:

处理器901,可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;

存储器902,可以采用只读存储器(Read-Only Memory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(Random Access Memory,RAM)等形式实现。存储器902可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器902中,并由处理器901来调用执行本申请实施例的基于深度学习模型的数据处理方法;

输入/输出接口903,用于实现信息输入及输出;

通信接口904,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;

总线905,在设备的各个组件(例如处理器901、存储器902、输入/输出接口903和通信接口904)之间传输信息;

其中处理器901、存储器902、输入/输出接口903和通信接口904通过总线905实现彼此之间在设备内部的通信连接。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述基于深度学习模型的数据处理方法。

存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本申请实施例提供的基于深度学习模型的数据处理方法和装置、设备及介质,其通过结点配置文件筛选目标结点,向目标结点发送启动服务命令,从而控制目标结点选取目标镜像并启动推理服务。每个结点运行多个镜像,在每个镜像上运行一种模型格式。在结点网络的多个结点中,运行多种推理模型并启动相应的推理服务,从而支持异构分布式环境,能在拥有不同芯片架构的设备上,运行多种模型格式的推理框架,提升深度学习模型对不同硬件平台和推理模型的兼容性。

本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

本领域技术人员可以理解的是,图中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。

本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-On ly Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。

以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。

技术分类

06120116556436