CN114911465A - 算子的生成方法、装置、设备以及存储介质 - Google Patents

算子的生成方法、装置、设备以及存储介质 Download PDF

Info

Publication number
CN114911465A
CN114911465A CN202210555212.0A CN202210555212A CN114911465A CN 114911465 A CN114911465 A CN 114911465A CN 202210555212 A CN202210555212 A CN 202210555212A CN 114911465 A CN114911465 A CN 114911465A
Authority
CN
China
Prior art keywords
target operator
operator
deep learning
target
configuration file
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
Application number
CN202210555212.0A
Other languages
English (en)
Other versions
CN114911465B (zh
Inventor
张云飞
陈威行
陈飞宇
陈天宇
元日升
于佃海
刘红雨
胡晓光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202210555212.0A priority Critical patent/CN114911465B/zh
Publication of CN114911465A publication Critical patent/CN114911465A/zh
Application granted granted Critical
Publication of CN114911465B publication Critical patent/CN114911465B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Machine Translation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了算子的生成方法、装置、设备以及存储介质,本公开涉及数据处理技术领域,尤其涉及人工智能、深度学习技术领域。具体实现方案为:根据深度学习框架所需处理的目标数据,确定深度学习框架的目标算子的配置文件,配置文件包括描述算子信息的第一配置项和描述算子逻辑运算的第二配置项;根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。根据本公开的方案,目标算子由于是基于深度学习框架所需处理的目标数据生成的,因此生成的目标算子在对目标数据进行计算时,可以更加适配目标数据对深度学习框架的数据处理能力和计算性能的要求。

Description

算子的生成方法、装置、设备以及存储介质
技术领域
本公开涉及数据处理技术领域,尤其涉及人工智能、深度学习技术领域。
背景技术
深度学习框架是人工智能领域的基础设施,算子是深度学习框架中最基础的组件。通过对深度学习框架中的算子进行调整,可以改善深度学习框架的性能以及其数据处理能力。
发明内容
本公开提供了一种算子的生成方法、装置、设备以及存储介质。
根据本公开的一方面,提供了一种算子的生成方法,包括:
根据深度学习框架所需处理的目标数据,确定深度学习框架的目标算子的配置文件,配置文件包括描述算子信息的第一配置项和描述算子逻辑运算的第二配置项;以及
根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
根据本公开的另一方面,提供了一种算子的生成装置,包括:
第一确定模块,用于根据深度学习框架所需处理的目标数据,确定深度学习框架的目标算子的配置文件,配置文件包括描述算子信息的第一配置项和描述算子逻辑运算的第二配置项;以及
生成模块,用于根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开任一实施例中的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开任一实施例中的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现本公开任一实施例中的方法。
根据本公开的方案,目标算子由于是基于深度学习框架所需处理的目标数据生成的,因此生成的目标算子在对目标数据进行计算时,可以更加适配目标数据对深度学习框架的数据处理能力和计算性能的要求。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例的算子的生成方法的示意图;
图2是根据本公开实施例的算子的生成方法的应用场景示意图;
图3是根据本公开实施例的算子的动态计算图的调用逻辑示意图;
图4是根据本公开实施例的算子的静态计算图的调用逻辑示意图;
图5是根据本公开实施例的算子的计算图的调用逻辑示意图;
图6是根据本公开实施例的算子的生成装置的示意图;
图7是用来实现本公开实施例的算子的生成方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本公开的实施方式提供一种算子的生成方法,如图1所示,其为本实施例的数据处理的方法的流程图,该方法可以包括以下步骤:
S101:根据深度学习框架所需处理的目标数据,确定深度学习框架的目标算子(Operator,op)的配置文件,配置文件包括描述算子信息的第一配置项和描述算子逻辑运算的第二配置项。以及
S102:根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数(kernel)基于源代码与深度学习框架的调用接口(Application Programming Interface,应用程序接口)关联,完成在深度学习框架中生成目标算子。
需要说明的是,目标数据可以是深度学习框架能够处理的任何数据,例如,图像数据、语音数据、文本数据中的任一种。
目标算子可以理解为深度学习框架包含的进行张量计算的基本逻辑单元。所生成的目标算子的具体类型和功能根据目标数据进行确定。例如,生成的目标算子可以是图像识别领域的卷积算子,自然语言处理领域的LSTM(Long Short-Term Memory,长短期记忆人工神经网络)算子,基础的函数激活ReLU(Rectified Linear Unit,线性整流函数)算子等。在此不做具体限定。目标算子可以是深度学习框架中从无到有所创建的新算子,例如,需要对目标数据进行新的数据处理操作时,则需要在深度学习框架中增加新的算子,以赋予深度学习框架新的数据处理能力。目标算子还可以是深度学习框架中基于已有的几个算子而融合形成的新算子,例如,需要提升深度学习框架对目标数据的处理效率时,则可以将几个已有算子融合为一个具有更强大算子的目标算子。
目标算子的生成可以包括算子的定义过程和核函数的编写过程。其中,本公开实施例的生成配置文件和生成目标算子的计算图的源代码,可以认为是算子的定义过程,具体的,算子的定义过程可以包括指定目标算子的输入、输出以及各种非张量类型的参数,并将这些信息注册到深度学习框架中。如果该目标算子有对应的反向算子,还需要将前向与反向的算子进行关联,用于完成框架训练时的自动微分处理。预先编写的核函数可以是利用编程语言自定义编写的核函数,也可以是采用已有的编写好的核函数。核函数可以在CPU(central processing unit,中央处理器)、GPU(graphics processing unit,图形处理器)等硬件设备上运行,完成目标算子逻辑运算的实现。
深度学习框架可以包含前端系统和后端系统。其中,后端系统可以通过C++(The C++Programming Language,c++编程语言)语言实现,后端系统包含了很多算子的具体逻辑运算。例如卷积操作的实际数据运算操作是通过C++实现的。前端系统可以通过Python语言实现,通过封装API接口实现对后端算子的Kernel的调用。为了能够被前端Python调用,需要将算子编译成特定格式的文件,在Python前端系统加载到内存,从而使得Python API可以调用后端系统,从而实现算子的计算逻辑函数。
深度学习框架的调用接口可以理解为能够调用目标算子的核函数的任何接口。例如,深度学习框架的调用接口可以为Python API。
源代码可以理解为由C++语言、或者CUDA(Compute Unified DeviceArchitecture,统一计算设备架构)编写的源代码文件。目标算子的核函数基于源代码与深度学习框架的调用接口关联时,源代码可以编译为目标文件或可执行文件。
描述算子信息的第一配置项可以为多个,第一配置项可以定义目标算子的输入、输出、支持的数据类型、算子运行或核函数运行所依赖的运行设备等内容。描述算子逻辑运算的第二配置项可以为多个,第二配置项可以定义具体的张量计算逻辑,算子或核函数所使用的具体函数,目标算子对应的反向算子,以及是否需要调用其他算子接口的函数等内容。
计算图可以理解为是深度学习框架中目标算子所对应的计算图部分。计算图可以是动态计算图和/或静态计算图。
根据本公开的方案,目标算子由于是基于深度学习框架所需处理的目标数据生成的,因此生成的目标算子在对目标数据进行计算时,可以更加适配目标数据对深度学习框架的数据处理能力和计算性能的要求。目标算子由于通过简单的配置文件即可完成算子的定义以及源代码的生成,因此提升了目标算子的简洁性,易用性,灵活性和开发便利性。基于配置文件生成的源代码由于可以是动态计算图或静态计算图的源代码,因此可以同时支持动、静态图机制,极大的降低了深度学习框架中算子的开发成本。目标算子由于是通过配置文件生成的,因此避免了大量的重复代码片段,使目标算子变得更加易读,并且也降低了生成目标算子的学习和开发成本。
在一个示例中,本公开实施例的技术方案可以应用在飞桨(Paddle Paddle)的深度学习框架中。利用配置文件实现的简洁的算子定义方式,有效降低了深度学习框架中的算子开发成本。本技术方案简化了深度学习框架的算子的定义方式,降低了算子的理解,学习和维护成本,对于飞桨的快速迭代升级有着积极的促进作用,同时简单的配置文件形式也有利于外部用户参与到飞桨的深度学习框架的建设中来,并进一步推动飞桨在开源社区中的发展。
根据本公开的实施例,图2是根据本公开实施例的分布式集群处理场景的示意图,该分布式集群系统为集群系统的一个示例,示例性的描述了可以利用该分布式集群系统进行算子的生成任务,本公开不限于单机或多机上的算子的生成,采用分布式的处理可以进一步提高算子的生成效率。如图2所示,在该分布式集群系统中包括多个节点(如服务器集群101、服务器102、服务器集群103、服务器104、服务器105,服务器105还可以连接电子设备,如手机1051及台式机1052),多个节点间,以及多个节点与连接的电子设备间可以共同执行一个或多个算子的生成任务。每个节点以及连接的电子设备也可以分别单独执行一个或多个算子的生成任务。例如,一个电子设备或服务器,可以通过自身的CPU、GPU完成一个或多个算子的生成任务。可选地,该分布式集群系统中的多个节点可以采用数据并行的算子的生成方式;若该分布式集群系统中的多个节点采用的是模型并行的模型训练方式,则多个节点可以基于不同的算子的生成任务。可选地,在每一个算子的生成任务完成后,多个节点之间都可以进行数据交换(如数据同步)。
在一种实施方式中,本公开的实施方式提供的算子的生成方法,包括步骤S101和S102,其中,步骤S101中的目标数据包括图像数据、语音数据、文本数据中的任一种。
需要说明的是,图像数据可以是计算机视觉技术领域中获取的图像数据,自然语言处理技术领域获取的语音数据,OCR(optical character recognition,光学字符识别)技术领域获取的文本数据。当目标数据是图像数据时,深度学习框架可以实现基于所包含的各算子对图像数据进行特征提取、进行图像内容识别、进行人脸识别认证等。当目标数据是语音数据时,深度学习框架可以实现基于所包含的各算子对语音数据进行特征提取、进行语音内容的识别、进行语音声纹识别认证等。当目标数据是文本数据时,深度学习框架可以实现基于所包含的各算子对文本数据进行文字特征提取、进行语义识别、进行相似文章推荐等。
根据本公开的方案,可以实现针对不同技术领域的目标数据的数据处理需求,在深度学习框架中增加适配相应数据处理需求的目标算子。进而提升具有该目标算子所在的深度学习框架对目标数据的数据处理能力和计算性能。
在一个示例中,深度学习框架只能够对图像中是否包含人物进行识别,现需要扩展深度学习框架的识别能力,使深度学习框架同时具备能够识别图像中的人物的性别能力。此时,则需要在深度学习框架中增加能够识别人物性别的算子。能够识别人物性别的算子的生成方法,包括:
根据深度学习框架所需处理的图像数据,确定深度学习框架的目标算子的配置文件,配置文件包括描述算子信息的第一配置项和描述算子逻辑运算的第二配置项。其中,第一配置项包括基于图像数据所确定的第一图像张量(作为目标算子的输入张量),基于图像数据所确定的第二图像张量(作为目标算子的输出张量),基于图像数据和所需的性别识别能力确定目标算子输出的第二图像张量的张量维度和数据类型。第二配置项包括基于图像数据所确定的核函数,核函数能够执行性别识别运算或执行图像性别特征的提取。第二配置项还可以包括反向算子,具体是否需要反向算子可以根据图像数据和最终的图像处理目的进行确定。
根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数基于源代码与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
在一个示例中,深度学习框架只能够对语音中是否包含唤醒词进行判断,现需要扩展深度学习框架的识别能力,使深度学习框架同时具备能够识别语音的说者是谁。此时,则需要在深度学习框架中增加能够识别语音的说者是谁的算子。能够识别语音的说者是谁的算子的生成方法,包括:
根据深度学习框架所需处理的语音数据,确定深度学习框架的目标算子的配置文件,配置文件包括描述算子信息的第一配置项和描述算子逻辑运算的第二配置项。其中,第一配置项包括基于语音数据所确定的第一语音张量(作为目标算子的输入张量),基于语音数据所确定的第二语音张量(作为目标算子的输出张量),基于语音数据和所需的说者是谁的识别能力确定目标算子输出的第二语音张量的张量维度和数据类型。第二配置项包括基于语音数据所确定的核函数,核函数能够执行说者是谁识别运算或执行说者是谁的语音特征的提取。第二配置项还可以包括反向算子,具体是否需要反向算子可以根据语音数据和最终的图像处理目的进行确定。
根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数基于源代码与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
在一个示例中,深度学习框架针对文本进行文字识别的效率较低,现需要加强深度学习框架的数据处理性能。此时,则需要在深度学习框架中将多个已有算子进行融合,得到具有更强大数据处理性能的目标算子。具有更强大数据处理性能的目标算子的生成方法,包括:
根据深度学习框架所需处理的文本数据,确定深度学习框架的目标算子的配置文件,配置文件包括描述算子信息的第一配置项和描述算子逻辑运算的第二配置项。其中,第一配置项包括基于文本数据所确定的第一文本张量(作为目标算子的输入张量),基于文本数据所确定的第二文本张量(作为目标算子的输出张量),基于文本数据确定目标算子输出的第二文本张量的张量维度和数据类型。第二配置项包括基于文本数据所确定的核函数。第二配置项还可以包括反向算子,具体是否需要反向算子可以根据文本数据和最终的图像处理目的进行确定。
根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数基于源代码与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
在一种实施方式中,本公开的实施方式提供的算子的生成方法,包括步骤S101和S102,其中,步骤S101中的第一配置项包括确定的目标算子的输入张量(Tensor)、输出张量的维度、输出张量的数据类型、非张量参数、数据布局和计算设备中的一个或多个。
数据类型可以包括如int8(表示8位有符号整型)、int32(表示32位有符号整型)、int64(表示64位有符号整型)、float(浮点型数据类型)、float32(32位浮点型数据类型)、double(双精度浮点型数据类型)、bool(布尔型变量)等类型。目标算子可以支持不同数据类型的张量。
计算设备可以包括CPU和GPU。算子可以支持在不同的硬件设备上执行计算。
根据本公开的方案,通过上述第一配置项所包含的目标算子的算子信息,能够更加准确快速的生成所需的算子。
在一种实施方式中,本公开的实施方式提供的算子的生成方法,包括步骤S101和S102,其中,步骤S101中的第二配置项包括确定的目标算子的核函数、反向算子、调用算子中的一个或多个。
根据本公开的方案,通过上述第二配置项所包含的目标算子的算子信息,能够更加准确快速的生成所需的算子。
在一种实施方式中,可以使用Yaml(Yet Another Markup Language,仍是一种标记语言)格式的文件生成目标算子的配置文件。
在一个实例中,Yaml格式的配置文件的配置项编写格式如下:
Figure BDA0003652129690000081
其中,api表示目标算子的名称,args表示目标算子的输入参数,output表示目标算子的输出类型,data_type表示目标算子的数据格式,infer_meta和func表示目标算子所使用的计算函数,backward表示目标算子的反向算子,kernel表示目标算子的核函数。
Yaml格式的配置文件有以下优势:使用args,output配置将目标算子的输入和输出分行表示,避免了输出与输入在同一行时输入参数过多导致输出参数被挤到屏幕外的问题,分行表示在易读性方面明显更优。kernel配置项可灵活定义kernel的选择逻辑,相比于目前其他框架全局统一的kernel选择机制,本方案可以为每个算子的kernel实现单独的选择机制,增加了开发人员的可操作性。backward配置项将前向和反向算子的关联表现的更为直观,现在只需要看配置文件就能知道一个目标算子是否有反向算子或者反向算子是哪个,而不需要再到其他源代码中或者其他配置文件中再查找对应的反向算子。
在一个示例中,配置文件可以包括以下配置项:
api:算子名称,同样也是该算子的API函数名。args:算子输入参数,即API函数的输入参数。output:算子输出类型,一般为Tensor或者Tensor[](Tensor数组),多个输出间用逗号“,”分隔开。可以使用”()”选择性标记输入的名字,如示例中的(out)。infer_meta:Infer Meta函数负责计算返回Tensor的维度与类型,这里主要配置算子使用的Infer Meta函数。func:调用的Infer Meta函数,默认输入为args项的所有参数和output参数。InferMeta param:如果Infer Meta函数的输入参数与args项的参数并不一一对应,则需要配置infer_meta下的param,配置时只需将非output项参数对应的变量名按Infer Meta函数的输入顺序填入即可。kernel:算子对应的计算kernel配置。func:kernel函数的注册名,默认输入为args项的所有参数和output参参数。Kernel param:如果Infer Meta函数的输入参数与args项的参数并不一一对应,则需要配置param项,配置时只需将非output项参数对应的变量名按kernel函数的输入顺序填入即可。data_type:指定调用kernel的data_type类型(对应kernel函数的模板参数T),默认不进行配置,会根据输入Tensor自动进行推导。如果kernel的data_type类型要由某个输入的参数决定,需要将该参数的变量名填入该项;如果kernel的data_type由多个参数决定,且有优先级的差异,则需要使用“>”将多个参数连接起来;如果kernel的data_type由多个参数决定,但没有优先级差异,则需要使用“,”将多个参数连接。backend:执行kernel的计算设备(CPU、GPU等),默认不进行配置,会根据输入Tensor自动进行推导。如果kernel的backend类型要由某个输入的参数决定,需要将该参数的变量名填入该项;如果kernel的backend由多个参数决定,且有优先级的差异,则需要使用“>”将多个参数连接起来;如果kernel的backend由多个参数决定,但没有优先级差异,则需要使用“,”将多个参数连接。backward:(可选)算子对应的反向算子名称,没有则生成纯前向API。invoke:为了支持算子级别的代码复用,可以使用invoke的方式直接调用现有C++API或自定义API实现函数,与C++函数调用格式相同,将输入参数按需填入即可。如zeros_like算子直接调用full_like算子函数接口(两者的算子功能相同)。invoke不仅提供了灵活的算子代码复用机制,还可以完成一些特殊算子函数的自定义实现。其他的深度学习框架中还没有类似的机制。
在一种实施方式中,本公开的实施方式提供的算子的生成方法,包括步骤S101和S102,该方法还可以包括以下步骤:
根据目标数据、目标算子的输入张量、输出张量的维度、输出张量的数据类型中的一个或多个,确定核函数。
根据本公开的方案,由于核函数是基于目标数据确定的,因此核函数与目标数据更加适配,目标算子利用核函数对目标数据进行计算,得到的计算结果的准确性更高。
在一种实施方式中,本公开的实施方式提供的算子的生成方法,包括步骤S101和S102,其中,步骤S102:根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子,可以包括:
步骤S1021:根据配置文件,利用代码生成器生成目标算子的计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
需要说明的是,代码生成器可以采用现有技术中的任意代码生成器,在此不做具体限定。
根据本公开的方案,利用代码生成器能够快速的基于配置文件生成计算图的源代码。
在一种实施方式中,本公开的实施方式提供的算子的生成方法,包括步骤S101和S102,其中,步骤S1021:根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子,可以包括:
根据配置文件,生成目标算子的动态计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
根据本公开的方案,基于配置文件生成的源代码由于可以是动态计算图的源代码,因此可以支持动态图机制,极大的降低了深度学习框架中算子的开发成本。
在一种实施方式中,本公开的实施方式提供的算子的生成方法,包括步骤S101和S102,其中,步骤S102:根据配置文件,生成目标算子的动态计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子,可以包括:
根据配置文件,生成目标算子的动态计算图中的第一接口的源代码,第一接口能够选择和调用目标算子的核函数。
根据配置文件,生成目标算子的动态计算图中的第二接口的源代码,第二接口能够调用第一接口并进行自动微分。
根据配置文件,生成目标算子的动态计算图中的第三接口的源代码,第三接口能够将第二接口供深度学习框架的调用接口调用,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
根据本公开的方案,可以实现深度学习框架的调用接口对核函数的调用,以使深度学习框架可以调用目标算子对目标数据进行处理。
深度学习框架一般需要涉及前端系统(Python)和后端系统(C++)。用户自定义算子编写的是后端C++代码。此种情况下,为了能够被前端Python调用,则需要将其编译成特定格式的文件,以在Python前端系统加载到内存,并被调用C++后端系统实现的算子计算逻辑函数。
在一个示例中,如图3所示,步骤S102的流程框图可以为:利用目标算子的Yaml配置文件中的算子信息生成从Python API到计算Kernel间的调用接口实现的源代码。生成的源代码主要分为三个环节:
C++API(即第一接口)是一套与Python API参数对齐的C++接口,内部封装了底层kernel的选择和调用等逻辑,供上层接口灵活使用。具体的,第一接口的源代码的逻辑可以包括:解析输入参数、从kernel库中找到对应kernel、准备kernel输入参数、执行InferMeta函数(用于做返回结果张量的信息推导)推导输出Tensor维度和类型、执行kernel。
动态图(即动态计算图)前向函数和动态图反向节点是在C++API的基础上进行了封装,组成一个提供自动微分功能的C++函数接口(即第二接口)。具体的,第二接口的源代码的逻辑可以包括:调用C++API、处理输入和输出Meta(张量的元信息)信息、是否计算反向梯度、创建反向节点。需要说明的是,在目标算子无需计算反向梯度时,可以只生成动态图前向函数的源代码,即C++函数接口只包含动态图前向函数。
Python-C函数(即第三接口)负责将支持自动微分功能的C++函数接口暴露到Python层供Python API调用。具体的,第三接口的源代码的逻辑可以包括:从配置文件的算子信息中解析参数、调用动态计算图支持自动微分的C++函数接口、返回计算结果。
在一种实施方式中,本公开的实施方式提供的算子的生成方法,包括步骤S101和S102,其中,步骤S102:根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子,可以包括:
步骤S1022:根据配置文件,生成目标算子的静态计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。为静态图自动生成注册算子相关的实现代码,注册后的算子可供静态图执行器使用。
根据本公开的方案,基于配置文件生成的源代码由于可以是静态计算图的源代码,因此可以支持静态图机制,极大的降低了深度学习框架中算子的开发成本。
在一种实施方式中,本公开的实施方式提供的算子的生成方法,包括步骤S101和S102,其中,步骤S1022:根据配置文件,生成目标算子的静态计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子,可以包括:
根据配置文件,生成目标算子的静态计算图中的注册器的源代码,注册器能够基于配置文件对目标算子进行信息注册;
根据配置文件,生成目标算子的静态计算图中的信息存储模块的源代码,信息存储模块能够基于配置文件存储目标算子的关键信息,算子的关键信息能够被静态图执行器基于注册器注册的信息进行调用,以使目标算子的核函数基于静态图执行器与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
根据本公开的方案,可以实现深度学习框架的调用接口对核函数的调用,以使深度学习框架可以调用目标算子对目标数据进行处理。
在一个示例中,静态计算图的执行流程与动态计算图的执行流程不同,所以生成的代码也有所差异,静态计算图由于是先组网后计算,因此Python API主要负责组网,算子的调度和kernel的计算由静态图执行器来完成。具体的,如图4所示,步骤S102的流程框图可以为:根据Yaml配置文件,生成注册器的源代码,注册器包括静态图op注册(静态图即静态计算图,op即算子)和op_proto静态数据。静态图op注册用于将配置文件中的算子信息注册到深度学习框架中。op_proto静态数据用于存储配置信息中的第一配置项和/或第二配置项的算子信息,以供被调用。注册器的源代码逻辑包括:生成Op Maker,用于在静态计算图中定义目标算子的输入、输出参数。使用REGISTER_OPERATOR(寄存器运算符)将目标算子的名称以及上述Op Maker等信息进行注册。上述代码生成之后,深度学习框架会自动完成目标算子的信息注册,以及生成op_proto静态数据。静态图执行器在运行时,通过创建的算子关键信息(op info)便可以调用op_proto静态数据,找到对应的算子信息并启动对应的kernel进行计算。
在一个示例中,如图5所示,根据配置文件,可以同时生成目标算子的静态计算图的源代码和动态计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。基于配置文件可以同时生成动态计算图和静态计算图的源代码,因此可以同时支持动、静态图机制,极大的降低了深度学习框架中算子的开发成本。
本公开的实施方式提供一种算子的生成装置,如图6所示,其为本实施例的算子的生成装置的结构框图,该装置可以包括:
第一确定模块601,用于根据深度学习框架所需处理的目标数据,确定深度学习框架的目标算子的配置文件,配置文件包括描述算子信息的第一配置项和描述算子逻辑运算的第二配置项;以及
生成模块602,用于根据配置文件,生成目标算子的计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
在一种实施方式中,目标数据包括图像数据、语音数据、文本数据中的任一种。
在一种实施方式中,第一配置项包括确定的目标算子的输入张量、输出张量的维度、输出张量的数据类型、非张量参数、数据布局和计算设备中的一个或多个。
在一种实施方式中,第二配置项包括确定的目标算子的核函数、反向算子、调用算子中的一个或多个。
在一种实施方式中,算子的生成装置还包括:
第二确定模块,用于根据目标数据、目标算子的输入张量、输出张量的维度、输出张量的数据类型中的一个或多个,确定核函数。
在一种实施方式中,生成模块602用于根据配置文件,利用代码生成器生成目标算子的计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
在一种实施方式中,生成模块602包括:
第一生成子模块,用于根据配置文件,生成目标算子的动态计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
在一种实施方式中,第一生成子模块,用于根据配置文件,生成目标算子的动态计算图中的第一接口的源代码,第一接口能够选择和调用目标算子的核函数;根据配置文件,生成目标算子的动态计算图中的第二接口的源代码,第二接口能够调用第一接口并进行自动微分;根据配置文件,生成目标算子的动态计算图中的第三接口的源代码,第三接口能够将第二接口供深度学习框架的调用接口调用,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
在一种实施方式中,生成模块602包括:
第二生成子模块,用于根据配置文件,生成目标算子的静态计算图的源代码,以使目标算子的核函数与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
在一种实施方式中,第二生成子模块,用于根据配置文件,生成目标算子的静态计算图中的注册器的源代码,注册器能够基于配置文件对目标算子进行信息注册;根据配置文件,生成目标算子的静态计算图中的信息存储模块的源代码,信息存储模块能够基于配置文件存储目标算子的关键信息,算子的关键信息能够被静态图执行器基于注册器注册的信息进行调用,以使目标算子的核函数基于静态图执行器与深度学习框架的调用接口关联,完成在深度学习框架中生成目标算子。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如算子的生成方法。例如,在一些实施例中,算子的生成方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的算子的生成方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行算子的生成方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (21)

1.一种算子的生成方法,包括:
根据深度学习框架所需处理的目标数据,确定所述深度学习框架的目标算子的配置文件,所述配置文件包括描述算子信息的第一配置项和描述算子逻辑运算的第二配置项;以及
根据所述配置文件,生成所述目标算子的计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
2.根据权利要求1所述的方法,其中,所述目标数据包括图像数据、语音数据、文本数据中的任一种。
3.根据权利要求1或2所述的方法,其中,所述第一配置项包括确定的所述目标算子的输入张量、输出张量的维度、输出张量的数据类型、非张量参数、数据布局和计算设备中的一个或多个;所述第二配置项包括确定的所述目标算子的核函数、反向算子、调用算子中的一个或多个;和/或
所述配置文件为Yaml格式的文件。
4.根据权利要求1或2所述的方法,还包括:
根据所述目标数据、所述目标算子的输入张量、输出张量的维度、输出张量的数据类型中的一个或多个,确定所述核函数。
5.根据权利要求1或2所述的方法,其中,所述根据所述配置文件,生成所述目标算子的计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子,包括;
根据所述配置文件,利用代码生成器生成所述目标算子的计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
6.根据权利要求1或2所述的方法,其中,所述根据所述配置文件,生成所述目标算子的计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子,包括;
根据所述配置文件,生成所述目标算子的动态计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
7.根据权利要求6所述的方法,其中,所述根据所述配置文件,生成所述目标算子的动态计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子,包括:
根据所述配置文件,生成所述目标算子的动态计算图中的第一接口的源代码,所述第一接口能够选择和调用所述目标算子的核函数;
根据所述配置文件,生成所述目标算子的动态计算图中的第二接口的源代码,所述第二接口能够调用所述第一接口并进行自动微分;
根据所述配置文件,生成所述目标算子的动态计算图中的第三接口的源代码,所述第三接口能够将所述第二接口供深度学习框架的调用接口调用,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
8.根据权利要求1或2所述的方法,其中,所述根据所述配置文件,生成所述目标算子的计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子,包括;
根据所述配置文件,生成所述目标算子的静态计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
9.根据权利要求8所述的方法,其中,所述根据所述配置文件,生成所述目标算子的静态计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子,包括:
根据所述配置文件,生成所述目标算子的静态计算图中的注册器的源代码,所述注册器能够基于所述配置文件对所述目标算子进行信息注册;
根据所述配置文件,生成所述目标算子的静态计算图中的信息存储模块的源代码,所述信息存储模块能够基于所述配置文件存储所述目标算子的关键信息,所述算子的关键信息能够被静态图执行器基于所述注册器注册的信息进行调用,以使所述目标算子的核函数基于所述静态图执行器与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
10.一种算子的生成装置,包括:
第一确定模块,用于根据深度学习框架所需处理的目标数据,确定所述深度学习框架的目标算子的配置文件,所述配置文件包括描述算子信息的第一配置项和描述算子逻辑运算的第二配置项;以及
生成模块,用于根据所述配置文件,生成所述目标算子的计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
11.根据权利要求10所述的装置,其中,所述目标数据包括图像数据、语音数据、文本数据中的任一种。
12.根据权利要求10或11所述的装置,其中,所述第一配置项包括确定的所述目标算子的输入张量、输出张量的维度、输出张量的数据类型、非张量参数、数据布局和计算设备中的一个或多个;所述第二配置项包括确定的所述目标算子的核函数、反向算子、调用算子中的一个或多个;和/或
所述配置文件为Yaml格式的文件。
13.根据权利要求10或11所述的装置,还包括:
第二确定模块,用于根据所述目标数据、所述目标算子的输入张量、输出张量的维度、输出张量的数据类型中的一个或多个,确定所述核函数。
14.根据权利要求10或11所述的装置,其中,所述生成模块,用于根据所述配置文件,利用代码生成器生成所述目标算子的计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
15.根据权利要求10或11所述的装置,其中,所述生成模块包括:
第一生成子模块,用于根据所述配置文件,生成所述目标算子的动态计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
16.根据权利要求15所述的装置,其中,所述第一生成子模块,用于根据所述配置文件,生成所述目标算子的动态计算图中的第一接口的源代码,所述第一接口能够选择和调用所述目标算子的核函数;根据所述配置文件,生成所述目标算子的动态计算图中的第二接口的源代码,所述第二接口能够调用所述第一接口并进行自动微分;根据所述配置文件,生成所述目标算子的动态计算图中的第三接口的源代码,所述第三接口能够将所述第二接口供深度学习框架的调用接口调用,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
17.根据权利要求10或11所述的装置,其中,所述生成模块包括:
第二生成子模块,用于根据所述配置文件,生成所述目标算子的静态计算图的源代码,以使所述目标算子的核函数与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
18.根据权利要求17所述的装置,其中,所述第二生成子模块,用于根据所述配置文件,生成所述目标算子的静态计算图中的注册器的源代码,所述注册器能够基于所述配置文件对所述目标算子进行信息注册;根据所述配置文件,生成所述目标算子的静态计算图中的信息存储模块的源代码,所述信息存储模块能够基于所述配置文件存储所述目标算子的关键信息,所述算子的关键信息能够被静态图执行器基于所述注册器注册的信息进行调用,以使所述目标算子的核函数基于所述静态图执行器与所述深度学习框架的调用接口关联,完成在所述深度学习框架中生成所述目标算子。
19.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至9中任一项所述的方法。
20.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1至9中任一项所述的方法。
21.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至9中任一项所述的方法。
CN202210555212.0A 2022-05-19 2022-05-19 算子的生成方法、装置、设备以及存储介质 Active CN114911465B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210555212.0A CN114911465B (zh) 2022-05-19 2022-05-19 算子的生成方法、装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210555212.0A CN114911465B (zh) 2022-05-19 2022-05-19 算子的生成方法、装置、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN114911465A true CN114911465A (zh) 2022-08-16
CN114911465B CN114911465B (zh) 2023-01-10

Family

ID=82769470

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210555212.0A Active CN114911465B (zh) 2022-05-19 2022-05-19 算子的生成方法、装置、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN114911465B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116107669A (zh) * 2023-04-14 2023-05-12 北京大学 深度学习框架的算子注册方法、装置、设备及存储介质
CN116257286A (zh) * 2023-03-13 2023-06-13 北京百度网讯科技有限公司 一种文件处理方法、装置、电子设备及存储介质
CN116561075A (zh) * 2023-05-15 2023-08-08 北京百度网讯科技有限公司 动态链接库文件的生成方法、算子的调用方法及装置
WO2024040844A1 (zh) * 2022-08-24 2024-02-29 北京百度网讯科技有限公司 模型调试方法、装置、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190114370A1 (en) * 2017-10-13 2019-04-18 Kpmg Llp System and method for analysis of structured and unstructured data
CN111783952A (zh) * 2020-06-30 2020-10-16 北京百度网讯科技有限公司 配置方法、装置、系统、电子设备以及存储介质
CN112270399A (zh) * 2020-09-29 2021-01-26 北京百度网讯科技有限公司 基于深度学习的算子注册处理方法、装置及电子设备
CN112558942A (zh) * 2020-12-22 2021-03-26 上海商汤智能科技有限公司 算子注册方法和相关产品
CN113342346A (zh) * 2021-05-18 2021-09-03 北京百度网讯科技有限公司 深度学习框架的算子注册方法、装置、设备和存储介质
CN113449858A (zh) * 2020-03-27 2021-09-28 华为技术有限公司 一种神经网络模型的处理方法以及相关设备
CN113986234A (zh) * 2021-09-19 2022-01-28 苏州浪潮智能科技有限公司 一种跨平台模型推理的方法、系统、存储介质及设备
CN114492321A (zh) * 2021-12-31 2022-05-13 中国科学院自动化研究所 基于xml的神经网络模型生成方法、设备和存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190114370A1 (en) * 2017-10-13 2019-04-18 Kpmg Llp System and method for analysis of structured and unstructured data
CN113449858A (zh) * 2020-03-27 2021-09-28 华为技术有限公司 一种神经网络模型的处理方法以及相关设备
CN111783952A (zh) * 2020-06-30 2020-10-16 北京百度网讯科技有限公司 配置方法、装置、系统、电子设备以及存储介质
CN112270399A (zh) * 2020-09-29 2021-01-26 北京百度网讯科技有限公司 基于深度学习的算子注册处理方法、装置及电子设备
CN112558942A (zh) * 2020-12-22 2021-03-26 上海商汤智能科技有限公司 算子注册方法和相关产品
CN113342346A (zh) * 2021-05-18 2021-09-03 北京百度网讯科技有限公司 深度学习框架的算子注册方法、装置、设备和存储介质
CN113986234A (zh) * 2021-09-19 2022-01-28 苏州浪潮智能科技有限公司 一种跨平台模型推理的方法、系统、存储介质及设备
CN114492321A (zh) * 2021-12-31 2022-05-13 中国科学院自动化研究所 基于xml的神经网络模型生成方法、设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HAOBBNUANMM: "【架构分析】TensorFlow 自定义算子实现原理分析", 《HTTPS://BLOG.CSDN.NET/HAOBBNUANMM/ARTICLE/DETAILS/112312235》 *
SOFTWARE ENGINEERING: "Extending TensorFlow with Custom C++ Operations", 《HTTPS://WWW.GRESEARCH.CO.UK/BLOG/ARTICLE/EXTENDING-TENSORFLOW-WITH-CUSTOM-C-OPERATIONS/》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024040844A1 (zh) * 2022-08-24 2024-02-29 北京百度网讯科技有限公司 模型调试方法、装置、电子设备及存储介质
CN116257286A (zh) * 2023-03-13 2023-06-13 北京百度网讯科技有限公司 一种文件处理方法、装置、电子设备及存储介质
CN116257286B (zh) * 2023-03-13 2023-09-15 北京百度网讯科技有限公司 一种文件处理方法、装置、电子设备及存储介质
CN116107669A (zh) * 2023-04-14 2023-05-12 北京大学 深度学习框架的算子注册方法、装置、设备及存储介质
CN116107669B (zh) * 2023-04-14 2023-08-18 北京大学 深度学习框架的算子注册方法、装置、设备及存储介质
CN116561075A (zh) * 2023-05-15 2023-08-08 北京百度网讯科技有限公司 动态链接库文件的生成方法、算子的调用方法及装置
CN116561075B (zh) * 2023-05-15 2024-01-30 北京百度网讯科技有限公司 动态链接库文件的生成方法、算子的调用方法及装置

Also Published As

Publication number Publication date
CN114911465B (zh) 2023-01-10

Similar Documents

Publication Publication Date Title
CN114911465B (zh) 算子的生成方法、装置、设备以及存储介质
JP7488006B2 (ja) 機械学習を使用した表形式データの内容特定方法、システム、プログラム
CN111177231A (zh) 报表生成方法和报表生成装置
US11625248B2 (en) Operator registration method and apparatus for deep learning framework, device and storage medium
CN113031946A (zh) 一种渲染页面组件的方法和装置
CN111966361A (zh) 用于确定待部署模型的方法、装置、设备及其存储介质
US20220198153A1 (en) Model training
CN114201242B (zh) 用于处理数据的方法、装置、设备以及存储介质
CN115509522A (zh) 面向低代码场景的接口编排方法、系统、电子设备
CN113762109B (zh) 一种文字定位模型的训练方法及文字定位方法
CN112862934B (zh) 用于处理动画的方法、装置、设备、介质和产品
CN112926008B (zh) 生成表单页面的方法、装置、电子设备和存储介质
CN112947916A (zh) 用于实现在线画布的方法、装置、设备以及存储介质
CN114817845B (zh) 数据处理方法、装置、电子设备及存储介质
CN114970666B (zh) 一种口语处理方法、装置、电子设备及存储介质
CN113360672B (zh) 用于生成知识图谱的方法、装置、设备、介质和产品
CN115269431A (zh) 一种接口测试方法、装置、电子设备及存储介质
CN115081607A (zh) 基于嵌入算子的反向计算方法、装置、设备以及存储介质
CN115762515B (zh) 用于语音识别的神经网络的处理和应用方法、装置及设备
CN112632293B (zh) 行业图谱的构建方法、装置、电子设备及存储介质
CN115034198B (zh) 语言模型中嵌入模块计算优化的方法
CN115660064B (zh) 基于深度学习平台的模型训练方法、数据处理方法和装置
US10831261B2 (en) Cognitive display interface for augmenting display device content within a restricted access space based on user input
US20210326514A1 (en) Method for generating interpretation text, electronic device and storage medium
CN113362428A (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
GR01 Patent grant
GR01 Patent grant