CN117539477A - 深度学习框架的应用程序接口api的优化方法和装置 - Google Patents
深度学习框架的应用程序接口api的优化方法和装置 Download PDFInfo
- Publication number
- CN117539477A CN117539477A CN202311754863.3A CN202311754863A CN117539477A CN 117539477 A CN117539477 A CN 117539477A CN 202311754863 A CN202311754863 A CN 202311754863A CN 117539477 A CN117539477 A CN 117539477A
- Authority
- CN
- China
- Prior art keywords
- api
- end api
- operator
- static
- graph
- 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
- 238000013135 deep learning Methods 0.000 title claims abstract description 95
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000005457 optimization Methods 0.000 title description 17
- 230000003068 static effect Effects 0.000 claims abstract description 103
- 230000006870 function Effects 0.000 claims abstract description 44
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 409
- 238000010586 diagram Methods 0.000 claims description 49
- 238000004364 calculation method Methods 0.000 claims description 26
- 238000005516 engineering process Methods 0.000 claims description 15
- 238000013528 artificial neural network Methods 0.000 claims description 14
- 238000004806 packaging method and process Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 230000006855 networking Effects 0.000 claims description 10
- 238000004891 communication Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 230000010365 information processing Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 238000003062 neural network model Methods 0.000 description 4
- 238000003672 processing method Methods 0.000 description 4
- 238000013136 deep learning model Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Computer Security & Cryptography (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了一种深度学习框架的应用程序接口API的优化方法和装置,涉及深度学习技术领域。具体实施方案为:获取API配置文件,API配置文件包括多个算子的描述信息和初始前端API的逻辑功能;基于API配置文件,生成算子的动态图后端API和静态图后端API;根据动态图后端API和静态图后端API,生成深度学习框架的目标后端API,并基于初始前端API的入口代码,生成深度学习框架各模式通用的目标前端API。
Description
技术领域
本公开涉及深度学习技术领域,尤其涉及一种深度学习框架的API的优化方法和装置。
背景技术
应用程序接口(Application Programming Interface,API)是一组定义了各种类、函数、方法和数据结构的规范,用于不同软件组件之间的交互和通信,开发人员可以基于API,使用深度学习框架提供的功能和工具来构建、训练和部署深度学习模型。
发明内容
本公开提供了一种用于深度学习框架的API的优化方法、装置、电子设备及存储介质。
根据本公开的一方面,提供了一种深度学习框架的应用程序接口API的优化方法,包括:获取API配置文件,所述API配置文件包括多个算子的描述信息和初始前端API的逻辑功能;基于所述API配置文件,生成所述算子的动态图后端API和静态图后端API;根据所述动态图后端API和静态图后端API,生成深度学习框架的目标后端API,并基于所述初始前端API的入口代码,生成所述深度学习框架各模式通用的目标前端API。
根据本公开的另一方面,提供了一种深度学习框架的API的优化装置,包括:获取模块,用于获取API配置文件,所述API配置文件包括多个算子的描述信息和初始前端API的逻辑功能;第一生成模块,用于基于所述API配置文件,生成所述算子的动态图后端API和静态图后端API;第二生成模块,用于根据所述动态图后端API和静态图后端API,生成深度学习框架的目标后端API,并基于所述初始前端API的入口代码,生成所述深度学习框架各模式通用的目标前端API。
根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述一方面实施例所述的深度学习框架的API的优化方法。
根据本公开另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其上存储有计算机程序/指令,所述计算机指令用于使所述计算机执行上述一方面实施例所述的深度学习框架的API的优化方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述一方面实施例所述的深度学习框架的API的优化方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1为本公开实施例提供的一种深度学习框架的API的优化方法的流程示意图;
图2为本公开实施例提供的基于YAML格式的API配置文件的示意图;
图3为本公开实施例提供的另一种深度学习框架的API的优化方法的流程示意图;
图4为本公开实施例提供的生成目标后端API的流程示意图;
图5为本公开实施例提供的调用深度学习框架的API的流程示意图;
图6为本公开实施例提供的另一种深度学习框架的API的优化方法的流程示意图;
图7为本公开实施例提供的一种深度学习框架的API的优化装置的结构示意图;
图8为用来实现本公开实施例的深度学习框架的API的优化方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面参考附图描述本公开实施例的深度学习框架的API的优化方法、装置、电子设备及存储介质。
深度学习(Deep Learning,DL),是机器学习(Machine Learning,ML)领域中一个新的研究方向,是学习样本数据的内在规律和表示层次,使得机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据的一门科学,广泛应用于语音和图像识别。
应用程序接口(Application Programming Interface,API)是一组定义了各种类、函数、方法和数据结构的规范,用于不同软件组件之间的交互和通信。API提供了一种方式,使开发人员能够使用深度学习框架提供的功能和工具来构建、训练和部署深度学习模型。这些API允许用户通过编程方式定义神经网络的架构、配置训练参数、执行前向传播和反向传播算法,以及进行模型评估和推理。
深度学习框架是一种软件工具,用于帮助开发者设计、构建和训练深度神经网络模型。它提供了一系列的API和工具,使得开发者可以方便地定义、配置和优化神经网络的结构,并利用大规模数据进行模型的训练和推理。一些常见的深度学习框架包括:TensorFlow、PyTorch、Keras、Caffe、MXNet等。
图1为本公开实施例提供的一种深度学习框架的API的优化方法的流程示意图。
如图1所示,该深度学习框架的API的优化方法,可包括:
S101,获取API配置文件,API配置文件包括多个算子的描述信息和初始前端API的逻辑功能。
需要说明的是,本公开实施例中深度学习框架的API的优化方法的执行主体可为具有信息处理能力的硬件设备和/或驱动该硬件设备工作所需必要的软件。可选地,执行主体可包括服务器、用户终端及其他智能设备。可选地,用户终端包括但不限于手机、电脑、智能语音交互设备等。本公开实施例不作具体限定。
在一些实现中,API配置文件用于存储API的设置和参数,可以基于代码生成的相关逻辑和模板,对API的配置文件进行编写,得到API配置文件。可选地,可以编写前端API的功能代码,得到API配置文件。API配置文件中包括多个算子的描述信息和初始前端API的逻辑功能。其中,算子的描述信息包括但不限于:算子的输入、算子的输出、算子输入/输出的类型、算子调用的函数等。
在一些实现中,初始前端API的逻辑功能可以用于确保应用程序能够顺利地加载和运行。可选地,可以基于前端API的功能代码,实现初始前端API的逻辑功能。
可选地,API配置文件的格式包括但不限于:JS键值对数据(JavaScript ObjectNotation,JSON)、另一种标记语言(YAML Ain't Markup Language,YAML)、初始化(Initialization,INI)、可扩展标记语言(eXtensible Markup Language,XML)等格式。例如,图2示出的是基于YAML格式的API配置文件。
S102,基于API配置文件,生成算子的动态图后端API和静态图后端API。
可以理解的是,在深度学习中,算子是指执行某种数学运算的函数或操作符。它们通常用于神经网络模型中,作为模型的组成部分。动态图和静态图是两种不同的构建神经网络模型的方法,无论是静态图还是动态图,都需要使用算子来构建神经网络模型。
也就是说,可以基于API配置文件中的算子的描述信息,使用代码自动生成技术,生成动态图的代码和静态图的代码,减少了人工的编码量。进而对代码进行封装,得到动态图后端API和静态图后端API。
S103,根据动态图后端API和静态图后端API,生成深度学习框架的目标后端API,并基于初始前端API的入口代码,生成深度学习框架各模式通用的目标前端API。
在一些实现中,可以通过将动态图后端API和静态图后端API进行组合并封装,得到深度学习框架的目标后端API。可选地,可以将动态图后端API和静态图后端API进行组合,并使用代码自动生成技术,生成组合后的代码,并对代码进行封装得到目标后端API。
可以理解的是,初始前端API的入口代码是指在前端应用程序的开发中,用于初始化应用程序的主要代码,是整个应用程序启动和运行的起点。
在一些实现中,可以基于深度学习框架,确定初始前端API的入口代码。可选地,通过对深度学习框架进行解析,可以获取初始前端API的入口代码。进而对入口代码进行封装,可以得到目标前端API。由于目标前端API只提供深度学习框架的接入功能,目标前端API为深度学习框架各模式通用的目标前端API。
根据本公开实施例提供的深度学习框架的API的优化方法,通过获取深度学习框架的API配置文件,并基于配置文件生成算子的动态图代码和静态图代码,进而生成动态图后端API和静态图后端API,使用代码生成技术,生成后端API代码,可以减少人工代码工作量,具有良好的扩展性。基于动态图后端API和静态图后端API生成目标后端API,通过统一后端API形态,使得后端API可以实现自动分发,通过提供静态图后端API,可以提高框架易用性。基于初始前端API的入口代码,生成深度学习框架各模式通用的目标前端API,实现统一前端API,使得前端API更加简洁,减少前端API代码量。通过将前端代码逻辑下沉至后端,可以提高执行效率。
图3为本公开实施例提供的一种深度学习框架的API的优化方法的流程示意图。
如图3所示,该深度学习框架的API的优化方法,可包括:
S301,获取API配置文件,API配置文件包括多个算子的描述信息和初始前端API的逻辑功能。
步骤S301中的相关内容可参见上述实施例,这里不再赘述。
S302,基于API配置文件,生成算子的动态图后端API和静态图后端API。
可以理解的是,深度学习框架的前端API是提供给用户使用的编程接口,它通过代码来定义和组织深度学习模型的结构、参数和计算过程。通过对前端API进行解析,有助于理解深度学习框架的工作原理,帮助更好地利用框架。
可选地,可以基于API配置文件,确定深度学习框架的初始前端API,并通过对深度学习框架的初始前端API进行解析,得到初始前端API的入口代码,以及动态图分支路径和静态图的分支路径,并从静态图的分支路径中提取前端API的逻辑功能。
其中,动态图分支路径是指通过使用动态图API来构建模型和进行计算的路径,而静态图的分支路径则是基于静态图API来构建模型和进行计算的路径。前端API的逻辑功能指的是通过调用静态图API实现的具体功能。
可选地,可以基于算子的描述信息和初始前端API的逻辑功能,通过代码自动生成技术生成静态图的功能代码,并将静态图的功能代码进行封装,得到静态图后端API,有助于深度学习框架的高性能计算,提高深度学习框架的执行效率。
可选地,可以基于算子的描述信息和动态图的分支路径,通过代码自动生成技术生成动态图的功能代码,并将动态图的功能代码进行封装,得到动态图后端API,有助于提升深度学习框架的灵活性,提高深度学习框架的执行效率和可靠性。
S303,根据动态图后端API和静态图后端API,生成深度学习框架的目标后端API,并基于初始前端API的入口代码,生成深度学习框架各模式通用的目标前端API。
在一些实现中,通过对动态图后端API和静态图后端API进行组合,得到组合后端API,并对组合后端API进行封装,生成目标后端API,为动态图和静态图模式提供了统一的后端API,实现在目标后端API内部进行不同模式的分发,提高的框架的复用性和易用性。
示例性说明,如图4所示的生成目标后端API的流程示意图。通过API配置文件进行读取,可以确定深度学习框架的初始前端API,并对深度学习框架的初始前端API进行解析,可以获取动态图分支路径和静态图的分支路径,并从静态图的分支路径中提取前端API的逻辑功能。
进一步地,基于API配置文件中算子的描述信息和初始前端API的逻辑功能,使用代码自动生成技术生成静态图的功能代码,并进行封装,得到静态图后端API。基于算子的描述信息和动态图的分支路径,使用代码自动生成技术生成动态图的功能代码,并进行封装,得到动态图后端API。
进一步地,将动态图后端API和静态图后端API进行组合,得到组合后端API,并对组合后端API进行封装,生成目标后端API。
步骤S303中的生成目标前端API的相关内容可参见上述实施例,这里不再赘述。
S304,通过目标前端API接收输入的编程信息,并向目标后端API发送编程信息。
在一些实现中,可以通过编写代码,调用目标前端API,目标前端API并将代码包含的编程信息发送至目标后端API。可选地,可以在代码中写入目标前端API和目标后端API的标识信息,以确定需要调用目标前端API和目标后端API。
可选地,编程信息包括但不限于:API标识信息、应用场景、算子信息、算子的输入数据、算子的连接关系等。其中,应用场景包括静态图和动态图。
S305,由目标后端API基于编程信息,从动态图后端API和静态图后端API中确定待调用后端API。
在一些实现中,目标后端API可以基于编程信息,从动态图后端API和静态图后端API中确定待调用后端API。可选地,可以基于编程信息确定编程信息的应用场景,进而确定待调用后端API。例如,若确定应用场景为动态图,则待调用后端API为动态图后端API;若确定应用场景为静态图,则待调用后端API为静态图后端API。
S306,向待调用后端API发送编程信息,并由待调用后端API执行编码信息,得到执行结果。
在一些实现中,若待调用后端API为动态图后端API,由动态图后端API对编程信息进行算子计算,得到计算结果,作为执行结果,可以实现深度学习框架的灵活性,有助于提高开发效率。
可选地,可以由动态图后端API根据编码信息,从算子库中确定用于计算的第一算子,并基于编码信息确定第一算子的输入数据,并通过第一算子对输入数据进行计算,得到计算结果。
可选地,可以基于编码信息中的算子信息从算子库中确定第一算子,并从编码信息中确定第一算子输入数据,第一算子根据输入数据进行计算,可以得到计算结果。
在一些实现中,若待调用后端API为静态图后端API,由静态图后端API根据编程信息进行算子组网,得到目标神经网络,可以提供高效性、部署能力强的深度学习框架。
可选地,可以由静态图后端API根据编码信息,从算子库中确定第二算子,并基于编码信息确定第二算子的连接关系,并按照连接关系对第二算子进行组网,得到目标神经网络。
可选地,可以基于编码信息中的算子信息从算子库中确定第二算子,并从编码信息中确定第二算子的连接关系,进而按照连接关系将第二算子进行连接,得到目标神经网络。
根据本公开实施例提供的深度学习框架的API的优化方法,通过获取深度学习框架的API配置文件,并基于配置文件生成算子的动态图代码和静态图代码,进而生成动态图后端API和静态图后端API,使用代码生成技术,生成后端API代码,可以减少人工代码工作量,具有良好的扩展性。基于动态图后端API和静态图后端API生成目标后端API,通过统一后端API形态,使得后端API可以实现自动分发,通过提供静态图后端API,可以提高框架易用性。基于初始前端API的入口代码,生成深度学习框架各模式通用的目标前端API,实现统一前端API,使得前端API更加简洁,减少前端API代码量。进一步地,以代码的形式调用目标前端API,并将代码的编码信息发送至目标后端API,由目标后端API根据编码信息确定待调用后端API,并由待调用后端API执行编码信息得到编码结果,由于执行编码的过程在目标后端API执行,提高了代码的执行速度,减少了深度学习框架的相关调度开销,对API调用路径进行了分层设计,具有架构统一、方便扩展的优点。
如图5所示的调用深度学习框架的API的流程图。通过编写代码调用目标前端API,目标前端API将代码包含的编程信息发送至目标后端API。目标后端API可以根据编码信息,从动态图后端API和静态图后端API中确定待调用后端API。若待调用后端API为动态图后端API,可以由动态图后端API对编程信息进行算子计算,得到计算结果;若待调用后端API为静态图后端API,由静态图后端API进行静态图逻辑检查,检查输入是否合法,并根据编程信息进行算子组网,得到目标神经网络。
图6为本公开实施例提供的一种深度学习框架的API的优化方法的流程示意图。
如图6所示,该深度学习框架的API的优化方法,可包括:
S601,获取API配置文件,API配置文件包括多个算子的描述信息和初始前端API的逻辑功能。
S602,基于API配置文件,生成算子的动态图后端API和静态图后端API。
S603,根据动态图后端API和静态图后端API,生成深度学习框架的目标后端API,并基于初始前端API的入口代码,生成深度学习框架各模式通用的目标前端API。
S604,通过目标前端API接收输入的编程信息,并向目标后端API发送编程信息。
S605,由目标后端API基于编程信息,从动态图后端API和静态图后端API中确定待调用后端API,并向待调用后端API发送编程信息。
S606,若待调用后端API为动态图后端API,由动态图后端API对编程信息进行算子计算,得到计算结果,作为执行结果。
S607,若待调用后端API为静态图后端API,由静态图后端API根据编程信息进行算子组网,得到目标神经网络。
根据本公开实施例提供的深度学习框架的API的优化方法,通过获取深度学习框架的API配置文件,并基于配置文件生成算子的动态图代码和静态图代码,进而生成动态图后端API和静态图后端API,使用代码生成技术,生成后端API代码,可以减少人工代码工作量,具有良好的扩展性。基于动态图后端API和静态图后端API生成目标后端API,通过统一后端API形态,使得后端API可以实现自动分发,通过提供静态图后端API,可以提高框架易用性。基于初始前端API的入口代码,生成深度学习框架各模式通用的目标前端API,实现统一前端API,使得前端API更加简洁,减少前端API代码量。通过将前端代码逻辑下沉至后端,可以提高执行效率。
与上述几种实施例提供的深度学习框架的API的优化方法相对应,本公开的一个实施例还提供了一种深度学习框架的API的优化装置,由于本公开实施例提供的深度学习框架的API的优化装置与上述几种实施例提供的深度学习框架的API的优化方法相对应,因此上述深度学习框架的API的优化方法的实施方式也适用于本公开实施例提供的深度学习框架的API的优化装置,在下述实施例中不再详细描述。
图7为本公开实施例提供的一种深度学习框架的API的优化装置的结构示意图。
如图7所示,本公开实施例的深度学习框架的API的优化装置700,包括获取模块701、第一生成模块702和第二生成模块703。
获取模块701,用于获取API配置文件,所述API配置文件包括多个算子的描述信息和初始前端API的逻辑功能。
第一生成模块702,用于基于所述API配置文件,生成所述算子的动态图后端API和静态图后端API。
第二生成模块703,用于根据所述动态图后端API和静态图后端API,生成深度学习框架的目标后端API,并基于所述初始前端API的入口代码,生成所述深度学习框架各模式通用的目标前端API。
在本公开的一个实施例中,所述第一生成模块702,还用于:对所述深度学习框架的初始前端API进行解析,得到所述初始前端API的入口代码,以及动态图分支路径和静态图的分支路径,并从所述静态图的分支路径中提取所述前端API的逻辑功能。
在本公开的一个实施例中,所述第一生成模块702,还用于:基于所述算子的描述信息和所述初始前端API的逻辑功能,通过代码自动生成技术生成所述静态图的功能代码,并将所述静态图的功能代码进行封装,得到所述静态图后端API。
在本公开的一个实施例中,所述第一生成模块702,还用于:基于所述算子的描述信息和所述动态图的分支路径,通过代码自动生成技术生成所述动态图的功能代码,并将所述动态图的功能代码进行封装,得到所述动态图后端API。
在本公开的一个实施例中,所述第二生成模块703,还用于:对所述动态图后端API和所述静态图后端API进行组合,得到组合后端API;对所述组合后端API进行封装,生成所述目标后端API。
在本公开的一个实施例中,所述装置还包括:收发模块,用于通过所述目标前端API接收输入的编程信息,并向所述目标后端API发送所述编程信息;确定模块,用于由所述目标后端API基于所述编程信息,从所述动态图后端API和静态图后端API中确定待调用后端API;执行模块,用于向所述待调用后端API发送所述编程信息,并由所述待调用后端API执行所述编码信息,得到执行结果。
在本公开的一个实施例中,所述执行模块,还用于:若所述待调用后端API为动态图后端API,由所述动态图后端API对所述编程信息进行算子计算,得到计算结果,作为所述执行结果。
在本公开的一个实施例中,所述执行模块,还用于:由所述动态图后端API根据所述编码信息,从算子库中确定用于计算的第一算子;基于所述编码信息确定所述第一算子的输入数据,并通过所述第一算子对输入数据进行计算,得到所述计算结果。
在本公开的一个实施例中,所述执行模块,还用于:若所述待调用后端API为静态图后端API,由所述静态图后端API根据所述编程信息进行算子组网,得到目标神经网络。
在本公开的一个实施例中,所述执行模块,还用于:由所述静态图后端API根据所述编码信息,从算子库中确定第二算子;基于所述编码信息确定所述第二算子的连接关系,并按照所述连接关系对所述第二算子进行组网,得到所述目标神经网络。
根据本公开实施例提供的深度学习框架的API的优化装置,通过获取深度学习框架的API配置文件,并基于配置文件生成算子的动态图代码和静态图代码,进而生成动态图后端API和静态图后端API,使用代码生成技术,生成后端API代码,可以减少人工代码工作量,具有良好的扩展性。基于动态图后端API和静态图后端API生成目标后端API,通过统一后端API形态,使得后端API可以实现自动分发,通过提供静态图后端API,可以提高框架易用性。基于初始前端API的入口代码,生成深度学习框架各模式通用的目标前端API,实现统一前端API,使得前端API更加简洁,减少前端API代码量。通过将前端代码逻辑下沉至后端,可以提高执行效率。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序/指令或者从存储单元806载到随机访问存储器(RAM)803中的计算机程序/指令,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如信息处理方法。例如,在一些实施例中,信息处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元806些实施例中,计算机程序/指令的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序/指令加载到RAM 803并由计算单元801执行时,可以执行上文描述的信息处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行信息处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序/指令中,该一个或者多个计算机程序/指令可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序/指令来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (23)
1.一种深度学习框架的应用程序接口API的优化方法,其中,所述方法包括:
获取API配置文件,所述API配置文件包括多个算子的描述信息和初始前端API的逻辑功能;
基于所述API配置文件,生成所述算子的动态图后端API和静态图后端API;
根据所述动态图后端API和静态图后端API,生成深度学习框架的目标后端API,并基于所述初始前端API的入口代码,生成所述深度学习框架各模式通用的目标前端API。
2.根据权利要求1所述的方法,其中,所述前端API的功能代码,包括:
对所述深度学习框架的初始前端API进行解析,得到所述初始前端API的入口代码,以及动态图分支路径和静态图的分支路径,并从所述静态图的分支路径中提取所述前端API的逻辑功能。
3.根据权利要求2所述的方法,其中,所述静态图后端API的生成过程,包括:
基于所述算子的描述信息和所述初始前端API的逻辑功能,通过代码自动生成技术生成所述静态图的功能代码,并将所述静态图的功能代码进行封装,得到所述静态图后端API。
4.根据权利要求2所述的方法,其中,所述动态图后端API的生成过程,包括:
基于所述算子的描述信息和所述动态图的分支路径,通过代码自动生成技术生成所述动态图的功能代码,并将所述动态图的功能代码进行封装,得到所述动态图后端API。
5.根据权利要求1所述的方法,其中,所述根据所述动态图后端API和静态图后端API,生成深度学习框架的目标后端API,包括:
对所述动态图后端API和所述静态图后端API进行组合,得到组合后端API;
对所述组合后端API进行封装,生成所述目标后端API。
6.根据权利要求1所述的方法,其中,所述方法还包括:
通过所述目标前端API接收输入的编程信息,并向所述目标后端API发送所述编程信息;
由所述目标后端API基于所述编程信息,从所述动态图后端API和静态图后端API中确定待调用后端API;
向所述待调用后端API发送所述编程信息,并由所述待调用后端API执行所述编码信息,得到执行结果。
7.根据权利要求6所述的方法,其中,所述由所述待调用后端API执行所述编码信息,得到执行结果,包括:
若所述待调用后端API为动态图后端API,由所述动态图后端API对所述编程信息进行算子计算,得到计算结果,作为所述执行结果。
8.根据权利要求7所述的方法,其中,所述由所述动态图后端API对所述编程信息进行算子计算,得到计算结果,包括:
由所述动态图后端API根据所述编码信息,从算子库中确定用于计算的第一算子;
基于所述编码信息确定所述第一算子的输入数据,并通过所述第一算子对输入数据进行计算,得到所述计算结果。
9.根据权利要求6所述的方法,其中,所述方法还包括:
若所述待调用后端API为静态图后端API,由所述静态图后端API根据所述编程信息进行算子组网,得到目标神经网络。
10.根据权利要求9所述的方法,其中,所述由所述静态图后端API根据所述编程信息进行算子组网,得到目标神经网络,包括:
由所述静态图后端API根据所述编码信息,从算子库中确定第二算子;
基于所述编码信息确定所述第二算子的连接关系,并按照所述连接关系对所述第二算子进行组网,得到所述目标神经网络。
11.一种深度学习框架的API的优化装置,其中,所述装置包括:
获取模块,用于获取API配置文件,所述API配置文件包括多个算子的描述信息和初始前端API的逻辑功能;
第一生成模块,用于基于所述API配置文件,生成所述算子的动态图后端API和静态图后端API;
第二生成模块,用于根据所述动态图后端API和静态图后端API,生成深度学习框架的目标后端API,并基于所述初始前端API的入口代码,生成所述深度学习框架各模式通用的目标前端API。
12.根据权利要求11所述的装置,其中,所述第一生成模块,还用于:
对所述深度学习框架的初始前端API进行解析,得到所述初始前端API的入口代码,以及动态图分支路径和静态图的分支路径,并从所述静态图的分支路径中提取所述前端API的逻辑功能。
13.根据权利要求12所述的装置,其中,所述第一生成模块,还用于:
基于所述算子的描述信息和所述初始前端API的逻辑功能,通过代码自动生成技术生成所述静态图的功能代码,并将所述静态图的功能代码进行封装,得到所述静态图后端API。
14.根据权利要求12所述的装置,其中,所述第一生成模块,还用于:
基于所述算子的描述信息和所述动态图的分支路径,通过代码自动生成技术生成所述动态图的功能代码,并将所述动态图的功能代码进行封装,得到所述动态图后端API。
15.根据权利要求11所述的装置,其中,所述第二生成模块,还用于:
对所述动态图后端API和所述静态图后端API进行组合,得到组合后端API;
对所述组合后端API进行封装,生成所述目标后端API。
16.根据权利要求11所述的装置,其中,所述装置还包括:
收发模块,用于通过所述目标前端API接收输入的编程信息,并向所述目标后端API发送所述编程信息;
确定模块,用于由所述目标后端API基于所述编程信息,从所述动态图后端API和静态图后端API中确定待调用后端API;
执行模块,用于向所述待调用后端API发送所述编程信息,并由所述待调用后端API执行所述编码信息,得到执行结果。
17.根据权利要求16所述的装置,其中,所述执行模块,还用于:
若所述待调用后端API为动态图后端API,由所述动态图后端API对所述编程信息进行算子计算,得到计算结果,作为所述执行结果。
18.根据权利要求17所述的装置,其中,所述执行模块,还用于:
由所述动态图后端API根据所述编码信息,从算子库中确定用于计算的第一算子;
基于所述编码信息确定所述第一算子的输入数据,并通过所述第一算子对输入数据进行计算,得到所述计算结果。
19.根据权利要求16所述的装置,其中,所述执行模块,还用于:
若所述待调用后端API为静态图后端API,由所述静态图后端API根据所述编程信息进行算子组网,得到目标神经网络。
20.根据权利要求19所述的装置,其中,所述执行模块,还用于:
由所述静态图后端API根据所述编码信息,从算子库中确定第二算子;
基于所述编码信息确定所述第二算子的连接关系,并按照所述连接关系对所述第二算子进行组网,得到所述目标神经网络。
21.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-10中任一项所述的方法。
22.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行如权利要求1-10中任一项所述的方法。
23.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311754863.3A CN117539477A (zh) | 2023-12-19 | 2023-12-19 | 深度学习框架的应用程序接口api的优化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311754863.3A CN117539477A (zh) | 2023-12-19 | 2023-12-19 | 深度学习框架的应用程序接口api的优化方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117539477A true CN117539477A (zh) | 2024-02-09 |
Family
ID=89793911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311754863.3A Pending CN117539477A (zh) | 2023-12-19 | 2023-12-19 | 深度学习框架的应用程序接口api的优化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117539477A (zh) |
-
2023
- 2023-12-19 CN CN202311754863.3A patent/CN117539477A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113961351A (zh) | 深度学习模型的分布式训练方法、装置、设备及存储介质 | |
US12034820B2 (en) | Fusing and degradation method and apparatus for micro-service, device, and medium | |
US20240144570A1 (en) | Method for generating drivable 3d character, electronic device and storage medium | |
CN114816393B (zh) | 信息生成方法、装置、设备以及存储介质 | |
CN113656124A (zh) | 登录页面的生成方法及其装置 | |
CN114239853A (zh) | 模型训练方法、装置、设备、存储介质以及程序产品 | |
CN114374703B (zh) | 云手机信息的获取方法、装置、设备以及存储介质 | |
CN112631775A (zh) | 模型训练方法、装置、电子设备和计算机可读存储介质 | |
CN115509522A (zh) | 面向低代码场景的接口编排方法、系统、电子设备 | |
CN114997329A (zh) | 用于生成模型的方法、装置、设备、介质和产品 | |
US12056492B2 (en) | Method and apparatus for generating dependence graph, device, storage medium and program product | |
CN112862934B (zh) | 用于处理动画的方法、装置、设备、介质和产品 | |
CN112817660B (zh) | 扩展小程序能力的方法、装置、设备以及存储介质 | |
CN113792876A (zh) | 骨干网络的生成方法、装置、设备以及存储介质 | |
CN116302218B (zh) | 函数信息的添加方法、装置、设备以及存储介质 | |
CN112947916A (zh) | 用于实现在线画布的方法、装置、设备以及存储介质 | |
CN115809688B (zh) | 一种模型调试方法、装置、电子设备及存储介质 | |
CN115481594B (zh) | 计分板实现方法、计分板、电子设备及存储介质 | |
CN117539477A (zh) | 深度学习框架的应用程序接口api的优化方法和装置 | |
CN113570067B (zh) | 分布式系统的同步方法、装置 | |
CN114091909A (zh) | 一种协同开发的方法、系统、装置及电子设备 | |
CN114358198A (zh) | 实例分割方法、装置及电子设备 | |
CN115312042A (zh) | 用于处理音频的方法、装置、设备以及存储介质 | |
CN113361235B (zh) | Html文件的生成方法、装置、电子设备及可读存储介质 | |
CN113157360B (zh) | 用于处理api的方法、装置、设备、介质和产品 |
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 |