CN115794137A - 面向gpu的人工智能模型部署方法及设备 - Google Patents
面向gpu的人工智能模型部署方法及设备 Download PDFInfo
- Publication number
- CN115794137A CN115794137A CN202211550952.1A CN202211550952A CN115794137A CN 115794137 A CN115794137 A CN 115794137A CN 202211550952 A CN202211550952 A CN 202211550952A CN 115794137 A CN115794137 A CN 115794137A
- Authority
- CN
- China
- Prior art keywords
- operator
- layer
- language model
- size
- operators
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 63
- 238000010606 normalization Methods 0.000 claims abstract description 15
- 238000004891 communication Methods 0.000 claims description 7
- 238000011176 pooling Methods 0.000 claims description 5
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000013136 deep learning model Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种面向GPU的人工智能模型部署方法及设备,包括:确定GPU内置NPU支持的算子类型,采用预设编译框架将前端模型转换为期望语言模型,对期望语言模型中的算子进行定位;确定期望语言模型的算子属于所述算子类型,剔除期望语言模型中的预定层,将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层,将卷积层与批标准化层进行组合得到第二单独卷积层;获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,根据其大小确定期望语言模型运行时分配的内存大小;采用GPU编译器和NPU编译器对期望语言模型进行逐层编译并调度执行编译结果,完成模型部署。本发明有利于人工智能模型的泛化性部署。
Description
技术领域
本发明实施例涉及人工智能技术领域,尤其涉及一种面向GPU的人工智能模型部署方法及设备。
背景技术
当前,随着国产GPU替代进程的加速,AI(Artificial Intelligence,即人工智能)计算领域的进一步发展,采用国产显卡进行AI运算需求广泛。一方面AI运算算子众多,AI模型图结构繁杂,另一方面不同硬件结构间差异巨大,在不同芯片上部署各种深度学习模型存在困难,而与之相对应的是在一些国产GPU芯片上广泛存在的AI模型应用需求。因此,开发一种面向GPU的人工智能模型部署方法及设备,可以有效克服上述相关技术中的缺陷,就成为业界亟待解决的技术问题。
发明内容
针对现有技术存在的上述问题,本发明实施例提供了一种面向GPU的人工智能模型部署方法及设备。
第一方面,本发明的实施例提供了一种面向GPU的人工智能模型部署方法,包括:确定GPU内置NPU支持的算子类型,采用预设编译框架将前端模型转换为期望语言模型,对期望语言模型中的算子进行定位;确定期望语言模型的算子属于所述算子类型,剔除期望语言模型中的预定层,将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层,将卷积层与批标准化层进行组合得到第二单独卷积层;获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,根据输入数据尺寸的大小和输出数据尺寸的大小,确定期望语言模型运行时分配的内存大小;采用GPU编译器和NPU编译器对期望语言模型进行逐层编译,采用预设编译框架调度执行编译结果,完成模型部署。
在上述方法实施例内容的基础上,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述对期望语言模型中的算子进行定位,包括:确定期望语言模型中的算子的运算位置处于GPU中或NPU中,并将运算位置记录在map.json文件中;其中,所述期望语言模型为RelayIR语言模型。
在上述方法实施例内容的基础上,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述确定期望语言模型的算子属于所述算子类型,包括:逐层遍历期望语言模型中的算子,判断期望语言模型中一层的算子是否属于卷积算子、最大池化算子、减算子、加算子、乘算子或除算子;若判断结果为是则在map.json文件中添加所述一层的算子的运算设备为Device_NPU并返回;若判断结果为否则在map.json文件中添加所述一层的算子的运算设备为Device_GPU并返回。
在上述方法实施例内容的基础上,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层,包括:对期望语言模型的算子进行遍历,判断算子是否为卷积算子,如果不是卷积算子,则重复对下一个算子进行判断,直到所有的算子遍历完成,如果是卷积算子,则判断该卷积算子的下一个算子是否为加算子或减算子,如果不是则返回,如果是则判断该加算子或减算子的两个输入,是否一个为该卷积算子的输出,另一个为常量,且常量的数据尺寸和该卷积算子的偏置常量具有相同的数据尺寸或常量的数据尺寸为1,如果不是则返回,如果是则若为加算子,取出常量并将卷积层中偏置常量取出相加,更新该卷积算子的偏置常量,剔除该加算子;如果为减算子,则将常量与卷积层中偏置常量相减,更新该卷积算子的偏置常量,剔除该减算子。
在上述方法实施例内容的基础上,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述将卷积层与批标准化层进行组合得到第二单独卷积层,包括:对期望语言模型的算子进行遍历,判断算子是否为卷积算子,如果不是,则重复对下一个算子进行判断,直到所有的算子遍历完成,如果是卷积算子,则判断该卷积算子的下一个算子是否为批标准化算子,如果不是则返回,如果是则获取该卷积算子的卷积核的权重和偏置常量,获取批标准化算子的参数,更改该卷积算子的卷积核的权重和偏置常量,剔除该批标准化算子并返回。
在上述方法实施例内容的基础上,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,包括:根据输入数据尺寸推算出输出数据尺寸,推算第一层的输出数据尺寸,第一层的输入数据尺寸为整个模型的输入数据尺寸,则第一层的输入数据尺寸是固定的,推算输出数据尺寸,如果能够推算出输出数据尺寸则从第二层开始遍历每一层算子,其中上层算子输出数据尺寸,即为当前算子输入数据尺寸,并推算输出数据尺寸,如果能够推算出数据尺寸则返回,否则在前端推理框架推算该对应层的数据尺寸,记录在期望语言模型中并返回;推算完期望语言模型的每层数据尺寸后,采用前端框架推算所对应的前端模型所有层的输入输出前端数据尺寸,检查该前端数据尺寸与期望语言模型所有对应数据尺寸是否相等,如果不相等,则将期望语言模型中的推理数据尺寸替换为前端数据尺寸所对应的数据尺寸。
在上述方法实施例内容的基础上,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述采用GPU编译器和NPU编译器对期望语言模型进行逐层编译,采用预设编译框架调度执行编译结果,完成模型部署,包括:其中标记为Device_NPU可执行的算子,则通过NPU编译器映射至NPU中运算的第一二进制机器码;标记为Device_GPU可执行的算子,则通过GPU编译器映射至GPU中运算的第二二进制机器码;采用TVM编译框架调度执行第一二进制机器码和第二二进制机器码,完成模型部署。
第二方面,本发明的实施例提供了一种面向GPU的人工智能模型部署装置,包括:第一主模块,用于实现确定GPU内置NPU支持的算子类型,采用预设编译框架将前端模型转换为期望语言模型,对期望语言模型中的算子进行定位;第二主模块,用于实现确定期望语言模型的算子属于所述算子类型,剔除期望语言模型中的预定层,将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层,将卷积层与批标准化层进行组合得到第二单独卷积层;第三主模块,用于实现获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,根据输入数据尺寸的大小和输出数据尺寸的大小,确定期望语言模型运行时分配的内存大小;第四主模块,用于实现采用GPU编译器和NPU编译器对期望语言模型进行逐层编译,采用预设编译框架调度执行编译结果,完成模型部署。
第三方面,本发明的实施例提供了一种电子设备,包括:
至少一个处理器;以及
与处理器通信连接的至少一个存储器,其中:
存储器存储有可被处理器执行的程序指令,处理器调用程序指令能够执行第一方面的各种实现方式中任一种实现方式所提供的面向GPU的人工智能模型部署方法。
第四方面,本发明的实施例提供了一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行第一方面的各种实现方式中任一种实现方式所提供的面向GPU的人工智能模型部署方法。
本发明实施例提供的面向GPU的人工智能模型部署方法及设备,通过采用TVM开源编译框架,可以将人工智能模型高效部署在国产GPU芯片上,且对人工智能模型类型的兼容性较强,有利于人工智能模型的泛化性部署。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的面向GPU的人工智能模型部署方法流程图;
图2为本发明实施例提供的面向GPU的人工智能模型部署装置结构示意图;
图3为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,本发明提供的各个实施例或单个实施例中的技术特征可以相互任意结合,以形成可行的技术方案,这种结合不受步骤先后次序和/或结构组成模式的约束,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明的主要目的是提供一套基于TVM(开源的、端到端的深度学习模型编译框架)的AI模型编译、部署方法,该方法也可扩展至其他芯片。基于这种思想,本发明实施例提供了一种面向GPU的人工智能模型部署方法,参见图1,该方法包括:确定GPU内置NPU支持的算子类型,采用预设编译框架将前端模型转换为期望语言模型,对期望语言模型中的算子进行定位;确定期望语言模型的算子属于所述算子类型,剔除期望语言模型中的预定层,将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层,将卷积层与批标准化层进行组合得到第二单独卷积层;获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,根据输入数据尺寸的大小和输出数据尺寸的大小,确定期望语言模型运行时分配的内存大小;采用GPU编译器和NPU编译器对期望语言模型进行逐层编译,采用预设编译框架调度执行编译结果,完成模型部署。可以理解的是,下文以芯动科技“风华1号”显卡为例进行说明,但本发明并不以此为限。
在另一实施例中,GPU内置NPU支持的算子类型需要预定义“风华1号”内置NPU硬件所支持的运算的算子类型为“Conv”(卷积)、“Maxpooling”(最大池化)、“binary_op”(加减乘除)。预设编译框架可以采用TVM编译框架,TVM是一款开源的、端到端的深度学习模型编译框架,用于优化深度学习模型在CPU、GPU、ARM等任意目标环境下的推理运行速度,常见的应用场景包括:需要兼容所有主流模型作为输入,并针对任意类型的目标硬件生成优化部署模型的场景;对部署模型的推理延迟、吞吐量等性能指标有严格要求的场景;需要自定义模型算子、自研目标硬件、自定义模型优化流程的场景。通常采用深度学习框架(Tensorflow,Pytorch,MXNet等)导出的模型作为TVM编译框架的输入,经过该框架内的图优化操作以及算子级的自动优化操作后最终转化为针对目标运行时(CPU/GPU/ARM等)的部署模型,优化后的模型理论上可以最大化地利用目标硬件的资源以最小化模型的推理延迟。
基于上述方法实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述对期望语言模型中的算子进行定位,包括:确定期望语言模型中的算子的运算位置处于GPU中或NPU中,并将运算位置记录在map.json文件中;其中,所述期望语言模型为RelayIR语言模型。
在另一实施例中,通过TVM将前端框架模型(.onnx,.pb,.pt)转换成RelayIR语言模型(即期望语言模型),并预置json格式的map.json文件。其中,RelayIR语言是一种功能多样的编程语言,用于机器学习系统表达的中间表示。RelayIR语言支持代数数据类型、闭包、控制流和递归,从而可以直接表示比基于计算图的IR更复杂的模型。RelayIR语言还包括一种使用类型关系的依赖类型的形式,来处理对参数形状有复杂要求的操作符形状分析。RelayIR语言在设计上是可扩展的,使得机器学习的开发可以很容易地开发新的大型程序转换和优化。
基于上述方法实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述确定期望语言模型的算子属于所述算子类型,包括:逐层遍历RelayIR语言模型中的算子,判断RelayIR语言模型中一层的算子是否属于卷积算子、最大池化算子、减算子、加算子、乘算子或除算子;若判断结果为是则在map.json文件中添加所述一层的算子的运算设备为Device_NPU并返回;若判断结果为否则在map.json文件中添加所述一层的算子的运算设备为Device_GPU并返回。
在另一实施例中,确定期望语言模型的算子属于所述算子类型,包括:步骤1,逐层遍历RelayIR算子,判断该算子是否属于{“Conv”,“Maxpooling”,“Sub”,”Add”,“Mul”,”Div”}中的一个,如果是则执行步骤2,如果不是则执行步骤3;步骤2,在map.json中添加该层算子的运算device为“Device_NPU”并返回步骤1;步骤3,在map.json中添加该层算子的运算device为“Device_GPU”并返回步骤1。
基于上述方法实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层,包括:对RelayIR语言模型的算子进行遍历,判断算子是否为卷积算子,如果不是卷积算子,则重复对下一个算子进行判断,直到所有的算子遍历完成,如果是卷积算子,则判断该卷积算子的下一个算子是否为加算子或减算子,如果不是则返回,如果是则判断该加算子或减算子的两个输入,是否一个为该卷积算子的输出,另一个为常量,且常量的数据尺寸和该卷积算子的偏置常量具有相同的数据尺寸或常量的数据尺寸为1,如果不是则返回,如果是则若为加算子,取出常量并将卷积层中偏置常量取出相加,更新该卷积算子的偏置常量,剔除该加算子;如果为减算子,则将常量与卷积层中偏置常量相减,更新该卷积算子的偏置常量,剔除该减算子。
在另一实施例中,剔除RelayIR语言模型中的Dropout层和Flatten层,然后执行如下步骤:1、对RelayIR中模型进行遍历,判断该模型是否为“Conv”类型的卷积算子,如果不是,则重复对下一个算子进行判断,直到所有的算子遍历完成,如果是“Conv”类型算子,则执行第2步。2、判断该Conv算子的下一个算子是否为“binary_op”中的Add算子或者Sub算子,如果是“binary_op”中的add或者sub算子,则执行第3步,如果不是,则返回至第1步。3、判断该“binary op”算子的两个输入,是否一个为该Conv算子的输出,另一个为AI模型常量constant,且constant的shape和该Conv层的bias常量具有相同的shape或者constant的shape为[1],则执行第4步,如果不是,则返回至第1步。4、如果是Add算子(加算子),取出常量constant,则将Conv层中bias(即偏置常量)取出,bias=bias+constant,更新Conv新的bias,剔除该add算子,如果是Sub算子(减算子),则bias=bias-constant,更新Conv新的bias,剔除该sub算子;执行第5步。5、判断下一个算子是否依旧为“binary_op”算子中的Add算子或者Sub算子,如果是该算子则执行步骤3,如果不是则执行第1步。
基于上述方法实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述将卷积层与批标准化层进行组合得到第二单独卷积层,包括:对RelayIR语言模型的算子进行遍历,判断算子是否为卷积算子,如果不是,则重复对下一个算子进行判断,直到所有的算子遍历完成,如果是卷积算子,则判断该卷积算子的下一个算子是否为批标准化算子,如果不是则返回,如果是则获取该卷积算子的卷积核的权重和偏置常量,获取批标准化算子的参数,更改该卷积算子的卷积核的权重和偏置常量,剔除该批标准化算子并返回。
在另一实施例中,1、对RelayIR语言模型中的算子进行遍历,判断该模型是否为“Conv”类型的卷积算子,如果不是,则重复对下一个算子进行判断,直到所有的算子遍历完成,如果是“Conv”类型的算子,则执行第2步。2、判断该Conv算子的下一个算子是否为“Batch_normalization”(即批标准化),如果是Batch_normalization算子,则执行第3步,如果不是Batch_normalization,则返回至第1步继续遍历。3、获取该卷积层的卷积核的权重和偏置常量参数weight、bias,获取Batch_normalization层的gamma,beta,mean,var,eps参数,则B=beta-mean*M,weight=weight*M,bias=bias+B。其中,mean表示均值,var表示方差,gamma表示第一参数因子,beta表示第二参数因子,eps表示第三参数因子,B表示第一中间变量,M表示第二中间变量。更改卷积层中的weight参数和bias参数,同时去掉该Batch_normalization层,并返回第1步。
基于上述方法实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,包括:根据输入数据尺寸推算出输出数据尺寸,推算第一层的输出数据尺寸,第一层的输入数据尺寸为整个模型的输入数据尺寸,则第一层的输入数据尺寸是固定的,推算输出数据尺寸,如果能够推算出输出数据尺寸则从第二层开始遍历每一层算子,其中上层算子输出数据尺寸,即为当前算子输入数据尺寸,并推算输出数据尺寸,如果能够推算出数据尺寸则返回,否则在前端推理框架推算该对应层的数据尺寸,记录在RelayIR语言模型中并返回;推算完RelayIR语言模型的每层数据尺寸后,采用前端框架推算所对应的前端模型所有层的输入输出前端数据尺寸,检查该前端数据尺寸与RelayIR语言模型所有对应数据尺寸是否相等,如果不相等,则将RelayIR语言模型中的推理数据尺寸替换为前端数据尺寸所对应的数据尺寸。
在另一实施例中,获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,包括:1、预先定义算子shape(即数据尺寸,下同)推理方法,由于每层的算子计算方式固定,根据输入即可推理出输出shape。2、推断第一层的输出shape,由于模型的第一层的输入是整个模型的输入,则其输入shape是固定已知的,根据第1步预定的推断输出shape,如果第1步能够推断出shape则执行第3步,否则执行第4步。3、从模型第二层开始遍历每一层算子,其中上层算子输出shape,即为当前算子输入shape,根据步骤1预定的推断输出shape,如果步骤1能够推断出shape则返回执行第3步,否则执行第4步。4、在前端推理框架(如torch、tensorflow、onnx)推理该对应层的shape,并记录在RelayIR语言模型中,返回第3步。5、推理完RelayIR语言模型的每层shape后,采用前端框架(torch、tensorflow、onnx)推理所对应的前端模型所有的层的输入输出front-shape(即前端数据尺寸),检查该front-shape与RelayIR语言模型的层所有对应shape是否相等,如果不相等,则将RelayIR中的推理shape替换为front-shape所对应的shape。
基于上述方法实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署方法,所述采用GPU编译器和NPU编译器对期望语言模型进行逐层编译,采用预设编译框架调度执行编译结果,完成模型部署,包括:其中标记为Device_NPU可执行的算子,则通过NPU编译器映射至NPU中运算的第一二进制机器码;标记为Device_GPU可执行的算子,则通过GPU编译器映射至GPU中运算的第二二进制机器码;采用TVM编译框架调度执行第一二进制机器码和第二二进制机器码,完成模型部署。
在另一实施例中,将其中标记为“Device_NPU”可执行的算子,通过“风华1号”NPU编译器,直接映射至“风华1号”NPU内部可执行的二进制机器码。对于标记为“Device_GPU”可执行的算子,则通过“风华1号”GPU编译器,形成可以至GPU中运算的二进制机器码。最后,基于TVM编译框架统筹调度执行两种二进制机器码,完成最终部署和运行。
本发明实施例提供的面向GPU的人工智能模型部署方法,通过采用TVM开源编译框架,可以将人工智能模型高效部署在国产GPU芯片上,且对人工智能模型类型的兼容性较强,有利于人工智能模型的泛化性部署。
本发明各个实施例的实现基础是通过具有处理器功能的设备进行程序化的处理实现的。因此在工程实际中,可以将本发明各个实施例的技术方案及其功能封装成各种模块。基于这种现实情况,在上述各实施例的基础上,本发明的实施例提供了一种面向GPU的人工智能模型部署装置,该装置用于执行上述方法实施例中的面向GPU的人工智能模型部署方法。参见图2,该装置包括:第一主模块,用于实现确定GPU内置NPU支持的算子类型,采用预设编译框架将前端模型转换为期望语言模型,对期望语言模型中的算子进行定位;第二主模块,用于实现确定期望语言模型的算子属于所述算子类型,剔除期望语言模型中的预定层,将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层,将卷积层与批标准化层进行组合得到第二单独卷积层;第三主模块,用于实现获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,根据输入数据尺寸的大小和输出数据尺寸的大小,确定期望语言模型运行时分配的内存大小;第四主模块,用于实现采用GPU编译器和NPU编译器对期望语言模型进行逐层编译,采用预设编译框架调度执行编译结果,完成模型部署。
本发明实施例提供的面向GPU的人工智能模型部署装置,采用图2中的若干模块,通过采用TVM开源编译框架,可以将人工智能模型高效部署在国产GPU芯片上,且对人工智能模型类型的兼容性较强,有利于人工智能模型的泛化性部署。
需要说明的是,本发明提供的装置实施例中的装置,除了可以用于实现上述方法实施例中的方法外,还可以用于实现本发明提供的其他方法实施例中的方法,区别仅仅在于设置相应的功能模块,其原理与本发明提供的上述装置实施例的原理基本相同,只要本领域技术人员在上述装置实施例的基础上,参考其他方法实施例中的具体技术方案,通过组合技术特征获得相应的技术手段,以及由这些技术手段构成的技术方案,在保证技术方案具备实用性的前提下,就可以对上述装置实施例中的装置进行改进,从而得到相应的装置类实施例,用于实现其他方法类实施例中的方法。例如:
基于上述装置实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署装置,还包括:第一子模块,用于实现所述对期望语言模型中的算子进行定位,包括:确定期望语言模型中的算子的运算位置处于GPU中或NPU中,并将运算位置记录在map.json文件中;其中,所述期望语言模型为RelayIR语言模型。
基于上述装置实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署装置,还包括:第二子模块,用于实现所述确定期望语言模型的算子属于所述算子类型,包括:逐层遍历RelayIR语言模型中的算子,判断RelayIR语言模型中一层的算子是否属于卷积算子、最大池化算子、减算子、加算子、乘算子或除算子;若判断结果为是则在map.json文件中添加所述一层的算子的运算设备为Device_NPU并返回;若判断结果为否则在map.json文件中添加所述一层的算子的运算设备为Device_GPU并返回。
基于上述装置实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署装置,还包括:第三子模块,用于实现所述将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层,包括:对RelayIR语言模型的算子进行遍历,判断算子是否为卷积算子,如果不是卷积算子,则重复对下一个算子进行判断,直到所有的算子遍历完成,如果是卷积算子,则判断该卷积算子的下一个算子是否为加算子或减算子,如果不是则返回,如果是则判断该加算子或减算子的两个输入,是否一个为该卷积算子的输出,另一个为常量,且常量的数据尺寸和该卷积算子的偏置常量具有相同的数据尺寸或常量的数据尺寸为1,如果不是则返回,如果是则若为加算子,取出常量并将卷积层中偏置常量取出相加,更新该卷积算子的偏置常量,剔除该加算子;如果为减算子,则将常量与卷积层中偏置常量相减,更新该卷积算子的偏置常量,剔除该减算子。
基于上述装置实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署装置,还包括:第四子模块,用于实现所述将卷积层与批标准化层进行组合得到第二单独卷积层,包括:对RelayIR语言模型的算子进行遍历,判断算子是否为卷积算子,如果不是,则重复对下一个算子进行判断,直到所有的算子遍历完成,如果是卷积算子,则判断该卷积算子的下一个算子是否为批标准化算子,如果不是则返回,如果是则获取该卷积算子的卷积核的权重和偏置常量,获取批标准化算子的参数,更改该卷积算子的卷积核的权重和偏置常量,剔除该批标准化算子并返回。
基于上述装置实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署装置,还包括:第五子模块,用于实现所述获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,包括:根据输入数据尺寸推算出输出数据尺寸,推算第一层的输出数据尺寸,第一层的输入数据尺寸为整个模型的输入数据尺寸,则第一层的输入数据尺寸是固定的,推算输出数据尺寸,如果能够推算出输出数据尺寸则从第二层开始遍历每一层算子,其中上层算子输出数据尺寸,即为当前算子输入数据尺寸,并推算输出数据尺寸,如果能够推算出数据尺寸则返回,否则在前端推理框架推算该对应层的数据尺寸,记录在RelayIR语言模型中并返回;推算完RelayIR语言模型的每层数据尺寸后,采用前端框架推算所对应的前端模型所有层的输入输出前端数据尺寸,检查该前端数据尺寸与RelayIR语言模型所有对应数据尺寸是否相等,如果不相等,则将RelayIR语言模型中的推理数据尺寸替换为前端数据尺寸所对应的数据尺寸。
基于上述装置实施例的内容,作为一种可选的实施例,本发明实施例中提供的面向GPU的人工智能模型部署装置,还包括:第六子模块,用于实现所述采用GPU编译器和NPU编译器对期望语言模型进行逐层编译,采用预设编译框架调度执行编译结果,完成模型部署,包括:其中标记为Device_NPU可执行的算子,则通过NPU编译器映射至NPU中运算的第一二进制机器码;标记为Device_GPU可执行的算子,则通过GPU编译器映射至GPU中运算的第二二进制机器码;采用TVM编译框架调度执行第一二进制机器码和第二二进制机器码,完成模型部署。
本发明实施例的方法是依托电子设备实现的,因此对相关的电子设备有必要做一下介绍。基于此目的,本发明的实施例提供了一种电子设备,如图3所示,该电子设备包括:至少一个处理器(processor)、通信接口(Communications Interface)、至少一个存储器(memory)和通信总线,其中,至少一个处理器,通信接口,至少一个存储器通过通信总线完成相互间的通信。至少一个处理器可以调用至少一个存储器中的逻辑指令,以执行前述各个方法实施例提供的方法的全部或部分步骤。
此外,上述的至少一个存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个方法实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的一些部分所述的方法。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。基于这种认识,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
需要说明的是,术语"包括"、"包含"或者其任何其它变体意在涵盖非排它性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句"包括……"限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种面向GPU的人工智能模型部署方法,其特征在于,包括:
确定GPU内置NPU支持的算子类型,采用预设编译框架将前端模型转换为期望语言模型,对期望语言模型中的算子进行定位;
确定期望语言模型的算子属于所述算子类型,剔除期望语言模型中的预定层,将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层,将卷积层与批标准化层进行组合得到第二单独卷积层;
获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,根据输入数据尺寸的大小和输出数据尺寸的大小,确定期望语言模型运行时分配的内存大小;
采用GPU编译器和NPU编译器对期望语言模型进行逐层编译,采用预设编译框架调度执行编译结果,完成模型部署。
2.根据权利要求1所述的面向GPU的人工智能模型部署方法,其特征在于,所述对期望语言模型中的算子进行定位包括:确定期望语言模型中的算子的运算位置处于GPU中或NPU中,并将运算位置记录在map.json文件中,其中,所述期望语言模型包括RelayIR语言模型。
3.根据权利要求2所述的面向GPU的人工智能模型部署方法,其特征在于,所述确定期望语言模型的算子属于所述算子类型包括:逐层遍历期望语言模型中的算子,判断期望语言模型中一层的算子是否属于卷积算子、最大池化算子、减算子、加算子、乘算子或除算子;若判断结果为是则在map.json文件中添加所述一层的算子的运算设备为Device_NPU并返回;若判断结果为否则在map.json文件中添加所述一层的算子的运算设备为Device_GPU并返回。
4.根据权利要求2所述的面向GPU的人工智能模型部署方法,其特征在于,所述将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层包括:对期望语言模型的算子进行遍历,判断算子是否为卷积算子,如果不是卷积算子,则重复对下一个算子进行判断,直到所有的算子遍历完成,如果是卷积算子,则判断该卷积算子的下一个算子是否为加算子或减算子,如果不是则返回,如果是则判断该加算子或减算子的两个输入,是否一个为该卷积算子的输出,另一个为常量,且常量的数据尺寸和该卷积算子的偏置常量具有相同的数据尺寸或常量的数据尺寸为1,如果不是则返回,如果是则若为加算子,取出常量并将卷积层中偏置常量取出相加,更新所述卷积算子的偏置常量,剔除所述加算子;如果为减算子,则将常量与卷积层中偏置常量相减,更新所述卷积算子的偏置常量,剔除该减算子。
5.根据权利要求2所述的面向GPU的人工智能模型部署方法,其特征在于,所述将卷积层与批标准化层进行组合得到第二单独卷积层包括:对期望语言模型的算子进行遍历,判断算子是否为卷积算子,如果不是,则重复对下一个算子进行判断,直到所有的算子遍历完成,如果是卷积算子,则判断该卷积算子的下一个算子是否为批标准化算子,如果不是则返回,如果是则获取所述卷积算子的卷积核的权重和偏置常量,获取批标准化算子的参数,更改所述卷积算子的卷积核的权重和偏置常量,剔除所述批标准化算子并返回。
6.根据权利要求2所述的面向GPU的人工智能模型部署方法,其特征在于,所述获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸包括:根据输入数据尺寸推算出输出数据尺寸,推算第一层的输出数据尺寸,第一层的输入数据尺寸为整个模型的输入数据尺寸,则第一层的输入数据尺寸是固定的,推算输出数据尺寸,如果能够推算出输出数据尺寸则从第二层开始遍历每一层算子,其中上层算子输出数据尺寸,即为当前算子输入数据尺寸,并推算输出数据尺寸,如果能够推算出数据尺寸则返回,否则在前端推理框架推算对应层的数据尺寸,记录在期望语言模型中并返回;推算完期望语言模型的每层数据尺寸后,采用前端框架推算所对应的前端模型所有层的输入输出前端数据尺寸,检查前端数据尺寸与期望语言模型所有对应数据尺寸是否相等,如果不相等,则将期望语言模型中的推理数据尺寸替换为前端数据尺寸所对应的数据尺寸。
7.根据权利要求3所述的面向GPU的人工智能模型部署方法,其特征在于,所述采用GPU编译器和NPU编译器对期望语言模型进行逐层编译,采用预设编译框架调度执行编译结果,完成模型部署包括:其中标记为Device_NPU可执行的算子,则通过NPU编译器映射至NPU中运算的第一二进制机器码;标记为Device_GPU可执行的算子,则通过GPU编译器映射至GPU中运算的第二二进制机器码;采用TVM编译框架调度执行第一二进制机器码和第二二进制机器码,完成模型部署。
8.一种面向GPU的人工智能模型部署装置,其特征在于,包括:第一主模块,用于实现确定GPU内置NPU支持的算子类型,采用预设编译框架将前端模型转换为期望语言模型,对期望语言模型中的算子进行定位;第二主模块,用于实现确定期望语言模型的算子属于所述算子类型,剔除期望语言模型中的预定层,将预定参数与卷积层的偏置常量进行合并得到第一单独卷积层,将卷积层与批标准化层进行组合得到第二单独卷积层;第三主模块,用于实现获取期望语言模型中每一层的输入数据尺寸和输出数据尺寸,根据输入数据尺寸的大小和输出数据尺寸的大小,确定期望语言模型运行时分配的内存大小;第四主模块,用于实现采用GPU编译器和NPU编译器对期望语言模型进行逐层编译,采用预设编译框架调度执行编译结果,完成模型部署。
9.一种电子设备,其特征在于,包括:
至少一个处理器、至少一个存储器和通信接口;其中,
所述处理器、存储器和通信接口相互间进行通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令,以执行权利要求1至7任一项权利要求所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行权利要求1至7中任一项权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211550952.1A CN115794137A (zh) | 2022-12-05 | 2022-12-05 | 面向gpu的人工智能模型部署方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211550952.1A CN115794137A (zh) | 2022-12-05 | 2022-12-05 | 面向gpu的人工智能模型部署方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794137A true CN115794137A (zh) | 2023-03-14 |
Family
ID=85445773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211550952.1A Pending CN115794137A (zh) | 2022-12-05 | 2022-12-05 | 面向gpu的人工智能模型部署方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794137A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389571A (zh) * | 2023-12-11 | 2024-01-12 | 芯动微电子科技(武汉)有限公司 | 一种基于opencl的jpeg2000中t1并行解码方法和装置 |
CN118605890A (zh) * | 2024-08-07 | 2024-09-06 | 南湖实验室 | 针对支持算子层面操作的ai芯片的自动量化部署方法及系统 |
CN118605890B (zh) * | 2024-08-07 | 2024-10-25 | 南湖实验室 | 针对支持算子层面操作的ai芯片的自动量化部署方法及系统 |
-
2022
- 2022-12-05 CN CN202211550952.1A patent/CN115794137A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389571A (zh) * | 2023-12-11 | 2024-01-12 | 芯动微电子科技(武汉)有限公司 | 一种基于opencl的jpeg2000中t1并行解码方法和装置 |
CN117389571B (zh) * | 2023-12-11 | 2024-04-12 | 芯动微电子科技(武汉)有限公司 | 一种基于opencl的jpeg2000中t1并行解码方法和装置 |
CN118605890A (zh) * | 2024-08-07 | 2024-09-06 | 南湖实验室 | 针对支持算子层面操作的ai芯片的自动量化部署方法及系统 |
CN118605890B (zh) * | 2024-08-07 | 2024-10-25 | 南湖实验室 | 针对支持算子层面操作的ai芯片的自动量化部署方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10157045B2 (en) | Systems and methods for automatically generating code for deep learning systems | |
CN104504143B (zh) | 一种流图优化方法及其装置 | |
US20230236888A1 (en) | Memory allocation method, related device, and computer-readable storage medium | |
CN114154641A (zh) | Ai模型的训练方法、装置、计算设备和存储介质 | |
CN110889497B (zh) | 一种人工智能处理器的学习任务编译方法及相关产品 | |
CN114399019A (zh) | 神经网络编译方法、系统、计算机设备及存储介质 | |
CN112966433B (zh) | 一种基于即时编译的神经动力学仿真方法及装置 | |
US9594863B2 (en) | Method for determining by optimization a multi-core architecture | |
CN116644804B (zh) | 分布式训练系统、神经网络模型训练方法、设备和介质 | |
CN110689116A (zh) | 一种神经网络剪枝方法、装置、计算机设备及存储介质 | |
CN115033391B (zh) | 一种用于神经网络计算的数据流动方法和装置 | |
CN115794137A (zh) | 面向gpu的人工智能模型部署方法及设备 | |
CN113885871A (zh) | 支持机器学习训练的专用后端代码生成方法及装置 | |
CN110968308A (zh) | 一种用于改变用于生成源代码的模型的方法 | |
US9311273B2 (en) | Parallelization method, system, and program | |
Kusmenko et al. | On the engineering of AI-powered systems | |
CN116011468A (zh) | 深度学习模型的推理方法、机器翻译方法及装置 | |
US20140058991A1 (en) | Method for improving efficiency in an optimizing predictive model using stochastic gradient descent | |
CN110766146B (zh) | 一种人工智能处理器的学习任务编译方法及相关产品 | |
CN116560666A (zh) | 基于多层级代码生成的ai前端统一计算方法、装置及介质 | |
CN107038244A (zh) | 一种数据挖掘方法和装置、一种可读介质和存储控制器 | |
CN110377769A (zh) | 基于图数据结构的建模平台系统、方法、服务器及介质 | |
EP4246375A1 (en) | Model processing method and related device | |
CN113626035B (zh) | 基于tvm面向risc-v设备的神经网络编译方法 | |
CN112860534B (zh) | 硬件架构性能评估和性能优化方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |