CN112527272A - 对接tvm的方法及相关设备 - Google Patents
对接tvm的方法及相关设备 Download PDFInfo
- Publication number
- CN112527272A CN112527272A CN202011565749.2A CN202011565749A CN112527272A CN 112527272 A CN112527272 A CN 112527272A CN 202011565749 A CN202011565749 A CN 202011565749A CN 112527272 A CN112527272 A CN 112527272A
- Authority
- CN
- China
- Prior art keywords
- graph
- computation graph
- tvm
- computation
- calculation
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000004364 calculation method Methods 0.000 claims abstract description 171
- 238000011161 development Methods 0.000 claims abstract description 166
- 238000003032 molecular docking Methods 0.000 claims abstract description 12
- 238000005457 optimization Methods 0.000 claims description 37
- 238000013139 quantization Methods 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 26
- 238000000605 extraction Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004891 communication Methods 0.000 claims description 7
- 238000012937 correction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 25
- 238000012986 modification Methods 0.000 description 11
- 230000004048 modification Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 210000001503 joint Anatomy 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000012800 visualization Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 3
- 238000009472 formulation Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000005215 recombination Methods 0.000 description 2
- 230000006798 recombination Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 208000025174 PANDAS Diseases 0.000 description 1
- 208000021155 Paediatric autoimmune neuropsychiatric disorders associated with streptococcal infection Diseases 0.000 description 1
- 240000000220 Panda oleosa Species 0.000 description 1
- 235000016496 Panda oleosa Nutrition 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- 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
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Image Generation (AREA)
Abstract
本申请实施例提供一种对接TVM的方法及相关设备,该方法包括:采用TVM根据目标模型生成第一计算图,其中,所述目标模型用于芯片开发;根据所述第一计算图生成第二计算图,其中,所述第二计算图的结构为所述芯片开发使用的计算图结构,所述第二计算图为芯片开发环境的输入。采用本申请实施例,能够减少TVM引入对芯片开发环境的运算资源需求,提升运行速率,减少芯片开发环境的运行时间。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种对接TVM的方法及相关设备。
背景技术
TVM(Tensor Virtual Machine,矢量虚拟机)是一个支持图形处理器(GPU)、中央处理器(CPU)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)指令生成的开源编译器框架,其是目前的一项开源项目,主要作用于人工智能深度学习系统的编译器堆栈,或者说TVM是一个用于CPU、GPU和专用加速器的开放式深度学习编译器堆栈。TVM最大的特点是基于图和算符结构来优化指令生成,最大化硬件执行效率。TVM集成了量化,在深度学习推理时可以提升效率。TVM向上可以对接Tensorflow、Pytorch、Caffe(ConvolutionalArchitecture for Fast Feature Embedding)等深度学习框架,其中,Caffe是一个兼具表达性、速率和思维模块化的深度学习框架;TVM向下可以兼容GPU、CPU、ARM处理器、张量处理器(Tensor Processing Unit,TPU)等硬件设备。当前,TVM无法直接应用在芯片上,但可以将TVM部分功能对接到芯片开发环境中来加速芯片开发流程。TVM使用Relay将深度学习模型构建为计算图(数据流),芯片针对计算图中的节点功能进行实现,完成初步硬件部署;其中Relay是一种功能多样的编程语言,用于机器学习系统表达的中间表示。然而,在芯片开发环境引入TVM,会造成运行速率很慢,减缓芯片开发的进度。
发明内容
本申请实施例公开了一种对接TVM的方法及相关设备,能够极大减少TVM引入对芯片开发环境的运算资源需求,提升运行速率,减少芯片开发环境的运行时间。
本申请实施例第一方面公开了一种对接TVM的装置,应用于电子设备,所述装置包括:TVM修正模块,用于采用TVM根据目标模型生成第一计算图,其中,所述目标模型用于芯片开发;计算图产生模块,用于根据所述第一计算图生成第二计算图,其中,所述第二计算图的结构为所述芯片开发使用的计算图结构,所述第二计算图为芯片开发环境的输入。
在本申请实施例中,采用TVM根据用于芯片开发的目标模型生成第一计算图,也即采用TVM把用于芯片开发的目标模型变成第一计算图,该第一计算图的结构是TVM使用的计算图结构;然后将第一计算图生成第二计算图,该第二计算图的结构为芯片开发使用的计算图结构,从而第二计算图可以作为芯片开发环境的输入,实现将TVM环境引入到芯片开发环境中。由于第二计算图的结构为芯片开发使用的计算图结构,相比于第一计算图,第二计算图在芯片开发环境运行所需运算资源需求较小、运行速率较快;因此,将第一计算图转变第二计算图,再将第二计算图输入到芯片开发环境运行,能够极大减少TVM引入对芯片开发环境的运算资源需求,提升运行速率,减少芯片开发环境的运行时间。
在一种可能的实施方式中,所述计算图产生模块包括TVM算子参数模板列表和计算图解析单元,所述TVM算子参数模板列表根据所述TVM使用的算子得到;所述计算图解析单元,用于:根据所述TVM算子参数模板列表对所述第一计算图进行解析,以得到所述第一计算图中的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号;根据所述每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号生成所述第二计算图。
在本申请实施例中,TVM算子参数模板列表是根据TVM使用的算子得到,故TVM算子参数模板列表中可以包括TVM使用的所有算子的信息,而算子在计算图中的位置表现为计算图中的节点,根据TVM算子参数模板列表对第一计算图进行解析,可以得到第一计算图中的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号;然后根据解析得到的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号进行计算图结构重组,可以生成第二计算图;从而将TVM使用的计算图结构转变成芯片开发使用的计算图结构,有利于减少TVM引入对芯片开发环境的运算资源需求。
在一种可能的实施方式中,所述计算图解析单元包括:算子名称提取子单元,用于根据所述TVM算子参数模板列表在所述第一计算图中进行搜索,以得到所述每个节点对应的算子名称;算子参数提取子单元,用于根据所述每个节点对应的算子名称从所述TVM算子参数模板列表中提取所述每个节点对应的算子参数;输入输出数据维度提取子单元,用于根据所述每个节点对应的算子名称从所述TVM算子参数模板列表中提取所述每个节点对应的输入数据的维度、输出数据的维度;节点标号提取子单元,用于根据所述第一计算图中的节点的连接关系确定所述每个节点对应的节点标号。
在本申请实施例中,根据TVM算子参数模板列表对第一计算图进行搜索,可以得到第一计算图中每个节点对应的算子名称;然后根据第一计算图中每个节点对应的算子名称可以从TVM算子参数模板列表中提取到每个节点对应的算子参数,以及根据第一计算图中每个节点对应的算子名称可以从TVM算子参数模板列表中提取到每个节点对应的输入数据的维度、输出数据的维度;再根据第一计算图中的节点的连接关系确定第一计算图中每个节点对应的节点标号;从而得到第一计算图中每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号,有利于组合得到第二计算图。
在一种可能的实施方式中,所述TVM修正模块,具体用于:采用所述TVM根据所述目标模型生成第三计算图;采用所述TVM的计算图优化部分和计算图量化部分对所述第三计算图进行处理,得到所述第一计算图,其中,所述第一计算图被硬件运行的速率大于所述第三计算图被所述硬件运行的速率。
在本申请实施例中,先采用TVM根据所述目标模型生成第三计算图;再采用TVM的计算图优化部分和计算图量化部分对所述第三计算图进行处理,从而得到第一计算图;由于第一计算图是优化和量化后的计算图,去除了计算图中的无效节点、冗余节点的计算以及经过了数据类型的转换,故第一计算图被硬件运行的速率大于所述第三计算图被硬件运行的速率;依据优化和量化后得到的第一计算图生成第二计算图,有利于提升第二计算图在芯片开发环境中的运行速率。
在一种可能的实施方式中,所述TVM修正模块,还用于:根据芯片架构对所述计算图优化部分和所述计算图量化部分进行修改,以使所述计算图优化部分和所述计算图量化部分适配所述芯片开发。
在本申请实施例中,根据芯片架构对TVM的计算图优化部分和计算图量化部分进行修改,使其适配芯片开发,从而有利于TVM的计算图优化部分和计算图量化部分处理得到的第一计算图适配被芯片开发环境运行。
在一种可能的实施方式中,所述装置还包括:计算图处理模块,用于对所述第二计算图进行优化和/或量化处理,以得到第四计算图,其中,所述第四计算图为所述芯片开发环境的输入,所述第四计算图被硬件运行的速率大于所述第二计算图被所述硬件运行的速率。
在本申请实施例中,将需要输入到芯片开发环境中运行的第二计算图进行优化和/或量化处理,优化和/或量化处理后得到第四计算图,从而第四计算图被硬件运行的速率大于第二计算图被硬件运行的速率,有利于提升运行速率,减少芯片开发环境的运行时间。
在一种可能的实施方式中,所述装置还包括:计算图统计模块,用于对所述第二计算图和/或所述第四计算图进行信息统计,以得到计算图信息,其中,所述计算图信息为所述芯片开发环境的输入,所述计算图信息用于提升所述第二计算图和/或所述第四计算图被硬件运行的速率。
在本申请实施例中,对将要输入到芯片开发环境中运行的计算图进行信息统计,得到该计算图的计算图信息,将该计算图信息输入到芯片开发环境中,可以提升该计算图在芯片开发环境中运行速率,从而减少芯片开发环境的运行时间。
在一种可能的实施方式中,所述第一计算图和所述第三计算图以文本的形式保存,所述第二计算图和所述第四计算图以python DataFrame的形式保存。
在本申请实施例中,将第一计算图和第三计算图以文本的形式保存,可以实现TVM环境与芯片开发环境的解耦;将第二计算图和第四计算图以python DataFrame的形式保存,可以实现TVM对接环境和芯片开发环境解耦,从而可以加快芯片开发环境的运行速率。此外,第二计算图和第四计算图以python DataFrame的形式保存,还可以实现计算图可视化。
本申请实施例第二方面公开了一种对接TVM的方法,应用于电子设备,所述方法包括:采用TVM根据目标模型生成第一计算图,其中,所述目标模型用于芯片开发;根据所述第一计算图生成第二计算图,其中,所述第二计算图的结构为所述芯片开发使用的计算图结构,所述第二计算图为芯片开发环境的输入。
在一种可能的实施方式中,所述电子设备存储有TVM算子参数模板列表,所述TVM算子参数模板列表根据所述TVM使用的算子得到;所述根据所述第一计算图生成第二计算图,包括:根据所述TVM算子参数模板列表对所述第一计算图进行解析,以得到所述第一计算图中的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号;根据所述每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号生成所述第二计算图。
在一种可能的实施方式中,所述根据所述TVM算子参数模板列表对所述第一计算图进行解析,以得到所述第一计算图中的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号,包括:根据所述TVM算子参数模板列表在所述第一计算图中进行搜索,以得到所述每个节点对应的算子名称;根据所述每个节点对应的算子名称从所述TVM算子参数模板列表中提取所述每个节点对应的算子参数;根据所述每个节点对应的算子名称从所述TVM算子参数模板列表中提取所述每个节点对应的输入数据的维度、输出数据的维度;根据所述第一计算图中的节点的连接关系确定所述每个节点对应的节点标号。
在一种可能的实施方式中,所述采用TVM根据目标模型生成第一计算图,包括:采用所述TVM根据所述目标模型生成第三计算图;采用所述TVM的计算图优化部分和计算图量化部分对所述第三计算图进行处理,得到所述第一计算图,其中,所述第一计算图被硬件运行的速率大于所述第三计算图被所述硬件运行的速率。
在一种可能的实施方式中,在所述采用所述TVM的计算图优化部分和计算图量化部分对所述第三计算图进行处理之前,所述方法还包括:根据芯片架构对所述计算图优化部分和所述计算图量化部分进行修改,以使所述计算图优化部分和所述计算图量化部分适配所述芯片开发。
在一种可能的实施方式中,所述方法还包括:对所述第二计算图进行优化和/或量化处理,以得到第四计算图,其中,所述第四计算图为所述芯片开发环境的输入,所述第四计算图被硬件运行的速率大于所述第二计算图被所述硬件运行的速率。
在一种可能的实施方式中,所述方法还包括:对所述第二计算图和/或所述第四计算图进行信息统计,以得到计算图信息,其中,所述计算图信息为所述芯片开发环境的输入,所述计算图信息用于提升所述第二计算图和/或所述第四计算图被硬件运行的速率。
在一种可能的实施方式中,所述第一计算图和所述第三计算图以文本的形式保存,所述第二计算图和所述第四计算图以python DataFrame的形式保存。
本申请实施例第三方面公开了一种电子设备,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如本申请实施例第二方面中任一项所述的方法中的步骤的指令。
本申请实施例第四方面公开了一种芯片,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如本申请实施例第二方面中任一项所述的方法。
本申请实施例第五方面公开了一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如本申请实施例第二方面中任一项所述的方法。
本申请实施例第六方面公开了一种计算机程序产品,所述计算机程序产品使得计算机执行如本申请实施例第二方面中任一项所述的方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种用于芯片开发的系统的架构示意图。
图2是本申请实施例提供的一种计算图产生模块的结构示意图。
图3是本申请实施例提供的一种计算图解析单元的结构示意图。
图4是本申请实施例提供的一种计算图产生模块的内部逻辑示意图。
图5是本申请实施例提供的一种对接TVM的方法的流程示意图。
图6是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
请参阅图1,图1是本申请实施例提供的一种用于芯片开发的系统的架构示意图,该系统应用于电子设备,该系统包括TVM(Tensor Virtual Machine,矢量虚拟机)、对接TVM的装置和芯片开发环境。其中,TVM中的TVM环境可以是历史项目的TVM环境,也可以是TVM原始环境。其中,该对接TVM的装置与TVM环境连接,该对接TVM的装置包括:
TVM修正模块,用于采用TVM根据目标模型生成第一计算图,其中,所述目标模型用于芯片开发;
计算图产生模块,用于根据所述第一计算图生成第二计算图,其中,所述第二计算图的结构为所述芯片开发使用的计算图结构,所述第二计算图为芯片开发环境的输入。
其中,目标模型为芯片开发需要支持的深度学习模型。
其中,计算图被定义为有向图,包括节点和有向边;其中节点对应于数学运算,也即其中节点对应算子或操作符(op),是表达和评估数学表达式的一种方式。第一计算图的计算图结构和第二计算图的计算图结构不同,生成第一计算图的编程语言和生成第二计算图的编程语言也不同。如图1所示,TVM修正模块采用的编程语言和TVM采用的编程语言是一样的,但其和计算图产生模块采用的编程语言是不同的。
具体地,第一计算图可以是TVM Relay计算图的计算图结构,TVM修正模块针对芯片开发需要支持的模型,采用TVM Relay生成TVM Relay计算图;如果芯片开发需要支持的模型有多个,那么TVM修正模块可以针对芯片开发需要支持的模型列表,采用TVM Relay产生计算图文件列表,由于该模型列表中包括多个模型,故该计算图文件列表包括这多个模型对应的多个TVM Relay计算图;其中,计算图文件列表以文本的形式存在,在实际应用中,可以为txt文件或log文件,从而,计算图文件列表具备可视化。计算图产生模块可以将TVMRelay计算图转换成第二计算图,而第二计算图的结构为芯片开发使用的计算图结构;若由多个TVM Relay计算图,则将这多个TVM Relay计算图都转换成芯片开发使用的计算图结构的第二计算图。其中,对接TVM的装置输出的第二计算图将作为芯片开发环境的输入。
其中,计算图产生单元可以对第一计算图进行解析,提取出第一计算图中节点对应的算子名称、算子参数、、输入数据的维度、输出数据的维度、节点标号等信息,并将这些信息保存在第二计算图里面,该第二计算图可以python DataFrame形式或者其它数据形式存在。其中,python是计算机程序设计语言;DataFrame是一个表格型的数据结构,是pythonpandas库中的定义的。
应理解,由于TVM是个很大的环境,如果将TVM根据生成的第一计算图输入芯片开发环境中运行,例如直接将TVM Relay计算图输入芯片开发环境中运行,会造成运行速率很慢,减缓芯片开发的进度;其原因是:因为第一计算图的结构大,其不是芯片开发使用的计算图结构,因此其运行所需的运算资源需求较大。而如果将第一计算图经过结构转换,将其转换成芯片开发使用的计算图结构的第二计算图,再将第二计算图输入到芯片开发环境中运行,可以明显减少运行所需的运算资源需求,从而提升运行速率。
需要说明的是,一个目标模型可能对应一张计算图,也可能对应多张计算图,也即第一计算图包括多张TVM Relay计算图。当目标模型对应多张TVM Relay计算图时,也需要将这多张TVM Relay计算图转换成第二计算图,其中多张TVM Relay计算图可能转换成一张第二计算图,也可能转换成多张第二计算图,本申请对其不作具体限定。当多张TVM Relay计算图转换成多张第二计算图时,这多张第二计算图均是芯片开发环境的输入。
在本申请实施例中,采用TVM根据用于芯片开发的目标模型生成第一计算图,也即采用TVM把用于芯片开发的目标模型变成第一计算图,该第一计算图的结构是TVM使用的计算图结构;然后将第一计算图生成第二计算图,该第二计算图的结构为芯片开发使用的计算图结构,从而第二计算图可以作为芯片开发环境的输入,实现将TVM环境引入到芯片开发环境中。由于第二计算图的结构为芯片开发使用的计算图结构,相比于第一计算图,第二计算图在芯片开发环境运行所需运算资源需求较小、运行速率较快;因此,将第一计算图转变第二计算图,再将第二计算图输入到芯片开发环境运行,能够极大减少TVM引入对芯片开发环境的运算资源需求,提升运行速率,减少芯片开发环境的运行时间。
在一种可能的实施方式中,所述计算图产生模块包括TVM算子参数模板列表和计算图解析单元,所述TVM算子参数模板列表根据所述TVM使用的算子得到;所述计算图解析单元,用于:根据所述TVM算子参数模板列表对所述第一计算图进行解析,以得到所述第一计算图中的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号;根据所述每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号生成所述第二计算图。
具体地,请参阅图2,图2是本申请实施例提供的一种计算图产生模块的结构示意图,该计算图产生模块的输入为TVM Relay计算图,输出为根据芯片开发需要的算子信息组成的芯片开发使用的计算图结构,也即第二计算图。该计算图产生模块包括TVM算子参数模板列表和计算图解析单元;TVM算子参数模板列表是根据TVM Relay算子定义维护的列表,包含算子的参数定义;TVM算子参数模板列表可以根据芯片开发需要支持的模型来添加对应的TVM Relay算子;计算图解析单元根据TVM算子参数模板列表解析出TVM Relay计算图中的节点对应的算子名称、算子参数、输入输数据的(向量)维度、输出数据的(向量)维度、节点标号等。
在本申请实施例中,TVM算子参数模板列表是根据TVM使用的算子得到,故TVM算子参数模板列表中可以包括TVM使用的所有算子的信息,而算子在计算图中的位置表现为计算图中的节点,根据TVM算子参数模板列表对第一计算图进行解析,可以得到第一计算图中的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号;然后根据解析得到的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号进行计算图结构重组,可以生成第二计算图;从而将TVM使用的计算图结构转变成芯片开发使用的计算图结构,有利于减少TVM引入对芯片开发环境的运算资源需求。
在一种可能的实施方式中,所述计算图解析单元包括:算子名称提取子单元,用于根据所述TVM算子参数模板列表在所述第一计算图中进行搜索,以得到所述每个节点对应的算子名称;算子参数提取子单元,用于根据所述每个节点对应的算子名称从所述TVM算子参数模板列表中提取所述每个节点对应的算子参数;输入输出数据维度提取子单元,用于根据所述每个节点对应的算子名称从所述TVM算子参数模板列表中提取所述每个节点对应的输入数据的维度、输出数据的维度;节点标号提取子单元,用于根据所述第一计算图中的节点的连接关系确定所述每个节点对应的节点标号。
具体地,请参阅图3,图3是本申请实施例提供的一种计算图解析单元的结构示意图,该计算图解析单元包括算子名称提取子单元、算子参数提取子单元、输入输出数据维度提取子单元和节点标号提取子单元。算子名称提取子单元根据TVM算子参数模板列表在第一计算图中进行搜索,以得到每个节点对应的算子名称;也即将TVM算子参数模板列表中的参数模板分别在目标模型对应的TVM Relay计算图中进行搜索匹配,匹配到的算子作为芯片开发使用的第二计算图中的节点对应的算子。算子参数提取子单元还将TVM算子参数模板列表中的算子对应的算子参数合入第二计算图对应节点的信息中,TVM算子参数模板列表中加入第二计算图中的算子参数是可以选择的。输入输出数据维度提取子单元将算子的输入数据和输出数据的维度也加入到第二计算图中。节点标号提取子单元根据TVM Relay计算图中节点的连接关系生成第二计算图的节点标号;其中,如图4所示,不同模型的输出第二计算图的连接关系不同,该连接关系在第二计算图中用节点标号来表示,节点标号包括输入节点的节点标号、输出节点的节点标号以及当前节点的节点标号;举例来说,节点1、节点2、节点3依次相连,则节点2的节点标号包括节点1的节点标号(输入节点的节点标号)、节点3的节点标号(输出节点的节点标号)以及节点2的节点标号(当前节点的节点标号)。
在本申请实施例中,根据TVM算子参数模板列表对第一计算图进行搜索,可以得到第一计算图中每个节点对应的算子名称;然后根据第一计算图中每个节点对应的算子名称可以从TVM算子参数模板列表中提取到每个节点对应的算子参数,以及根据第一计算图中每个节点对应的算子名称可以从TVM算子参数模板列表中提取到每个节点对应的输入数据的维度、输出数据的维度;再根据第一计算图中的节点的连接关系确定第一计算图中每个节点对应的节点标号;从而得到第一计算图中每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号,有利于组合得到第二计算图。
在一种可能的实施方式中,所述TVM修正模块,具体用于:采用所述TVM根据所述目标模型生成第三计算图;采用所述TVM的计算图优化部分和计算图量化部分对所述第三计算图进行处理,得到所述第一计算图,其中,所述第一计算图被硬件运行的速率大于所述第三计算图被所述硬件运行的速率。
具体地,TVM修正模块根据芯片开发需要支持的目标模型采用TVM Relay产生第三计算图,其中第三计算图也是TVM Relay计算图的计算图结构,采用TVM的计算图优化部分和计算图量化部分对第三计算图进行优化处理和量化处理,从而得到第一计算图。其中,第一计算图、第三计算图可以以文本的形式存在,在实际应用中,可以为txt文件或log文件,从而实现TVM环境与芯片开发环境的解耦。
其中,上述优化部分是对计算图结构进行优化,比如op1-op2-op3组成一个计算图,如果op2是冗余,可以删掉,优化后就变成op1-op3,这个就是优化部分,优化的目的是通过优化计算图结构来加快模型在硬件上的处理速率。而上述量化部分不涉及对计算图结构的改变,主要是对模型数据类型的变换,将模型的数据类型由浮点转成定点,也是为了加快模型在硬件上的处理速率。
在本申请实施例中,先采用TVM根据所述目标模型生成第三计算图;再采用TVM的计算图优化部分和计算图量化部分对所述第三计算图进行处理,从而得到第一计算图;由于第一计算图是优化和量化后的计算图,去除了计算图中的无效节点、冗余节点的计算以及经过了数据类型的转换,故第一计算图被硬件运行的速率大于所述第三计算图被硬件运行的速率;依据优化和量化后得到的第一计算图生成第二计算图,有利于提升第二计算图在芯片开发环境中的运行速率。
在一种可能的实施方式中,所述TVM修正模块,还用于:根据芯片架构对所述计算图优化部分和所述计算图量化部分进行修改,以使所述计算图优化部分和所述计算图量化部分适配所述芯片开发。
其中,根据芯片架构对所述计算图优化部分和所述计算图量化部分进行修改,也即根据芯片的架构特性对所述计算图优化部分和所述计算图量化部分进行修改;芯片架构是指对芯片对象类别和属性的描述,对于每一个对象类别来说,该架构定义了对象类必须具有的属性,它也可以有附加的属性,并且该对象可以是它的父对象;主流的芯片架构有ARM、MIPS、x86等。
具体地,TVM修正模块可以先根据芯片的架构特性对TVM的计算图优化部分、计算图量化部分进行修改,然后针对芯片开发需要支持的目标模型采用TVM Relay产生第一计算图;或者TVM修正模块可以先针对芯片开发需要支持的目标模型采用TVM Relay产生第三计算图,然后根据芯片的架构特性对TVM的计算图优化部分、计算图量化部分进行修改,再采用计算图优化部分、计算图量化部分对第三计算图进行优化和量化,从而得到第一计算图。
在本申请实施例中,根据芯片架构对TVM的计算图优化部分和计算图量化部分进行修改,使其适配芯片开发,从而有利于TVM的计算图优化部分和计算图量化部分处理得到的第一计算图适配被芯片开发环境运行。
在一种可能的实施方式中,所述装置还包括:计算图处理模块,用于对所述第二计算图进行优化和/或量化处理,以得到第四计算图,其中,所述第四计算图为所述芯片开发环境的输入,所述第四计算图被硬件运行的速率大于所述第二计算图被所述硬件运行的速率。
其中,计算图产生模块输出的第二计算图,经过计算图处理模块进行优化和/或量化处理后,得到第四计算图,将第四计算图送入芯片开发环境中运行。输入到芯片开发环境的该第四计算图的计算图结构仿真速率快,而且保留了芯片开发环境需要的计算图中节点的关键信息。
具体地,计算图处理模块可以从第二计算图中提取计算图信息,并对从第二计算图中提取到的计算图信息进行处理,从而产生新的计算图,也即产生第四计算图;其中,对从第二计算图中提取到的计算图信息进行处理包括根据芯片的架构特性进行算子融合、添加新的算子参数等。
在本申请实施例中,将需要输入到芯片开发环境中运行的第二计算图进行优化和/或量化处理,优化和/或量化处理后得到第四计算图,从而第四计算图被硬件运行的速率大于第二计算图被硬件运行的速率,有利于提升运行速率,减少芯片开发环境的运行时间。
在一种可能的实施方式中,所述装置还包括:计算图统计模块,用于对所述第二计算图和/或所述第四计算图进行信息统计,以得到计算图信息,其中,所述计算图信息为所述芯片开发环境的输入,所述计算图信息用于提升所述第二计算图和/或所述第四计算图被硬件运行的速率。
具体地,当直接将第二计算图输入到芯片开发环境中时,计算图统计模块对第二计算图进行信息统计,以得到第二计算图的计算图信息,并将第二计算图的计算图信息输出到芯片开发环境中;当将第四计算图输入到芯片开发环境中时,计算图统计模块对第四计算图进行信息统计,以得到第四计算图的计算图信息,并将第四计算图的计算图信息输出到芯片开发环境中。
需要说明的是,根据芯片开发环境的需要可以选择将第二计算图、第二计算图的计算图信息中的两个或者任意一个送入到芯片开发环境中;或者将第四计算图、第四计算图的计算图信息中的两个或者任意一个送入到芯片开发环境中。第二计算图或第四计算图包含着目标模型的计算图信息,例如,第二计算图或第四计算图包含着TVM Relay计算图信息;芯片通过对第二计算图或第四计算图中的各个节点功能进行实现,对各个节点分别进行汇编实现,可以完成深度学习模型(也即目标模型)的硬件部署。计算图信息主要统计着某个节点对应的算子参数信息等内容,输入到芯片开发环境中可以指导芯片硬件开发。
在本申请实施例中,对将要输入到芯片开发环境中运行的计算图进行信息统计,得到该计算图的计算图信息,将该计算图信息输入到芯片开发环境中,可以提升该计算图在芯片开发环境中运行速率,从而减少芯片开发环境的运行时间。
在一种可能的实施方式中,所述第一计算图和所述第三计算图以文本的形式保存,所述第二计算图和所述第四计算图以python DataFrame的形式保存。
具体地,对接TVM的装置将第一计算图和第三计算图以文本的形式保存,也即将TVM Relay计算图以文本的形式保存,实现TVM环境与芯片开发环境的解耦,极大减少TVM引入对芯片开发环境的运算资源需求,加快芯片开发环境的运行速率。对接TVM的装置将第二计算图和第四计算图以python DataFrame的形式保存,python Dataframe可以输出成excel表格,以这样的文件的形式保存,可以实现TVM对接环境和芯片开发环境解耦,TVM对接环境也即对接TVM的装置的环境。芯片开发环境只需要输入对接TVM的装置输出的excel表格,不用集成对接TVM的装置的环境,也可以加快芯片开发环境的运行速率。此外,第二计算图和第四计算图以python DataFrame形式存在,可以用表格文本的形式输出,实现可视化,如表1至表3所示。
表1
表2
表3
其中,上述表1至表3中的参数在中文释义如表4所示。
表4参数含义表
在本申请实施例中,将第一计算图和第三计算图以文本的形式保存,可以实现TVM环境与芯片开发环境的解耦;将第二计算图和第四计算图以python DataFrame的形式保存,可以实现TVM对接环境和芯片开发环境解耦,从而可以加快芯片开发环境的运行速率。此外,第二计算图和第四计算图以python DataFrame的形式保存,还可以实现计算图可视化。
综上,本申请实施例提供一种高效地将TVM对接到芯片开发环境中的对接TVM的装置,通过该对接TVM的装置可以实现将深度学习模型落地到芯片开发环境中,也即将深度学习模型的TVM Relay计算图引入到芯片开发环境中,并实现TVM环境与芯片开发环境的解耦,极大减少TVM引入对芯片开发环境的运算资源需求,加快芯片开发环境的运行速率。该对接TVM的装置输入到芯片开发环境的计算图结构仿真速率快,而且保留了芯片开发环境需要的计算图中节点的关键信息,还可以实现可视化。
请参阅图5,图5是本申请实施例提供的一种对接TVM的方法的流程示意图,该对接TVM的方法可应用于电子设备,该对接TVM的方法包括但不限于以下步骤。
501、采用TVM根据目标模型生成第一计算图,其中,所述目标模型用于芯片开发;
502、根据所述第一计算图生成第二计算图,其中,所述第二计算图的结构为所述芯片开发使用的计算图结构,所述第二计算图为芯片开发环境的输入。
在一种可能的实施方式中,所述电子设备存储有TVM算子参数模板列表,所述TVM算子参数模板列表根据所述TVM使用的算子得到;所述根据所述第一计算图生成第二计算图,包括:根据所述TVM算子参数模板列表对所述第一计算图进行解析,以得到所述第一计算图中的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号;根据所述每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号生成所述第二计算图。
在一种可能的实施方式中,所述根据所述TVM算子参数模板列表对所述第一计算图进行解析,以得到所述第一计算图中的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号,包括:根据所述TVM算子参数模板列表在所述第一计算图中进行搜索,以得到所述每个节点对应的算子名称;根据所述每个节点对应的算子名称从所述TVM算子参数模板列表中提取所述每个节点对应的算子参数;根据所述每个节点对应的算子名称从所述TVM算子参数模板列表中提取所述每个节点对应的输入数据的维度、输出数据的维度;根据所述第一计算图中的节点的连接关系确定所述每个节点对应的节点标号。
在一种可能的实施方式中,所述采用TVM根据目标模型生成第一计算图,包括:采用所述TVM根据所述目标模型生成第三计算图;采用所述TVM的计算图优化部分和计算图量化部分对所述第三计算图进行处理,得到所述第一计算图,其中,所述第一计算图被硬件运行的速率大于所述第三计算图被所述硬件运行的速率。
在一种可能的实施方式中,在所述采用所述TVM的计算图优化部分和计算图量化部分对所述第三计算图进行处理之前,所述方法还包括:根据芯片架构对所述计算图优化部分和所述计算图量化部分进行修改,以使所述计算图优化部分和所述计算图量化部分适配所述芯片开发。
在一种可能的实施方式中,所述方法还包括:对所述第二计算图进行优化和/或量化处理,以得到第四计算图,其中,所述第四计算图为所述芯片开发环境的输入,所述第四计算图被硬件运行的速率大于所述第二计算图被所述硬件运行的速率。
在一种可能的实施方式中,所述方法还包括:对所述第二计算图和/或所述第四计算图进行信息统计,以得到计算图信息,其中,所述计算图信息为所述芯片开发环境的输入,所述计算图信息用于提升所述第二计算图和/或所述第四计算图被硬件运行的速率。
需要说明的是,本申请实施例中所描述的对接TVM的方法的具体流程,可参见上述图1至图4中所示的实施例中的相关描述,此处不再赘述。
在图5所描述的对接TVM的方法中,采用TVM根据用于芯片开发的目标模型生成第一计算图,也即采用TVM把用于芯片开发的目标模型变成第一计算图,该第一计算图的结构是TVM使用的计算图结构;然后将第一计算图生成第二计算图,该第二计算图的结构为芯片开发使用的计算图结构,从而第二计算图可以作为芯片开发环境的输入,实现将TVM环境引入到芯片开发环境中。由于第二计算图的结构为芯片开发使用的计算图结构,相比于第一计算图,第二计算图在芯片开发环境运行所需运算资源需求较小、运行速率较快;因此,将第一计算图转变第二计算图,再将第二计算图输入到芯片开发环境运行,能够极大减少TVM引入对芯片开发环境的运算资源需求,提升运行速率,减少芯片开发环境的运行时间。
请参见图6,图6是本申请实施例提供的一种电子设备610的结构示意图,该电子设备610包括处理器611、存储器612和通信接口613,上述处理器611、存储器612和通信接口613通过总线614相互连接。
存储器612包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmableread only memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM),该存储器612用于相关计算机程序及数据。通信接口613用于接收和发送数据。
处理器611可以是一个或多个中央处理器(central processing unit,CPU),在处理器611是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
该电子设备610中的处理器611用于读取上述存储器612中存储的计算机程序代码,执行以下步骤:采用TVM根据目标模型生成第一计算图,其中,所述目标模型用于芯片开发;根据所述第一计算图生成第二计算图,其中,所述第二计算图的结构为所述芯片开发使用的计算图结构,所述第二计算图为芯片开发环境的输入。
需要说明的是,各个操作的实现还可以对应参照图1至图5所示的实施例的相应描述,此处不再赘述。
在图6所描述的电子设备610中,采用TVM根据用于芯片开发的目标模型生成第一计算图,也即采用TVM把用于芯片开发的目标模型变成第一计算图,该第一计算图的结构是TVM使用的计算图结构;然后将第一计算图生成第二计算图,该第二计算图的结构为芯片开发使用的计算图结构,从而第二计算图可以作为芯片开发环境的输入,实现将TVM环境引入到芯片开发环境中。由于第二计算图的结构为芯片开发使用的计算图结构,相比于第一计算图,第二计算图在芯片开发环境运行所需运算资源需求较小、运行速率较快;因此,将第一计算图转变第二计算图,再将第二计算图输入到芯片开发环境运行,能够极大减少TVM引入对芯片开发环境的运算资源需求,提升运行速率,减少芯片开发环境的运行时间。
本申请实施例还提供一种芯片,上述芯片包括至少一个处理器,存储器和接口电路,上述存储器、上述收发器和上述至少一个处理器通过线路互联,上述至少一个存储器中存储有计算机程序;上述计算机程序被上述处理器执行时,图5所示的方法流程得以实现。
本申请实施例还提供一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,图5所示的方法流程得以实现。
本申请实施例还提供一种计算机程序产品,当上述计算机程序产品在计算机上运行时,图5所示的方法流程得以实现。
应理解,本申请实施例中提及的处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
还应理解,本文中涉及的第一、第二、第三、第四以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请的范围。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所示方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
以上,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种对接TVM的装置,其特征在于,应用于电子设备,所述装置包括:
TVM修正模块,用于采用TVM根据目标模型生成第一计算图,其中,所述目标模型用于芯片开发;
计算图产生模块,用于根据所述第一计算图生成第二计算图,其中,所述第二计算图的结构为所述芯片开发使用的计算图结构,所述第二计算图为芯片开发环境的输入。
2.根据权利要求1所述的装置,其特征在于,所述计算图产生模块包括TVM算子参数模板列表和计算图解析单元,所述TVM算子参数模板列表根据所述TVM使用的算子得到;所述计算图解析单元,用于:
根据所述TVM算子参数模板列表对所述第一计算图进行解析,以得到所述第一计算图中的每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号;
根据所述每个节点对应的算子名称、算子参数、输入数据的维度、输出数据的维度、节点标号生成所述第二计算图。
3.根据权利要求2所述的装置,其特征在于,所述计算图解析单元包括:
算子名称提取子单元,用于根据所述TVM算子参数模板列表在所述第一计算图中进行搜索,以得到所述每个节点对应的算子名称;
算子参数提取子单元,用于根据所述每个节点对应的算子名称从所述TVM算子参数模板列表中提取所述每个节点对应的算子参数;
输入输出数据维度提取子单元,用于根据所述每个节点对应的算子名称从所述TVM算子参数模板列表中提取所述每个节点对应的输入数据的维度、输出数据的维度;
节点标号提取子单元,用于根据所述第一计算图中的节点的连接关系确定所述每个节点对应的节点标号。
4.根据权利要求1-3任一项所述的装置,其特征在于,所述TVM修正模块,具体用于:
采用所述TVM根据所述目标模型生成第三计算图;
采用所述TVM的计算图优化部分和计算图量化部分对所述第三计算图进行处理,得到所述第一计算图,其中,所述第一计算图被硬件运行的速率大于所述第三计算图被所述硬件运行的速率。
5.根据权利要求4所述的装置,其特征在于,所述TVM修正模块,还用于:
根据芯片架构对所述计算图优化部分和所述计算图量化部分进行修改,以使所述计算图优化部分和所述计算图量化部分适配所述芯片开发。
6.根据权利要求1-5中任一项所述的装置,其特征在于,所述装置还包括:
计算图处理模块,用于对所述第二计算图进行优化和/或量化处理,以得到第四计算图,其中,所述第四计算图为所述芯片开发环境的输入,所述第四计算图被硬件运行的速率大于所述第二计算图被所述硬件运行的速率。
7.根据权利要求1-6中任一项所述的装置,其特征在于,所述装置还包括:
计算图统计模块,用于对所述第二计算图和/或所述第四计算图进行信息统计,以得到计算图信息,其中,所述计算图信息为所述芯片开发环境的输入,所述计算图信息用于提升所述第二计算图和/或所述第四计算图被硬件运行的速率。
8.一种对接TVM的方法,其特征在于,应用于电子设备,所述方法包括:
采用TVM根据目标模型生成第一计算图,其中,所述目标模型用于芯片开发;
根据所述第一计算图生成第二计算图,其中,所述第二计算图的结构为所述芯片开发使用的计算图结构,所述第二计算图为芯片开发环境的输入。
9.一种电子设备,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求8所述的方法中的步骤的指令。
10.一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求8所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011565749.2A CN112527272B (zh) | 2020-12-25 | 2020-12-25 | 对接tvm的方法及相关设备 |
PCT/CN2021/133512 WO2022135028A1 (zh) | 2020-12-25 | 2021-11-26 | 对接tvm的方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011565749.2A CN112527272B (zh) | 2020-12-25 | 2020-12-25 | 对接tvm的方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112527272A true CN112527272A (zh) | 2021-03-19 |
CN112527272B CN112527272B (zh) | 2023-11-17 |
Family
ID=74976468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011565749.2A Active CN112527272B (zh) | 2020-12-25 | 2020-12-25 | 对接tvm的方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112527272B (zh) |
WO (1) | WO2022135028A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022135028A1 (zh) * | 2020-12-25 | 2022-06-30 | 深圳云天励飞技术股份有限公司 | 对接tvm的方法及相关设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116629330B (zh) * | 2023-04-24 | 2024-04-16 | 北京大学 | 一种算子检测方法、装置以及计算机设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN110764744A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 用于神经网络计算的中间表示生成方法和装置 |
CN110929851A (zh) * | 2019-11-27 | 2020-03-27 | 探智立方(北京)科技有限公司 | 基于计算图子图的ai模型自动生成的方法 |
CN110968321A (zh) * | 2019-10-25 | 2020-04-07 | 浙江省北大信息技术高等研究院 | 张量计算代码优化方法、装置、设备及介质 |
US20200133735A1 (en) * | 2018-10-31 | 2020-04-30 | EMC IP Holding Company LLC | Method, device, and computer program product for assigning tasks to dedicated processing resources |
CN111338635A (zh) * | 2020-02-20 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 计算图的图编译方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527272B (zh) * | 2020-12-25 | 2023-11-17 | 深圳云天励飞技术股份有限公司 | 对接tvm的方法及相关设备 |
-
2020
- 2020-12-25 CN CN202011565749.2A patent/CN112527272B/zh active Active
-
2021
- 2021-11-26 WO PCT/CN2021/133512 patent/WO2022135028A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110766147A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 神经网络编译器架构及编译方法 |
CN110764744A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 用于神经网络计算的中间表示生成方法和装置 |
US20200133735A1 (en) * | 2018-10-31 | 2020-04-30 | EMC IP Holding Company LLC | Method, device, and computer program product for assigning tasks to dedicated processing resources |
CN110968321A (zh) * | 2019-10-25 | 2020-04-07 | 浙江省北大信息技术高等研究院 | 张量计算代码优化方法、装置、设备及介质 |
CN110929851A (zh) * | 2019-11-27 | 2020-03-27 | 探智立方(北京)科技有限公司 | 基于计算图子图的ai模型自动生成的方法 |
CN111338635A (zh) * | 2020-02-20 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 计算图的图编译方法、装置、设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022135028A1 (zh) * | 2020-12-25 | 2022-06-30 | 深圳云天励飞技术股份有限公司 | 对接tvm的方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112527272B (zh) | 2023-11-17 |
WO2022135028A1 (zh) | 2022-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111209005B (zh) | 程序文件的编译方法、装置和计算机可读存储介质 | |
CN113283613B (zh) | 深度学习模型的生成方法、优化方法、装置、设备及介质 | |
CN112527272A (zh) | 对接tvm的方法及相关设备 | |
CN111079408A (zh) | 一种语种识别方法、装置、设备及存储介质 | |
CN115934275A (zh) | 任务处理方法及对话任务处理方法 | |
US11847436B2 (en) | Machine learning (ML) model-based compiler | |
CN110941655B (zh) | 一种数据格式转换方法及装置 | |
CN116560666B (zh) | 基于多层级代码生成的ai前端统一计算方法、装置及介质 | |
CN110489124B (zh) | 源代码执行方法、装置、存储介质及计算机设备 | |
EP4254175A1 (en) | Enriching code for code explainability | |
US20230186024A1 (en) | Text Processing Method, Device and Storage Medium | |
JP7344259B2 (ja) | 深層学習フレームワークにおけるパターン変換方法、装置、電子デバイス、コンピューター記憶媒体およびコンピュータープログラム製品 | |
KR20200103133A (ko) | 하둡 기반의 빅데이터 시스템에서 etl 절차를 수행하는 방법 및 장치 | |
CN112114817B (zh) | 基于cobol语言的数据字典字段信息获取方法及装置 | |
CN114201957A (zh) | 文本情感分析方法、装置及计算机可读存储介质 | |
CN113031952A (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
CN113204349A (zh) | 基于rl的超优化编译器建立、代码超优化方法及系统 | |
Malle et al. | The need for speed of ai applications: Performance comparison of native vs. browser-based algorithm implementations | |
CN112364053A (zh) | 一种搜索优化方法、装置、电子设备及存储介质 | |
CN111475403A (zh) | 测试脚本的动态生成方法及相关装置 | |
US12019992B2 (en) | Code enrichment for training language models relating to computer programming | |
US20230106226A1 (en) | Code enrichment for training language models relating to computer programming | |
CN117971355B (zh) | 基于自监督学习的异构加速方法、装置、设备及存储介质 | |
CN116795379A (zh) | 程序翻译模型的获取方法、程序翻译方法和装置 | |
Thingom et al. | A Review on Machine Learning in IoT Devices |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |