一种数据调用方法、装置、设备及介质与流程



1.本发明涉及人工智能领域,特别涉及一种数据调用方法、装置、设备及介质。


背景技术:



2.随着人工智能(ai,artificial intelligence)逐渐发展和普及,使用深度学习网络完成各种任务的需求越来越多,如何在实际生产环境中快速、稳定运行训练好的模型成为人工智能应用落地的关键点之一,ai部署的目标是使得训练好的深度学习网络模型在特定硬件平台上顺利运行,并保证模型的高精度、低延迟和稳定性,基于ai部署需求,各大硬件厂商针对自家硬件平台推出了对应的部署工具,比如英特尔的openvino、英伟达的tensorrt等,以便于深度学习模型在英特尔cpu(central processing unit,中央处理器)平台和英伟达gpu(graphics processing unit,图形处理器)平台开展推理任务。tensorrt是现有的一种用于在英伟达图形处理单元上部署深度学习应用程序的框架。tensorrt根据模型网络的定义以及用户设置的优化选项执行优化并构建推理引擎(inference engine),然后以序列化格式保存该推理引擎以供后续部署。链接tensorrt库,在对应硬件平台上将序列化文件进行反序列化为一个推理引擎等待输入数据到达,即可完成深度学习模型在特定平台的部署,现有技术仅针对英伟达图形处理单元部署使用,不支持其他深度学习处理器,无法实现深度学习模型多平台部署。此外,tensorrt目前为半开源状态,不利于深度开发。
3.由上可见,在数据调用的过程中,如何实现深度学习模型多平台部署,支持其他深度学习处理器,提高数据调用的效率是本领域有待解决的问题。


技术实现要素:



4.有鉴于此,本发明的目的在于提供一种数据调用方法、装置、设备及介质,能够实现深度学习模型多平台部署,支持其他深度学习处理器,提高数据调用的效率。其具体方案如下:
5.第一方面,本技术公开了一种数据调用方法,包括:
6.对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图;
7.对所述计算子图进行向量化处理,以得到张量表示,确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码
8.利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。
9.可选的,所述对预先获取的模型进行抽象转换,以得到计算图,包括:
10.利用python脚本实现的预设前端解释器对预先获取的模型进行抽象转换,以得到计算图;其中,所述计算图中包括算子和数据流信息;
11.将所述计算图以torchscript格式保存至本地。
12.可选的,所述对所述计算图进行图像分割优化,以得到各计算子图,包括:
13.对所述计算图进行常量折叠操作和算子融合操作,以得到操作后的图像;
14.对所述操作后的图形进行分割,以得到各计算子图。
15.可选的,所述对所述计算子图进行向量化处理,以得到张量表示,包括:
16.利用开源框架tvm中的autotvm对所述计算子图进行循环分块操作和向量化处理,以得到张量表示。
17.可选的,所述确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码,包括:
18.确定出张量表示的类型;
19.根据所述张量表示的类型从预设的代码模块库中筛选出与所述张量表示的类型相对应的目标代码。
20.可选的,所述利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,包括:
21.利用所述目标代码对所述张量表示进行语言转化处理,以得到底层代码,并确定出与所述张量表示的类型相对应的编译器和算子内核;
22.将所述底层代码发送至所述编译器进行编译处理,以得到二进制文件,并将所述二进制文件以动态链接库的格式保存至与所述张量表示的类型相对应的算子内核。
23.可选的,所述以便服务端对所述二进制文件中的数据进行调用,包括:
24.服务端根据业务需求确定出处理器,建立与所述处理器类型相同的所述算子内核之间的连接关系,以便所述服务端根据所述连接关系对所述算子内核中所述二进制文件中的数据进行调用。
25.第二方面,本技术公开了一种数据调用装置,包括:
26.图像分割模块,用于对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图;
27.目标代码确定模块,用于对所述计算子图进行向量化处理,以得到张量表示,确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码;
28.数据调用模块,用于利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。
29.第三方面,本技术公开了一种电子设备,包括:
30.存储器,用于保存计算机程序;
31.处理器,用于执行所述计算机程序,以实现前述的数据调用方法。
32.第四方面,本技术公开了一种计算机存储介质,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的数据调用方法的步骤。
33.可见,本技术提供了一种数据调用方法,包括对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图;对所述计算子图进行向量化处理,以得到张量表示,确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码;利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所
述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。本发明技术方案基于编译器原理,开发了一种端到端的部署流程来实现深度学习模型的自动优化以及多平台部署,能够解决当前定制化ai部署工具硬件平台适用面窄的痛点。在一些复杂生产环境中,比如单一种类的人工智能处理器资源不够,或者对模型不能全面支持等,可通过本方案将模型部署在多种处理器上,并通过自动化性能调优保证每种处理器上的推理性能,本方法的技术关键点在于提供了一种端到端的部署流程来实现深度学习模型的自动优化以及多平台远程部署。本技术提供的人工智能多平台部署方案具有良好的扩展性:对前端解释器进行扩展,可以支持多种深度学习训练框架,对与目标平台相关的特定优化以及代码生成进行扩展,可以支持多种人工智能处理器。
附图说明
34.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
35.图1为本技术公开的一种数据调用方法流程图;
36.图2为本技术公开的一种数据调用方法流程图;
37.图3为本技术公开的一种矩阵乘算子的张量表示示例图;
38.图4为本技术公开的一种bang c代码示例图;
39.图5为本技术公开的一种矩阵乘算子的张量表示等价变换示例图;
40.图6为本技术公开的一种数据调用方法的具体流程图;
41.图7为本技术公开的一种数据调用装置结构示意图;
42.图8为本技术提供的一种电子设备结构图。
具体实施方式
43.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.随着人工智能(ai,artificial intelligence)逐渐发展和普及,使用深度学习网络完成各种任务的需求越来越多,如何在实际生产环境中快速、稳定运行训练好的模型成为人工智能应用落地的关键点之一,ai部署的目标是使得训练好的深度学习网络模型在特定硬件平台上顺利运行,并保证模型的高精度、低延迟和稳定性,基于ai部署需求,各大硬件厂商针对自家硬件平台推出了对应的部署工具,比如英特尔的openvino、英伟达的tensorrt等,以便于深度学习模型在英特尔cpu(central processing unit,中央处理器)平台和英伟达gpu(graphics processing unit,图形处理器)平台开展推理任务。tensorrt是现有的一种用于在英伟达图形处理单元上部署深度学习应用程序的框架。tensorrt根据模型网络的定义以及用户设置的优化选项执行优化并构建推理引擎(inference engine),
然后以序列化格式保存该推理引擎以供后续部署。链接tensorrt库,在对应硬件平台上将序列化文件进行反序列化为一个推理引擎等待输入数据到达,即可完成深度学习模型在特定平台的部署,现有技术仅针对英伟达图形处理单元部署使用,不支持其他深度学习处理器,无法实现深度学习模型多平台部署。此外,tensorrt目前为半开源状态,不利于深度开发。由上可见,在数据调用的过程中,如何实现深度学习模型多平台部署,支持其他深度学习处理器,提高数据调用的效率是本领域有待解决的问题。本发明技术方案基于编译器原理,开发了一种端到端的部署流程来实现深度学习模型的自动优化以及多平台部署,能够解决当前定制化ai部署工具硬件平台适用面窄的痛点。在一些复杂生产环境中,比如单一种类的人工智能处理器资源不够,或者对模型不能全面支持等,可通过本方案将模型部署在多种处理器上,并通过自动化性能调优保证每种处理器上的推理性能,本方法的技术关键点在于提供了一种端到端的部署流程来实现深度学习模型的自动优化以及多平台远程部署。本技术提供的人工智能多平台部署方案具有良好的扩展性:对前端解释器进行扩展,可以支持多种深度学习训练框架,对与目标平台相关的特定优化以及代码生成进行扩展,可以支持多种人工智能处理器。
45.参见图1所示,本发明实施例公开了一种数据调用方法,具体可以包括:
46.步骤s11:对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图。
47.本实施例中,利用python脚本实现的预设前端解释器对预先获取的模型进行抽象转换,以得到计算图;其中,所述计算图中包括算子和数据流信息,然后将所述计算图以torchscript格式保存至本地,可以理解的是,将不同深度学习框架下训练出来的模型通过一个python脚本实现的前端解释器转换为一种自定义的较为通用的抽象中间表示,比如计算图。计算图中包含了序列化的算子以及数据流信息。pytorch框架下训练的模型以torchscript格式保存,其中包含的图(graph)通过前端解释器转换成自定义的计算图表示,以方便后续处理。
48.本实施例中,在对预先获取的模型进行抽象转换以得到计算图之后,对所述计算图进行常量折叠操作和算子融合操作,以得到操作后的图像,对所述操作后的图形进行分割,以得到各计算子图,也就是说,对转换得到的计算图进行一系列优化,由于计算图与最终部署的平台无关,因此计算图的优化对不同平台来说是通用的。常用的计算图优化策略包括常量折叠、算子融合等,作用于算子层面,相当于对计算图进行等价变换以达到减小计算和内存开销、加快推理速度的目的,然后对序列化的计算图进行分割,生成多个计算子图,以便实现同一模型的多平台部署。
49.步骤s12:对所述计算子图进行向量化处理,以得到张量表示,确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码。
50.步骤s13:利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。
51.本实施例中,对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图;对所述计算子图进行向量化处理,以得到张量表示,确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码;利用所述
目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。本技术基于编译器原理开发一种端到端的部署流程来实现深度学习模型的自动优化以及多平台远程部署,能够解决当前定制化ai部署工具硬件平台适用面窄的痛点,在一些复杂生产环境中,比如单一种类的人工智能处理器资源不够,或者对模型不能全面支持等,可通过本方案将模型部署在多种处理器上,并通过自动化性能调优保证每种处理器上的推理性能。本发明技术方案基于编译器原理,开发了一种端到端的部署流程来实现深度学习模型的自动优化以及多平台部署,能够解决当前定制化ai部署工具硬件平台适用面窄的痛点。在一些复杂生产环境中,比如单一种类的人工智能处理器资源不够,或者对模型不能全面支持等,可通过本方案将模型部署在多种处理器上,并通过自动化性能调优保证每种处理器上的推理性能,本方法的技术关键点在于提供了一种端到端的部署流程来实现深度学习模型的自动优化以及多平台远程部署。本技术提供的人工智能多平台部署方案具有良好的扩展性:对前端解释器进行扩展,可以支持多种深度学习训练框架,对与目标平台相关的特定优化以及代码生成进行扩展,可以支持多种人工智能处理器。
52.参见图2所示,本发明实施例公开了一种数据调用方法,具体可以包括:
53.步骤s21:对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图。
54.步骤s22:利用开源框架tvm中的autotvm对所述计算子图进行循环分块操作和向量化处理,以得到张量表示,然后确定出张量表示的类型,并根据所述张量表示的类型从预设的代码模块库中筛选出与所述张量表示的类型相对应的目标代码。
55.本实施例中,计算图表示的最小粒度是算子,算子将进一步转换为更细粒度的张量表达形式,比如循环体,如图3所示,循环体中往往包含大量的加减乘除等基本操作,同时伴随频繁的数据读写,在整个推理延迟中占比明显。常见的循环优化包括循环分块、向量化等,图3中的循环体经过分块和向量化后,可以等价变换成如图4中的形式,其中,tvm_bang_load_matrix、tvm_bang_store_matrix、tvm_bang_conv为特定优化器中定义的向量化表示。不同的底层硬件,其存储层次、不同层级存储的容量大小、硬件向量化指令以及并行化能力不同,导致循环计算性能最优时的分块大小、并行度等参数也不同,因此针对循环体的优化依赖于部署平台的底层硬件特性,在优化前需要选定部署平台。此外,为了降低人工调参成本,可以在推理过程中加入开源框架tvm(tensor virtual machine)中的自动调优模块(autotvm)的使用来实现循环分块大小、并行度等最优参数的自动化搜索。autotvm读取待优化的循环体如图3所示,根据不同分块大小在目标平台上的性能对比来选择最佳参数。
56.步骤s23:利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。
57.本实施例中,利用所述目标代码对所述张量表示进行语言转化处理,以得到底层代码,并确定出与所述张量表示的类型相对应的编译器和算子内核;将所述底层代码发送至所述编译器进行编译处理,以得到二进制文件,并将所述二进制文件以动态链接库的格式保存至与所述张量表示的类型相对应的算子内核。
58.具体的,将上述优化后的抽象张量表示一一对应转换成目标硬件支持的语言,比
如针对英伟达图形处理器的cuda c、针对寒武纪人工智能处理器的bang c等,生成的bang c代码如图5所示,图3中的示例代码表示,若目标平台为寒武纪人工智能处理器且选择使用针对寒武纪处理器定义的向量化置零优化(tvm_bang_mlp_init),则该部分张量表示会转换成bang c语言中初始化置零指令(__bang_write_zero)。同样,图4中经过循环分块、向量化优化后的矩阵乘张量表示,会对应处理成bang c中的数据拷贝(__memcpy)、卷积(__bang_conv)指令。生成的底层代码经过寒武纪对应编译器(cncc)编译生成可以运行的二进制文件,并以动态链接库的格式保存以便远程移植。
59.本实施例中,服务端根据业务需求确定出处理器,建立与所述处理器类型相同的所述算子内核之间的连接关系,以便所述服务端根据所述连接关系对所述算子内核中所述二进制文件中的数据进行调用。
60.具体的,将二进制文件分别部署在对应的目标平台上,比如英伟达处理器(gpu)、寒武纪处理器(mlu)。在模型推理时,由主机端对不同处理器上部署的算子内核进行计算调度,不同种类的处理器之间的数据搬运也通过主机端进行中转。
61.本技术的整个多平台部署流程如下图6所示,首先利用python脚本实现的预设前端解释器对预先获取的模型进行抽象转换,以得到计算图,并将所述计算图以torchscript格式保存至本地,然后利用通用优化器对所述计算图进行常量折叠操作和算子融合操作,以得到操作后的图像,对所述操作后的图形进行分割,以得到各计算子图(即子图1和子图2),然后利用开源框架tvm中的autotvm(即特定优化器)分别对所述计算子图进行循环分块操作和向量化处理,以得到张量表示(即张量表示1和张量表示2),然后确定出张量表示的类型,根据所述张量表示的类型从预设的代码模块库中筛选出与所述张量表示的类型相对应的目标代码,利用所述目标代码对所述张量表示进行语言转化处理,以得到底层代码,并确定出与所述张量表示的类型相对应的编译器和算子内核,将所述底层代码发送至所述编译器进行编译处理,以得到二进制文件,并将所述二进制文件以动态链接库的格式保存至与所述张量表示的类型相对应的算子内核,即若张量表示1的类型为gpu,则从预设的代码模块库中筛选出与张量表示1的类型相对应的目标代码,然后利用所述目标代码对所述张量表示1进行语言转化处理,以得到底层代码,确定出与所述张量表示1的类型相对应的编译器和算子内核(即nvcc和gpu算子内核),将所述底层代码发送至nvcc进行编译处理,以得到二进制文件,并将所述二进制文件以动态链接库的格式保存至gpu算子内核,同理,若张量表示2的类型为mlu,则从预设的代码模块库中筛选出与张量表示2的类型相对应的目标代码,然后利用所述目标代码对所述张量表示2进行语言转化处理,以得到底层代码,确定出与所述张量表示2的类型相对应的编译器和算子内核(即cncc和mlu算子内核),将所述底层代码发送至cncc进行编译处理,以得到二进制文件,并将所述二进制文件以动态链接库的格式保存至mlu算子内核,然后服务端根据业务需求确定出处理器,建立与所述处理器类型相同的所述算子内核之间的连接关系,以便所述服务端根据所述连接关系对所述算子内核中所述二进制文件中的数据进行调用,即服务端根据业务需求确定出gpu和mlu,则建立gpu与cpu算子内核之间以及mlu与mlu算子内核之间的连接关系,然后根据所述连接关系对cpus算子内核和mlu算子内核中所述二进制文件中的数据进行调用。
62.本实施例中,利用python脚本实现的预设前端解释器对预先获取的模型进行抽象转换,以得到计算图,并将所述计算图以torchscript格式保存至本地,然后利用通用优化
器对所述计算图进行常量折叠操作和算子融合操作,以得到操作后的图像,对所述操作后的图形进行分割,以得到各计算子图,然后利用开源框架tvm中的autotvm分别对所述计算子图进行循环分块操作和向量化处理,以得到张量表示,然后确定出张量表示的类型,根据所述张量表示的类型从预设的代码模块库中筛选出与所述张量表示的类型相对应的目标代码,利用所述目标代码对所述张量表示进行语言转化处理,以得到底层代码,并确定出与所述张量表示的类型相对应的编译器和算子内核,将所述底层代码发送至所述编译器进行编译处理,以得到二进制文件,并将所述二进制文件以动态链接库的格式保存至与所述张量表示的类型相对应的算子内核,即若张量表示1的类型为gpu,则从预设的代码模块库中筛选出与张量表示1的类型相对应的目标代码,然后利用所述目标代码对所述张量表示1进行语言转化处理,以得到底层代码,确定出与所述张量表示1的类型相对应的编译器和算子内核,将所述底层代码发送至nvcc进行编译处理,以得到二进制文件,并将所述二进制文件以动态链接库的格式保存至gpu算子内核,同理,若张量表示2的类型为mlu,则从预设的代码模块库中筛选出与张量表示2的类型相对应的目标代码,然后利用所述目标代码对所述张量表示2进行语言转化处理,以得到底层代码,确定出与所述张量表示2的类型相对应的编译器和算子内核,将所述底层代码发送至cncc进行编译处理,以得到二进制文件,并将所述二进制文件以动态链接库的格式保存至mlu算子内核,然后服务端根据业务需求确定出处理器,建立与所述处理器类型相同的所述算子内核之间的连接关系,以便所述服务端根据所述连接关系对所述算子内核中所述二进制文件中的数据进行调用,即服务端根据业务需求确定出gpu和mlu,则建立gpu与cpu算子内核之间以及mlu与mlu算子内核之间的连接关系,然后根据所述连接关系对cpus算子内核和mlu算子内核中所述二进制文件中的数据进行调用。
63.参见图7所示,本发明实施例公开了一种数据调用装置,具体可以包括:
64.图像分割模块11,用于对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图;
65.目标代码确定模块12,用于对所述计算子图进行向量化处理,以得到张量表示,确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码;
66.数据调用模块13,用于利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。
67.本实施例中,对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图;对所述计算子图进行向量化处理,以得到张量表示,确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码;利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。本发明技术方案基于编译器原理,开发了一种端到端的部署流程来实现深度学习模型的自动优化以及多平台部署,能够解决当前定制化ai部署工具硬件平台适用面窄的痛点。在一些复杂生产环境中,比如单一种类的人工智能处理器资源不够,或者对模型不能全面支持等,可通过本方案将模型部署在多种处理器上,并通过自动化性能调优保证每种处理器上的推理性能,本方法的技术关键点在于提供了一种端到端的部署流程来实现深
度学习模型的自动优化以及多平台远程部署。本技术提供的人工智能多平台部署方案具有良好的扩展性:对前端解释器进行扩展,可以支持多种深度学习训练框架,对与目标平台相关的特定优化以及代码生成进行扩展,可以支持多种人工智能处理器。
68.在一些具体实施例中,所述图像分割模块11,具体可以包括:
69.利用python脚本实现的预设前端解释器对预先获取的模型进行抽象转换,以得到计算图;其中,所述计算图中包括算子和数据流信息;
70.将所述计算图以torchscript格式保存至本地。
71.在一些具体实施例中,所述图像分割模块11,具体可以包括:
72.对所述计算图进行常量折叠操作和算子融合操作,以得到操作后的图像;
73.对所述操作后的图形进行分割,以得到各计算子图。
74.在一些具体实施例中,所述目标代码确定模块12,具体可以包括:
75.利用开源框架tvm中的autotvm对所述计算子图进行循环分块操作和向量化处理,以得到张量表示。
76.在一些具体实施例中,所述目标代码确定模块12,具体可以包括:
77.确定出张量表示的类型;
78.根据所述张量表示的类型从预设的代码模块库中筛选出与所述张量表示的类型相对应的目标代码。
79.在一些具体实施例中,所述数据调用模块13,具体可以包括:
80.利用所述目标代码对所述张量表示进行语言转化处理,以得到底层代码,并确定出与所述张量表示的类型相对应的编译器和算子内核;
81.将所述底层代码发送至所述编译器进行编译处理,以得到二进制文件,并将所述二进制文件以动态链接库的格式保存至与所述张量表示的类型相对应的算子内核。
82.在一些具体实施例中,所述数据调用模块13,具体可以包括:
83.服务端根据业务需求确定出处理器,建立与所述处理器类型相同的所述算子内核之间的连接关系,以便所述服务端根据所述连接关系对所述算子内核中所述二进制文件中的数据进行调用。
84.本发明技术方案基于编译器原理,开发了一种端到端的部署流程来实现深度学习模型的自动优化以及多平台部署,能够解决当前定制化ai部署工具硬件平台适用面窄的痛点。在一些复杂生产环境中,比如单一种类的人工智能处理器资源不够,或者对模型不能全面支持等,可通过本方案将模型部署在多种处理器上,并通过自动化性能调优保证每种处理器上的推理性能,本方法的技术关键点在于提供了一种端到端的部署流程来实现深度学习模型的自动优化以及多平台远程部署。本技术提供的人工智能多平台部署方案具有良好的扩展性:对前端解释器进行扩展,可以支持多种深度学习训练框架,对与目标平台相关的特定优化以及代码生成进行扩展,可以支持多种人工智能处理器。
85.图8为本技术实施例提供的一种电子设备的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的由电子设备执行的数据调用方法中的相关步骤。
86.本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口
24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
87.另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
88.其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中数据223的运算与处理,其可以是windows、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的数据调用方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223除了可以包括数据调用设备接收到的由外部设备传输进来的数据,也可以包括由自身输入输出接口25采集到的数据等。
89.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
90.进一步的,本技术实施例还公开了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的数据调用方法步骤。
91.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
92.以上对本发明所提供的一种数据调用方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

技术特征:


1.一种数据调用方法,其特征在于,包括:对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图;对所述计算子图进行向量化处理,以得到张量表示,确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码;利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。2.根据权利要求1所述的数据调用方法,其特征在于,所述对预先获取的模型进行抽象转换,以得到计算图,包括:利用python脚本实现的预设前端解释器对预先获取的模型进行抽象转换,以得到计算图;其中,所述计算图中包括算子和数据流信息;将所述计算图以torchscript格式保存至本地。3.根据权利要求1所述的数据调用方法,其特征在于,所述对所述计算图进行图像分割优化,以得到各计算子图,包括:对所述计算图进行常量折叠操作和算子融合操作,以得到操作后的图像;对所述操作后的图形进行分割,以得到各计算子图。4.根据权利要求1所述的数据调用方法,其特征在于,所述对所述计算子图进行向量化处理,以得到张量表示,包括:利用开源框架tvm中的autotvm对所述计算子图进行循环分块操作和向量化处理,以得到张量表示。5.根据权利要求1至4任一项所述的数据调用方法,其特征在于,所述确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码,包括:确定出张量表示的类型;根据所述张量表示的类型从预设的代码模块库中筛选出与所述张量表示的类型相对应的目标代码。6.根据权利要求5所述的数据调用方法,其特征在于,所述利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,包括:利用所述目标代码对所述张量表示进行语言转化处理,以得到底层代码,并确定出与所述张量表示的类型相对应的编译器和算子内核;将所述底层代码发送至所述编译器进行编译处理,以得到二进制文件,并将所述二进制文件以动态链接库的格式保存至与所述张量表示的类型相对应的算子内核。7.根据权利要求6所述的数据调用方法,其特征在于,所述以便服务端对所述二进制文件中的数据进行调用,包括:服务端根据业务需求确定出处理器,建立与所述处理器类型相同的所述算子内核之间的连接关系,以便所述服务端根据所述连接关系对所述算子内核中所述二进制文件中的数据进行调用。8.一种数据调用装置,其特征在于,包括:
图像分割模块,用于对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图;目标代码确定模块,用于对所述计算子图进行向量化处理,以得到张量表示,确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码;数据调用模块,用于利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。9.一种电子设备,其特征在于,包括:存储器,用于保存计算机程序;处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的数据调用方法。10.一种计算机可读存储介质,其特征在于,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据调用方法。

技术总结


本申请公开了一种数据调用方法、装置、设备及介质,涉及人工智能领域,包括:对预先获取的模型进行抽象转换,以得到计算图,然后对所述计算图进行图像分割优化,以得到各计算子图;对所述计算子图进行向量化处理,以得到张量表示,确定出张量表示的类型,并根据所述张量表示的类型确定出相应的目标代码;利用所述目标代码对所述张量表示进行处理,以得到底层代码,并将所述底层代码发送至与所述计算子图的类型相对应的编译器,以得到二进制文件,以便服务端对所述二进制文件中的数据进行调用。通过本申请的上述技术方案,能够实现深度学习模型多平台部署,支持其他深度学习处理器,提高数据调用的效率。高数据调用的效率。高数据调用的效率。


技术研发人员:

王慕雪

受保护的技术使用者:

苏州浪潮智能科技有限公司

技术研发日:

2022.09.28

技术公布日:

2022/12/23

本文发布于:2024-09-25 15:21:20,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/47289.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   张量   算子   代码
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议