CN111784000A - 数据处理方法、装置和服务器 - Google Patents

数据处理方法、装置和服务器 Download PDF

Info

Publication number
CN111784000A
CN111784000A CN202010685572.3A CN202010685572A CN111784000A CN 111784000 A CN111784000 A CN 111784000A CN 202010685572 A CN202010685572 A CN 202010685572A CN 111784000 A CN111784000 A CN 111784000A
Authority
CN
China
Prior art keywords
data
type
user
target operator
tensor
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
CN202010685572.3A
Other languages
English (en)
Other versions
CN111784000B (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.)
Juzix Technology Shenzhen Co ltd
Original Assignee
Juzix Technology Shenzhen 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 Juzix Technology Shenzhen Co ltd filed Critical Juzix Technology Shenzhen Co ltd
Priority to CN202010685572.3A priority Critical patent/CN111784000B/zh
Publication of CN111784000A publication Critical patent/CN111784000A/zh
Application granted granted Critical
Publication of CN111784000B publication Critical patent/CN111784000B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Machine Translation (AREA)

Abstract

本说明书提供了数据处理方法、装置和服务器。其中,上述数据处理方法通过先确定出自定义类型和基础张量类型之间的映射关系;再根据所述映射关系,通过将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;同时将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,改造目标算子,得到能支持自定义类型的数据,同时也能支持已有的预设的机器学习框架的修改后的目标算子;进而可以基于已有的预设的机器学习框架,根据上述修改后的目标算子进行相应数据处理。从而可以解决现有方法中存在的基于已有的预设的机器学习框架无法支持例如构建前向逻辑图、反向梯度图等涉及自定义类型的数据的数据处理的技术问题。

Description

数据处理方法、装置和服务器
技术领域
本说明书属于互联网技术领域,尤其涉及数据处理方法、装置和服务器。
背景技术
基于现有的数据处理方法,用户在已有的机器学习框架(例如,Tensorflow框架等)中使用自定义类型(一种由用户自定义扩展出的数据类型)的数据时,已有的机器学习框架往往无法支持上述自定义类型的数据,上述自定义类型的数据也无法在机器学习框架中正常流动,导致现有的数据处理方法具体实施时,存在基于已有的机器学习框架,无法支持例如构建前向逻辑图、反向梯度图等涉及自定义类型的数据的数据处理的技术问题。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本说明书提供了一种数据处理方法、装置和服务器,以解决现有方法中存在的基于已有的预设的机器学习框架无法支持进行例如构建前向逻辑图、反向梯度图等涉及自定义类型的数据的数据处理的技术问题,使得用户可以方便、高效地利用已有的预设的机器学习框架,在不需要对框架作较大修改的情况下,正常使用自定义类型数据进行相应的数据处理,简化了用户的操作,提高了用户的使用体验。
本说明书实施例提供了一种数据处理方法,包括:
确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型;
确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型;
根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子;
利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
在一个实施例中,在将目标算子内部的计算逻辑修改为多个并列的子计算逻辑之后,所述方法还包括:将目标算子中经由多个并列的子计算逻辑输出的多个并列的基础张量类型的数据还原为自定义类型的数据,以得到修改后的目标算子。
在一个实施例中,所述预设的机器学习框架包括Tensorflow框架。
在一个实施例中,所述确定出所述自定义类型和基础张量类型之间的映射关系,包括:
确定所述自定义类型的数值存储长度,以及基础张量类型的数值存储长度;
根据所述自定义类型的数值存储长度,和所述基础张量类型的数值存储长度之间的比值,确定出一个自定义类型的数据所对应的基础张量类型的数据的个数,作为所述自定义类型和基础张量类型之间的映射关系。
在一个实施例中,所述利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理,包括:
利用预设的机器学习框架,根据所述修改后的目标算子,构建前向逻辑图,和/或,构建反向梯度图。
在一个实施例中,在得到修改后的目标算子之后,所述方法还包括:接收所述服务提供方返回的服务。
在前端层添加自定义类型;
根据所述自定义类型和基础张量类型之间的映射关系,在前端层封装所述预设的机器学习框架中的原生张量类型的数据接口,并构建得到与自定义类型匹配的自定义数据接口;其中,所述自定义数据接口提供给用户,用于输入和/或输出自定义类型的数据。
在一个实施例中,利用预设的机器学习框架,根据所述修改后的目标算子,构建前向逻辑图,包括:
检测自定义数据接口接收的第一输入数据是否符合自定义类型;
在确定所述第一输入数据不符合自定义类型的情况下,将所述第一输入数据转换为自定义类型的第一输入数据;
调用修改后的目标算子对所述自定义类型的第一输入数据进行处理,以得到对应的前向逻辑图。
在一个实施例中,在得到修改后的目标算子之后,所述方法还包括:
根据预设的机器学习框架的框架规范,以及所述自定义类型和基础张量类型之间的映射关系,将预设的机器学习框架中支持基于单个基础张量类型的数据的函数注册修改为支持多个并列的基础张量类型的数据的函数注册;
将预设的机器学习框架中支持单个基础张量类型的数据的预设梯度下降函数的函数接口修改为支持多个并列的基础张量类型的数据的函数接口。
在一个实施例中,利用预设的机器学习框架,根据所述修改后的目标算子,构建反向梯度图,包括:
检测通过函数接口输入的第二输入数据是否符合自定义类型;
在确定所述第二输入数据符合自定义类型的情况下,将所述第二输入数据拆分成多个并列的基础张量类型的数据,并针对各个张量类型分别构建列表,得到对应的多个第一列表;
将与所述第二输入数据对应的目标函数值拆分成多个并列的基础张量类型的数据;
以所述目标函数值中的基础张量类型的数据作为第一参数,以与所述目标函数值中的第一参数匹配的第一列表作为第二参数,调用预设梯度下降函数进行计算,得到对应的多个第二列表;
根据所述多个第二列表,还原出自定义类型的数据,以得到所述反向梯度图。
在一个实施例中,所述目标算子还包括基于预设的机器学习框架所生成的模型中的算子。
本说明书实施例还提供了一种数据处理装置,包括:
第一确定模块,用于确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型;
第二确定模块,用于确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型;
修改模块,用于根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子;
处理模块,用于利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
在一个实施例中,所述修改模块还用于将目标算子中经由多个并列的子计算逻辑输出的多个并列的基础张量类型的数据还原为自定义类型的数据,以得到修改后的目标算子。
本说明书实施例还提供了一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型;确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型;根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子;利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型;确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型;根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子;利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
本说明书提供的数据处理方法、装置和服务器,通过先确定出自定义类型和基础张量类型之间的映射关系;再根据所述映射关系,通过将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;同时将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,来改造目标算子,得到能支持自定义类型的数据,同时也能支持已有的预设的机器学习框架的修改后的目标算子;进而可以基于已有的预设的机器学习框架,根据上述修改后的目标算子进行相应数据处理。从而可以解决现有方法中存在的基于已有的预设的机器学习框架无法支持例如构建前向逻辑图、反向梯度图等涉及自定义类型的数据的数据处理的技术问题,使得用户可以方便、高效地利用已有的预设的机器学习框架,在不需要对已有的机器学习框架作较大修改的情况下,正常使用自定义类型的数据进行相应的数据处理,简化了用户的操作,提高了用户的使用体验。
附图说明
为了更清楚地说明本说明书实施例,下面将对实施例中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书的一个实施例提供的数据处理方法的流程示意图;
图2是在一个场景示例中,应用本说明书实施例提供的数据处理方法的一种实施例的示意图;
图3是在一个场景示例中,应用本说明书实施例提供的数据处理方法的一种实施例的示意图;
图4是在一个场景示例中,应用本说明书实施例提供的数据处理方法的一种实施例的示意图;
图5是本说明书的一个实施例提供的服务器的结构组成示意图;
图6是本说明书的一个实施例提供的数据处理装置的结构组成示意图;
图7是在一个场景示例中,应用本说明书实施例提供的数据处理方法的一种实施例的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
考虑到基于现有的数据处理方案,当用户在已有的机器学习框架中使用自定义类型的数据时,由于自定义类型的数据与已有的机器学习框架所支持的原生张量类型差异较大,导致自定义类型的数据在已有的机器学习框架中往往无法正常流动,进而使得用户无法直接地利用已有的机器学习框架的功能机制进行涉及自定义类型的数据的诸如构建前向逻辑、反向梯度图等数据处理,增加了用户在已有的机器学习框架中使用自定义类型的数据的难度,影响力用户的使用体验。
针对产生上述问题的根本原因,通过对大量自定义类型的数据进行分析,发现大多数自定义类型往往都是基于基本的数值类型(例如,整数int、浮点数float等)构建得到的。而通过上述方式构建的自定义类型的数据的存储长度通常会大于已有的机器学习框架的原生张量类型的存储长度,从而导致已有的机器学习框架之不能支持上述自定义类型的数据,上述自定义类型的数据也无法在已有的机器学习框架中正常流动。
基于上述考虑,本申请实施例提出可以先确定出用户所使用的自定义类型,以及该自定义类型和已有的机器学习框架所支持的基础张量类型之间的映射关系。进而可以根据上述映射关系,对自定义类型的数据流经的目标算子进行针对性的改造。具体的,可以将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;同时将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,完成对目标算子的改造,得到能支持自定义类型的数据,同时也能够支持已有的预设的机器学习框架的修改后的目标算子。这样就可以使得用户能够方便、高效地利用已有的机器学习框架的功能机制,在不需要对已有的机器学习框架作较大修改的情况下,正常使用自定义类型数据进行诸如构建前向逻辑图、反向梯度图等相关的数据处理,简化了用户的操作,提高了用户的使用体验。
基于上述思考思路,本申请实施例提供了一种数据处理方法。具体请参阅图1所示的。本申请实施例提供的数据处理方法,具体实施时,可以包括以下内容。
S101:确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型。
在一个实施例中,上述目标算子具体可以理解为一种自定义类型的数据流经的算子。其中,上述自定义类型具体可以包括用户自定义的数据类型。
在一个实施例中,具体的,上述自定义的数据类型具体可以是用户自行根据具体情况和使用需求,基于基本的数值类型(例如,整数int、浮点数float等)通过自定义扩展等方式所构建的一种机器学习框架中所没有的数据类型。例如,用户可以在Tensorflow框架(一种机器学习框架)中自定义的MultiLaneTensor类,作为自定义类型。
通常上述自定义类型,相对于机器学习框架中的原生张量类型更加复杂,自定义类型的数据的存储长度也往往大于原生张量类型的数据的存储长度。这样用户才可以通过使用自定义类型的数据来代替原生张量类型的数据来承载更多的数据信息。
例如,在数据加密场景中,由于一些隐私加密算法所支持的数据的数值宽度较大,用户往往需要能够承载较大的整数、浮点数据等的数据类型,甚至对数据类型的存储长度的要求要大于2048bit。而已有的机器学习框架中的原生张量类型的存储长度可能只有64bit,远远无法满足数据加密的需求。这时就需要用户使用自定义类型的数据。
又例如,在隐私机器学习的场景中,由于需要加隐私加密算法与模型训练相结合,以便能在隐私加密的保护下利用已有的机器学习框架进行模型训练,因此,用户也需要使用到自定义类型的数据。
当然,上述所列举的场景只是一种示意性说明。具体实施时,根据具体情况,在其他的应用场景中用户也需要使用到自定义类型的数据,也可以应用本说明书实施例提供的数据处理方法。对此,本说明书不作限定。
在一个实施例中,具体实施时,可以根据用户自定义类型,找到自定义类型的数据流经的算子,作为后续待改造的目标算子。
在一个实施例中,上述目标算子具体还可以是待通过已有的机器学习框架进行训练的模型中的涉及自定义类型的数据的算子等。
S102:确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型。
在一个实施例中,上述基础张量类型具体可以理解为预设的机器学习框架中本身就能支持的原生数据类型。上述预设的机器学习框架具体可以理解为一种已有的机器学习框架。
具体的,对于不同的预设的机器学习框架,所对应的基础张量类型可以不同。
在一个实施例中,上述预设的机器学习框架具体可以包括Tensorflow框架。其中,上述Tensorflow框架具体可以理解为一种基于数据流编程(dataflow programming)的符号数学系统,常用作机器学习框架。当然,需要说明的是,上述所列举的预设的机器学习框架只是一种示意性说明。具体实施时,根据具体情况,还可以将本申请实施例所提供的方法作相应的修改调整后,拓展应用到其他已有的机器学习框架中,例如,PyTorch框架、MXNet框架等。
在一个实施例中,通过确定出自定义类型与基础张量类型之间的映射关系,可以确定出一个自定义类型的数据可以映射对应成多少个基础张量类型的数据,以便后续可以合理、有效地对自定义类型的数据作拆分。
在一个实施例中,所述确定出所述自定义类型和基础张量类型之间的映射关系,具体实施时,可以包括以下内容:确定所述自定义类型的数值存储长度,以及基础张量类型的数值存储长度;根据所述自定义类型的数值存储长度,和所述基础张量类型的数值存储长度之间的比值,确定出一个自定义类型的数据所对应的基础张量类型的数据的个数,作为所述自定义类型和基础张量类型之间的映射关系。
具体的,以Tensorflow框架为例,按照上述方式先确定出:基础张量类型(可以记为tensor)的数值存储长度为64bit,用户所使用的自定义类型的数值存储长度为1024bit;进而可以确定出自定义类型的数值存储长度与基础张量类型的数值存储长度的比值为1024/64=32,即确定出以下的映射关系:一个自定义类型的数据对应32个基础张量类型的数据。
S103:根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子。
在一个实施例中,考虑到自定义类型虽然比较复杂,但本身还是基于基本的数值类型构建得到的。因此,可以根据映射关系,将目标算子中输入的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合。
同时,还将目标算子内部的计算逻辑(或称计算链路)也修改成为多个并列的子计算逻辑。这样可以将原本目标算子中支持一个自定义类型的数据的一个计算逻辑,改造成多个并列的子计算逻辑。而上述多个子计算逻辑中的每一个子计算逻辑中流经的数据则是从自定义类型的数据中拆解出的基础张量类型的数据。这样,对于每一个子计算逻辑而言,所流经的数据不再是预设的机器学习框架不支持的自定义类型的数据,而是预设的机器学习框架本身就支持的原生张量类型的数据。因此,上述数据可以正常地流动,而且对于上述多个子计算逻辑中的每一个子计算逻辑而言,都是符合预设的机器学习框架的规范的,能够正常地使用预设的机器学习框架中功能机制。
这样,通过在对后端层(例如,基于C++的后端扩展框架等)的算子进行上述改造,所得到的修改后的目标算子可以正常地接收用户输入的自定义类型的数据,同时在该算子内部又是以符合预设的机器学习框架规范的方式,通过并行处理多个从自定义类型的数据中拆分出的并列的基础张量类型的数据,来处理自定义类型的数据。从而可以使得目标算子既能够支持自定义类型,同时又能够支持已有的预设的机器学习框架。
在一个实施例中,具体实施时,可以根据映射关系,通过将目标算子中输入的自定义类型的数据拆分成相应个数的多个并列的基础张量类型的数据组合;同时,将目标算子内部的计算逻辑修改为相应的多个并列的子计算逻辑,从而完成针对目标算子的改造,得到修改后的目标算子。其中,基于上述修改后的目标算子,输入的是自定义类型的数据,输出的则是基础类型的数据。
在一个实施例中,为了更好地提高用户的使用体验,使得目标算子输入、输出的数据都是自定义类型的数据,以便在用户无感知的状态下完成相应的数据处理。具体实施时,在将目标算子内部的计算逻辑修改为多个并列的子计算逻辑之后,所述方法具体实施时还可以:将目标算子中经由多个并列的子计算逻辑输出的多个并列的基础张量类型的数据还原为自定义类型的数据,以得到修改后的目标算子。其中,基于上述修改后的目标算子,输入的是自定义类型的数据,最终输出的仍然是自定义类型的数据。
在一个实施例中,在按照上述方式改造目标算子的过程,具体实施时,还可以根据自定义类型的数据的拆分情况,根据预设的顺序关系等,将拆分出的多个基础张量类型的数据重新对齐。此外,还可以根据计算规则和拆分来源等,将多个基础张量类型的数据进行组合,并将各个组合中的基础张量类型的数据与拆分出的子计算逻辑对应。
具体的,例如,可以参阅图2所示。输入目标算子Add的自定义张量类型的数据为X、Y。根据映射关系,可以确定出一个自定义类型的数据对应为两个2基础张量类型的数据。根据上述映射关系,可以在目标算子中,设置并利用MpcOp X将自定义类型的数据X拆分成两个并列的技术张量类型的组合,即:X0、X1;设置并利用MpcOp Y将自定义类型的数据Y拆分成两个并列的技术张量类型的组合,即:Y0、Y1。同时,还对目标算子的Add内部的计算逻辑作相应修改,得到MpcAdd,以便可以支持多个并列的子计算逻辑。此外,还可以根据预设的顺序关系和计算规则进行重新对齐。这时可以从MpcAdd中输出多个并列的基础张量类型的数据,记为:Z0、Z1。进一步,还可以在目标算子中,设置并利用MpcOp Z将多个并列的基础张量类型的数据Z0、Z1通过组合重新还原成一个完整的自定义张量类型的数据Z。从而完成了针对目标算子的改造,得到了修改后的目标算子。
基于上述修改后的目标算子,从用户一侧看,输入目标算子的是自定义类型的数据X、Y,目标算子最终输出的是自定义类型的数据Z。用户不会感知到内部复杂的转换、处理流程,并且,目标算子的输入数据和输出数据对用户而言都是可读的,提高了用户的使用体验。
S104:利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
在一个实施例中,由于上述修改后的目标算子是同时支持所输入的自定义类型的数据,以及已有的预设的机器学习框架。具体的,在预设的机器学习框架中,修改后的目标算子中流经的数据是可以正常流动的,能够支持使用预设的机器学习框架原本用于支持原生张量类型的功能机制。因此,可以直接利用上述预设的机器学习框架中的功能机制,根据修改后的目标算子进行相应的数据处理。例如,执行原本只支持原生张量类型,但不支持自定义类型的数据处理。
在一个实施例中,上述利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理,具体实施时,可以包括以下内容:利用预设的机器学习框架,根据所述修改后的目标算子,构建前向逻辑图,和/或,构建反向梯度图等。当然,上述所列举的数据处理只是一种示意性说明。具体实施时,根据具体情况和处理需求,还可以利用预设的机器学习框架,根据修改后的目标算子进行其他类型的数据处理,例如,逻辑图的优化调度等等。对此,本说明书不作限定。
在本实施例中,由于通过先确定出自定义类型和基础张量类型之间的映射关系;再根据所述映射关系,通过将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;同时将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,改造目标算子,得到能支持自定义类型的数据,同时也能支持已有的预设的机器学习框架的修改后的目标算子;进而可以基于已有的预设的机器学习框架,根据上述修改后的目标算子进行相应数据处理。从而可以解决现有方法中存在的基于已有的预设的机器学习框架无法支持例如构建前向逻辑图、反向梯度图等涉及自定义类型的数据的数据处理的技术问题,使得用户可以方便、高效地利用已有的预设的机器学习框架,在不需要对已有的机器学习框架作较大修改的情况下,正常使用自定义类型数据进行相应的数据处理,简化了用户的操作,提高了用户的使用体验。
在一个实施例中,为了能够配合用户更好地利用已有的预设的机器学习框架中的功能机制,使用自定义类型的数据进行相应的数据处理,使用户获得更好的使用体验,还可以根据结合用户要进行的相应的数据,在前端层(例如,前端的Python层等)进行简单的修改,以进一步提高用户的使用体验。
在一个实施例中,为了方便用户可以更好地利用预设的机器学习框架,使用自定义类型的数据构建前向逻辑图,在得到修改后的目标算子之后,所述方法具体实施时,还可以包括以下内容:在前端层添加自定义类型;根据所述自定义类型和基础张量类型之间的映射关系,在前端层封装所述预设的机器学习框架中的原生张量类型的数据接口,并构建得到与自定义类型匹配的自定义数据接口;其中,所述自定义数据接口提供给用户,用于输入和/或输出自定义类型的数据。
在一个实施例中,可以预先在前端层通过定义添加一个与用户所使用的数据类型匹配的类型作为自定义类型。其中,这里添加的自定义类型可以与修改后的目标算子所支持的自定义类型相同。
具体的,上述自定义类型具体可以是用户定义的一个MultiLaneTensor类。其中,上述自定义类型可以支持包括加减乘除等原生运算符的处理。
在一个实施例中,在具体构建自定义数据口时,可以将预设的机器学习框架中原本支持原生张量类型的数据接口(例如,Add、Mul等的API)改造成支持以自定义类型(例如MultiLaneTensor类)的数据作为输入数据类型的接口,并且基于该接口还能返回相应的自定义类型的数据作为输出数据的接口,作为上述自定义数据接口。从而完成针对前端层的改造,这样在用户一侧可以通过上述自定义数据接口很方便地输入自定义类型数据,和/或,接收自定义类型的数据,而不会感知到内部负责的转换、处理流程。
在一个实施例中,可以参阅图3所示,基于上述在前端层的改造,利用预设的机器学习框架,根据所述修改后的目标算子,构建前向逻辑图,具体实施实施,可以包括以下内容。
S1:检测自定义数据接口接收的第一输入数据是否符合自定义类型;
S2:在确定所述第一输入数据不符合自定义类型的情况下,将所述第一输入数据转换为自定义类型的第一输入数据;
S3:调用修改后的目标算子对所述自定义类型的第一输入数据进行处理,以得到对应的前向逻辑图。
在一个实施例中,具体实施时,以添加的自定义类型为MultiLaneTensor类为例。当用户通过自定义数据接口输入待处理的第一输入数据后,会先检测该第一输入数据是否符合自定义类型,即确定该第一输入数据是否属于MultiLaneTensor类。如果确定该第一输入数据属于MultiLaneTensor类,则可以确定该第一输入数据是修改后的目标算子所支持的数据类型。进而可以调用后端层修改后的目标算子对该第一输入数据进行逻辑运算处理,得到并输出对应的逻辑计算结果,从而构建得到对应的前向逻辑图。
在一个实施例中,如果确定该第一输入数据不属于MultiLaneTensor类,可以进一步检测是否可以将该第一输入数据转换成MultiLaneTensor类。如果确定可以将上述第一输入数据转换成MultiLaneTensor类,可以将向第一输入数据转换成MultiLaneTensor类后,再调用修改后的目标算子进行处理,以得到对应的前向逻辑图。
相对的,如果确定无法将上述第一输入数据转换成MultiLaneTensor类,则可以确定无法使用修改后的目标算子处理该第一输入数据,进而可以生成并输出错误信息,以提示用户无法处理用户所输入的第一输入数据。进一步,还可以输出并向用户展示可支持的自定义类型,例如,MultiLaneTensor类,以提示用户使用MultiLaneTensor类的数据作为第一输入数据。
在一个实施例中,为了方便用户可以更好地利用预设的机器学习框架,使用自定义类型的数据构建反向梯度图,在得到修改后的目标算子之后,所述方法具体实施时,还可以包括以下内容:根据预设的机器学习框架的框架规范,以及所述自定义类型和基础张量类型之间的映射关系,将预设的机器学习框架中支持基于单个基础张量类型的数据的函数注册修改为支持多个并列的基础张量类型的数据的函数注册;将预设的机器学习框架中支持单个基础张量类型的数据的预设梯度下降函数的函数接口修改为支持多个并列的基础张量类型的数据的函数接口。
在一个实施例中,考虑到目标算子内部实际使用的是预设的机器学习框架的原生张量类型,因此,可以通过在外层封装基于预设的机器学习框架的相关函数来完成对前端层的改造,以方便用户进行构建的反向梯度的数据处理。
在一个实施例中,以Tensorflow框架作为预设的机器学习框架为例,可以通过封装Tensorflow框架下的梯度注册逻辑,和自动求导逻辑,来对前端层进行改造。
具体的,可以在对梯度注册逻辑进行封装时,可以根据Tensorflow框架的框架规范(或者定义规范),以及所述自定义类型和基础张量类型之间的映射关系,将Tensorflow框架中支持基于单个tensor的函数注册修改为支持多个并列的tensor的函数注册。
在对自动求导逻辑进行封装时,可以将Tensorflow框架中支持单个tensor的预设梯度下降函数(例如,tf.gradients)的函数接口修改为支持多个并列的tensor的函数接口。
这样修改后,上述预设梯度下降函数可以实现对一个输出张量(或多个逻辑独立的张量)面向一个输入张量列表进行求梯度,其内部的处理逻辑上是按照数学上的链式法则进行高维矩阵乘法的递归处理。通过上述针对前端层的修改,可以使得面向用户的前端层支持MultiLaneTensor类的数据流动。
在一个实施例中,可以参阅图4所示,基于上述在前端层的改造,根据所述修改后的目标算子,构建反向梯度图,具体实施时,可以包括以下内容。
S1:检测通过函数接口输入的第二输入数据是否符合自定义类型;
S2:在确定所述第二输入数据符合自定义类型的情况下,将所述第二输入数据拆分成多个并列的基础张量类型的数据,并针对各个张量类型分别构建列表,得到对应的多个第一列表;
S3:将与所述第二输入数据对应的目标函数值拆分成多个并列的基础张量类型的数据;
S4:以所述目标函数值中的基础张量类型的数据作为第一参数,以与所述目标函数值中的第一参数匹配的第一列表作为第二参数,调用预设梯度下降函数进行计算,得到对应的多个第二列表;
S5:根据所述多个第二列表,还原出自定义类型的数据,以得到所述反向梯度图。
在一个实施例中,参阅图4所示,上述步骤S3也可以放在开始时执行。
在一个实施例中,具体实施时,第二输入数据为xs,与第二输入数据对应的目标函数值为ys为例。其中,上述第二输入数据具体可以包括多个不同的数据元素。例如,第二输入数据包括M个数据元素,分别记为:xs1、xs2……xsM。可以先检测第二输入数据中的各个数据元素是否都符合自定义类型MultiLaneTensor类,如果确定第二输入数据中的各个数据元素都符合MultiLaneTensor类,则可以根据自定义类型与基础张量类型的映射关系,将xs中的每一个数据元素分别拆成多个(例如k个)并列的基础张量类型的数据。这样可以得到M个数据组,其中,每个数据组包含有k个基础张量类型的数据。进一步,可以将M个数据组中属于同一个编号的基础张量类型提取出来合并到一个列表中,得到k个列表,记为k个第一列表。其中,每个第一列表中包含有M个数据。同时,将目标函数值ys拆分成k个基础张量类型的数据。接着可以以ys拆分得到的一个基础张量类型的数据作为第一参数,将与该基础张量类型对应的第一列表作为第二参数,调用预设的梯度下降函数(例如,tf.gradients)进行计算,得到对应的相应的M个数据,合并成一个列表,可以记为第二列表。按照上述方式,可以得到k个第二列表。进一步,可以依次从上述k个第二列表中分别提取出位于相同位置的数据,共7个基础张量类型的数据作为一组,进行还原,得到一个MultiLaneTensor类的数据,即自定义类型的数据。按照上述方式,可以根据k个第二列表还原出M个自定义类型的数据。最后可以输出包含有上述M个自定义类型的数据列表(可以记为第三列表),从而构建得到对应的反向梯度图。
在一个实施例中,通过检测,如果确定第二输入数据中的各个数据元素至少存在一个数据元素不符合MultiLaneTensor类,则可以确定无法上述第二输入数据,进而可以生成并输出错误信息,以提示用户无法处理用户所输入的第二输入数据。进一步,还可以输出并向用户展示可支持的自定义类型,例如,MultiLaneTensor类,以提示用户使用MultiLaneTensor类的数据作为第二输入数据。
在一个实施例中,所述目标算子具体还可以包括基于预设的机器学习框架所生成的模型中的算子。
在一个实施例中,可以按照本说明书实施例所提供的方法在将模型中的目标算子改造成能够同时支持自定义类型的数据,以及预设的机器学习框架的修改后的目标算子,得到修改后的模型。进一步,可以利用已有的预设的机器学习框架中的功能机制,通过隐私机器学习,训练修改后的模型,得到符合要求的目标模型。
在一个实施例中,在得到目标模型后,所述方法具体实施时,还可以包括以下内容:利用所述目标模型对目标业务场景中的目标数据进行数据处理。
在一个实施例中,上述目标业务场景具体可以包括:金融领域的多方联合数据分析场景、交易预测场景、风险识别场景或者客服答复场景等多种不同的应用场景。相应的,对应于不同的目标业务场景,上述目标数据可以是与目标业务场景对应的不同类型的待处理的数据。
具体的,例如,在目标业务场景为客服答复场景时,上述目标模型具体可以是一种通过隐私机器学习训练好的客服答复模型,目标数据具体可以是客服群中客户的留言的文本信息。相应的,利用上述目标模型对目标业务场景中的目标数据进行数据处理具体可以是,调用上述客服答复模型对客户在客服群中留言的文本信息进行识别处理,生成针对该客户留言的答复文本,并将该答复文本自动地反馈给该客户,从而可以实现客服群中对客户提问的自动答复。
从以上的描述中,可以看出,本申请实施例提供的数据处理方法,通过先确定出自定义类型和基础张量类型之间的映射关系;再根据所述映射关系,通过将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;同时将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,改造目标算子,得到能支持自定义类型的数据,同时也能支持已有的预设的机器学习框架的修改后的目标算子;进而可以基于已有的预设的机器学习框架,根据上述修改后的目标算子进行相应数据处理。从而可以解决现有方法中存在的基于已有的预设的机器学习框架无法支持例如构建前向逻辑图、反向梯度图等涉及自定义类型的数据的数据处理的技术问题,使得用户可以方便、高效地利用已有的预设的机器学习框架,在不需要对已有的机器学习框架作较大修改的情况下,正常使用自定义类型数据进行相应的数据处理,简化了用户的操作,提高了用户的使用体验。还通过根据自定义类型与基础张量类型之间的映射关系,对前端层进行相应的改造,从而使得用户可以在无感知的情况下,方便、高效地在预设的机器学习框架中使用自定义类型的数据进行相应的数据处理,从而进一步提高了用户的使用体验。
本说明书实施例还提供一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型;确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型;根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子;利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
为了能够更加准确地完成上述指令,参阅图5所示,本说明书实施例还提供了另一种具体的服务器,其中,所述服务器包括网络通信端口501、处理器502以及存储器503,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述网络通信端口501,具体可以用于接收用户设置的自定义类型。
所述处理器502,具体可以用于确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型;确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型;根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子;利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
所述存储器503,具体可以用于存储相应的指令程序。
在本实施例中,所述网络通信端口501可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的端口,也可以是负责进行FTP数据通信的端口,还可以是负责进行邮件数据通信的端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施例中,所述处理器502可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施例中,所述存储器503可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供了一种基于上述数据处理方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型;确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型;根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子;利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
在本实施例中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施例中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
参阅图6所示,在软件层面上,本说明书实施例还提供了一种数据处理装置,该装置具体可以包括以下的结构模块。
第一确定模块601,具体可以用于确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型;
第二确定模块602,具体可以用于确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型;
修改模块603,具体可以用于根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子;
处理模块604,具体可以用于利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
在一个实施例中,所述修改模块603具体还可以用于将目标算子中经由多个并列的子计算逻辑输出的多个并列的基础张量类型的数据还原为自定义类型的数据,以得到修改后的目标算子。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
由上可见,基于本说明书实施例提供的数据处理装置,使得用户可以方便、高效地利用已有的预设的机器学习框架,在不需要对已有的机器学习框架作较大修改的情况下,正常使用自定义类型数据进行相应的数据处理,简化了用户的操作,提高了用户的使用体验。
在一个具体实施场景示例中,可以应用本申请实施例的提供基于数据处理方法和装置来对前端层和后端层进行相应的改造,以使得用户可以利用已有的Tensorflow框架,正常使用自定义类型数据进行相应的数据处理。具体实施过程可以参阅以下内容。
在本场景示例中,提出的方法策略可以在不改变Tensorflow内部实现的情况下,使得扩展库开发者可以在内部使用自己自定义的复杂数据类型的同时,仍然可以使用Tensorflow中前向逻辑图和反向梯度图的自动生成等功能。而对于库的最终使用者则只需要使用和原生Tensorflow类似的API接口,无需对程序进行大的改动。从而可以为基于Tensorflow的第三方算子库开发者在自定义数据类型下的开发提供便利。
目前相关系统中对于用户自定义类型的有限扩展都是基于单个计算算子的输入、输出张量(Tensor)中的类型进行扩展的,比如tf-encrypted和tf-big。而在本场景示例中,则是在单个张量(Tensor)上仍然使用Tensorflow中完善支持的基础数据类型,但在整体数据流图的计算逻辑上通过扩展张量的个数,使得用户自定义的数据类型可以表达(或称拆分)为多个基础数据类型的组合形式(即多个并列的基础张量类型的数据的组合),在Tensorflow中表现为算子节点之间是多个张量并行流动的形式。
具体可以参阅图2所示,假设针对原先的一个算子Add,开发者现在需要将其改造为支持自定义的由基于两个浮点数(tf.float64)构成新数据类型。基于本申请实施例提供的方法,可以改造后端层的算子为对应的MpcAdd算子,该算子可以支持四个张量输入,其中,每两个张量对应原来的一个张量,而且MpcAdd算子的输出此时也由原先的一个张量变为新的两个张量。通过对全部的计算算子都进行这样的改造,那么整体的数据流图中由节点构成的计算逻辑整体不会发生变化,单个‘边’上的Tensor的数据类型也是原生Tensorflow的类型(即基础张量类型),但是节点与节点之间并行传输的张量数量得到了倍增,从而可以实现用户自定义的数据类型在这些并行的多个张量上正常的流动。由于在单个张量上的数据类型仍然是原生Tensorflow中的类型,而且计算节点的定义也是符合原生Tensorflow的规范的,所以可以直接的使用Tensorflow中的基本功能进行相应的数据处理,例如,正向逻辑图的构建、反向梯度图的逻辑构建、图的优化调度等等。这样开发者在单个算子内部可以正常的一次性的获取得到其所需要的全部自定义数据,在进行内部算子的复杂处理之后可以将输出的数据也表达为多张量组成形式,继续的向下一个计算节点去传递。
如果新的自定义类型是开发者内部使用而不需要暴露给最终用户的,则还可以在前端层的Python层对原生Tensorflow的API进行封装和静态替换,使得扩展库的使用者在使用原生Tensorflow的API接口的同时自动的转变为对新的自定义类型下内部接口的调用。具体而言,在Python前端层添加自定义的数据类型(例如,MultiLaneTensor),其内部主要是包括多个原生张量类型tf.Tensor。具体需要包装多少个可以根据具体使用的自定义类型决定。比如图2所示,可以将该类看做是tuple(tf.Tensor,tf.Tensor)。
这一数据类型和tf.Tensor类似,可以支持例如加减乘除等运算符运算。同时其可以作为WAdd(X,Y)等新算子的参数。这样的话,在python层可以通过静态替换的方式将用户的原始代码中基于tf.Tensor进行计算逻辑图构建的过程直接的‘重载’为基于MultiLaneTensor的图构建过程,从而实现‘前向图’的自动构建。同时可以通过添加包装器(wrapper)改造并替换掉tf.gradient()等构建反向梯度图的入口函数,就可以实现基于TensorFlow内部框架中反向图的构建过程‘重载’为对基于MultiLaneTensor的构建过程。
需要说明的是,MultiLaneTensor只是在用户接口层对tf.Tensor进行的简单封装,在构建得到的完整前向图(即前向逻辑图)和反向图(即反向梯度图)中,在算子间流动的还是tf.Tensor本身。后端的其他模块不会感知到MultiLaneTensor的存在。
在本场景示例中,具体实施过程可以包括两大部分。一是在C++后端层按照用户的自定义类型定义各个新的支持多张量输入输出的算子(即对目标算子进行改造得到修改后的目标算子)。二是在前端Python层对用户需要无感知使用的各个原生Tensorflow下API进行包装以适配对于新的对多张量模型使用,其中,主要又可以分为对前向数据流图自动构建的支持、反向梯度图自动构建的支持两大部分。在前端Python层的改造中,开发者可以根据实际需要决定具体的封装层级,比如如果需要让最终用户直接使用新的API,那么可以不进行算子替换以简化系统。
一、关于C++后端层计算算子内部的实现
这里主要是指利用Tensorflow提供给开发者的后端扩展框架去定义新的计算算子。具体的改造点有两个,一个是定义时,如果其输入、输出都是自定义格式的参数,那么每一个原input、output都需要对应的扩展为k个input、output。且为了保持一致性,还可以按照顺序的方式对新参数重新对齐。可以参阅图7所示。
下面结合图2所示,可以给出一个实现自定义加法的C++伪代码例子来具体说明,在这个例子里面,假设开发者新自定义类型是由两个浮点数(tf.float64)组成的复合类型。
Figure BDA0002587421710000181
Figure BDA0002587421710000191
结合图2和图7,在本场景示例中,可以按照Tensorflow的自定义算子的框架定义新的一个算子MpcWAdd,其中,每一个输入输出张量可以是任意的基础类型T。输入张量的个数则是4个,前两个对应原生Add算子中的第一个张量,后两个对应原生Add算子中的第二个张量。输出张量的个数是两个,对应原生Add算子中的一个输出。在算子逻辑实现的内部,首先是依次取出前两个和后两个张量,并转换为自定义类型,且对于输出也是这样。在处理逻辑内部则是直接的使用开发者自定义数据类型完成任意逻辑的处理。
二、关于Python前端层的处理
2.1对数据流图前向图自动构建的支持方法
为了实现多张量形式下数据流图前向图的自动构建,有两处需要进行处理。一处是类似于原生Tensorflow中的Tensor张量类,这里可以新定义一个MultiLaneTensor类作为定义类型,这个类可以支持对于加减乘除等原生运算符的处理。其处理逻辑可以参阅图3所示。
另一处是对于各个API的封装处理。对于各个Add、Mul等API,直接的改造为支持以MultiLaneTensor作为输入类型进行处理。并返回为新的这个MultiLaneTensor的输出。然后在用户载入此新的开发库时,可以自动的进行名称的替换。
2.2对反向梯度图自动构建的支持方法
在本场示例中,没有采用其他类似系统(如tf-big)所使用的基于string、DT_VARIANT等非基础运算类型来实现自定义类型,而是直接的依靠Tensorflow中的基础数据类型。相应的,可以通过在外层封装Tensorflow的相关函数来实现对反向梯度图自动构建的支持。具体包含两个改造点:一是封装原生Tensorflow下的“梯度注册”逻辑,二是封装原生Tensorflow下的“自动求导”逻辑。
关于“梯度注册”功能的封装改造,只需要按照原生Tensorflow的框架定义规范,将原来支持的基于单Tensor的函数注册改为对应的扩展了k倍的输入输出参数的多Tensor的函数注册即可。例如,对于新的Wadd算子的梯度函数注册可以是:
@ops.RegisterGradient("WAdd")
defWAddGrad(op,grad_0,grad_1):
return(grad_0,grad_1,grad_0,grad_1)
可见,只需要将前向WAdd的4个输入张量、2个输出张量的形式对应的转换为2个输入张量、4个输出张量的形式即可。对于复杂的逻辑算子也是类似的,内部的处理逻辑可以根据需要加以调整。
关于“自动求导”功能的封装改造,需要改造原生Tensorflow中的tf.gradients函数入口,这个函数可以实现对一个输出张量(或多个逻辑独立的张量)面向一个输入张量列表进行求梯度,其内部逻辑上是按照数学上的链式法则进行高维矩阵乘法的递归处理。在本场示例中,通过对其加以包装改造,可以使其支持MultiLaneTensor形式的张量流动。为了简化描述,这里考虑最主要的场景,即用户层调用方式为tf.gradients(ys,xs)形式时的处理方法,其逻辑流程可以参阅图4所示。主要是将对外的以MultiLaneTensor类型为输入输出的函数接口替换原先的以原生张量Tensor为输入输出的处理。而在内部则还是通过合理的转换,直接的去调用Tensorflow中原生的tf.gradents函数,从而使得可以直接的复用在tf.gradients内部所实现的复杂逻辑。
在本场景示例中,按照上述方式在前端Python层对API算子的进行帮助,并在后端C++层中对算子的修改和定义说明,从而可以在已有的Tensorflow框架中,基于其自身的基础数据类型构建可以让开发者在上层进行复杂自定义类型的数据的处理,可以使得自定义的算子完成对自定义类型的数据的输入和输出,而同时自动适配、支持使用Tensorflow中自带的数据流图构建、自动求微分等功能。
通过上述场景示例,验证了基于本申请实施例提供的数据处理方法确实可以使得用户方便、高效地利用已有的预设的机器学习框架,在不需要对已有的机器学习框架作较大修改的情况下,正常使用自定义类型数据进行相应的数据处理,简化了用户的操作,提高了用户的使用体验。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施例的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。

Claims (14)

1.一种数据处理方法,其特征在于,包括:
确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型;
确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型;
根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子;
利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
2.根据权利要求1所述的方法,其特征在于,在将目标算子内部的计算逻辑修改为多个并列的子计算逻辑之后,所述方法还包括:将目标算子中经由多个并列的子计算逻辑输出的多个并列的基础张量类型的数据还原为自定义类型的数据,以得到修改后的目标算子。
3.根据权利要求1所述的方法,其特征在于,所述预设的机器学习框架包括Tensorflow框架。
4.根据权利要求1所述的方法,其特征在于,所述确定出所述自定义类型和基础张量类型之间的映射关系,包括:
确定所述自定义类型的数值存储长度,以及基础张量类型的数值存储长度;
根据所述自定义类型的数值存储长度,和所述基础张量类型的数值存储长度之间的比值,确定出一个自定义类型的数据所对应的基础张量类型的数据的个数,作为所述自定义类型和基础张量类型之间的映射关系。
5.根据权利要求1所述的方法,其特征在于,所述利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理,包括:
利用预设的机器学习框架,根据所述修改后的目标算子,构建前向逻辑图,和/或,构建反向梯度图。
6.根据权利要求5所述的方法,其特征在于,在得到修改后的目标算子之后,所述方法还包括:
在前端层添加自定义类型;
根据所述自定义类型和基础张量类型之间的映射关系,在前端层封装所述预设的机器学习框架中的原生张量类型的数据接口,并构建得到与自定义类型匹配的自定义数据接口;其中,所述自定义数据接口提供给用户,用于输入和/或输出自定义类型的数据。
7.根据权利要求6所述的方法,其特征在于,利用预设的机器学习框架,根据所述修改后的目标算子,构建前向逻辑图,包括:
检测自定义数据接口接收的第一输入数据是否符合自定义类型;
在确定所述第一输入数据不符合自定义类型的情况下,将所述第一输入数据转换为自定义类型的第一输入数据;
调用修改后的目标算子对所述自定义类型的第一输入数据进行处理,以得到对应的前向逻辑图。
8.根据权利要求6所述的方法,其特征在于,在得到修改后的目标算子之后,所述方法还包括:
根据预设的机器学习框架的框架规范,以及所述自定义类型和基础张量类型之间的映射关系,将预设的机器学习框架中支持基于单个基础张量类型的数据的函数注册修改为支持多个并列的基础张量类型的数据的函数注册;
将预设的机器学习框架中支持单个基础张量类型的数据的预设梯度下降函数的函数接口修改为支持多个并列的基础张量类型的数据的函数接口。
9.根据权利要求8所述的方法,其特征在于,利用预设的机器学习框架,根据所述修改后的目标算子,构建反向梯度图,包括:
检测通过函数接口输入的第二输入数据是否符合自定义类型;
在确定所述第二输入数据符合自定义类型的情况下,将所述第二输入数据拆分成多个并列的基础张量类型的数据,并针对各个张量类型分别构建列表,得到对应的多个第一列表;
将与所述第二输入数据对应的目标函数值拆分成多个并列的基础张量类型的数据;
以所述目标函数值中的基础张量类型的数据作为第一参数,以与所述目标函数值中的第一参数匹配的第一列表作为第二参数,调用预设梯度下降函数进行计算,得到对应的多个第二列表;
根据所述多个第二列表,还原出自定义类型的数据,以得到对应的反向梯度图。
10.根据权利要求1所述的方法,其特征在于,所述目标算子还包括基于预设的机器学习框架所生成的模型中的算子。
11.一种数据处理装置,其特征在于,包括:
第一确定模块,用于确定目标算子;其中,所述目标算子包括自定义类型的数据流经的算子,所述自定义类型包括用户自定义的数据类型;
第二确定模块,用于确定出所述自定义类型和基础张量类型之间的映射关系;其中,所述基础张量类型包括预设的机器学习框架所支持的原生张量类型;
修改模块,用于根据所述映射关系,将输入目标算子的自定义类型的数据拆分成多个并列的基础张量类型的数据的组合;将目标算子内部的计算逻辑修改为多个并列的子计算逻辑,以得到修改后的目标算子;
处理模块,用于利用预设的机器学习框架,根据所述修改后的目标算子进行数据处理。
12.根据权利要求11所述的装置,其特征在于,所述修改模块还用于将目标算子中经由多个并列的子计算逻辑输出的多个并列的基础张量类型的数据还原为自定义类型的数据,以得到修改后的目标算子。
13.一种服务器,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至10中任一项所述方法的步骤。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,所述指令被执行时实现权利要求1至10中任一项所述方法的步骤。
CN202010685572.3A 2020-07-16 2020-07-16 数据处理方法、装置和服务器 Active CN111784000B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010685572.3A CN111784000B (zh) 2020-07-16 2020-07-16 数据处理方法、装置和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010685572.3A CN111784000B (zh) 2020-07-16 2020-07-16 数据处理方法、装置和服务器

Publications (2)

Publication Number Publication Date
CN111784000A true CN111784000A (zh) 2020-10-16
CN111784000B CN111784000B (zh) 2024-05-17

Family

ID=72767878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010685572.3A Active CN111784000B (zh) 2020-07-16 2020-07-16 数据处理方法、装置和服务器

Country Status (1)

Country Link
CN (1) CN111784000B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113610242A (zh) * 2021-08-10 2021-11-05 中国工商银行股份有限公司 数据处理方法、装置和服务器
CN114021709A (zh) * 2021-09-30 2022-02-08 苏州浪潮智能科技有限公司 多fpga数据处理方法、装置、服务器及存储介质
CN114841326A (zh) * 2022-05-19 2022-08-02 北京百度网讯科技有限公司 深度学习框架的算子处理方法、装置、设备和存储介质
CN114995876A (zh) * 2022-07-18 2022-09-02 浙江大华技术股份有限公司 算法方案的生成方法、设备及计算机可读存储介质
CN117390225A (zh) * 2023-09-06 2024-01-12 苏州数设科技有限公司 一种工业数据处理方法、装置、电子设备及可读存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107943945A (zh) * 2017-11-24 2018-04-20 清华大学 一种大数据分析开发平台中异构算子管理方法
CN108628605A (zh) * 2018-04-28 2018-10-09 百度在线网络技术(北京)有限公司 流式数据处理方法、装置、服务器和介质
CN109165249A (zh) * 2018-08-07 2019-01-08 阿里巴巴集团控股有限公司 数据处理模型构建方法、装置、服务器和用户端
US10346198B1 (en) * 2018-02-12 2019-07-09 Avodah Labs, Inc. Data processing architecture for improved data flow
US20200012970A1 (en) * 2018-07-06 2020-01-09 Sap Se Machine-learning-facilitated conversion of database systems
CN110780921A (zh) * 2019-08-30 2020-02-11 腾讯科技(深圳)有限公司 数据处理方法和装置、存储介质及电子装置
CN110941467A (zh) * 2019-11-06 2020-03-31 第四范式(北京)技术有限公司 数据处理方法、装置及系统
CN111242321A (zh) * 2019-04-18 2020-06-05 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
CN111275199A (zh) * 2020-01-17 2020-06-12 深圳壹账通智能科技有限公司 一种深度学习模型文件的转换方法、系统、计算机设备及计算机可读存储介质
CN111399853A (zh) * 2020-02-20 2020-07-10 四川新网银行股份有限公司 机器学习模型与自定义算子的模板化部署方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107943945A (zh) * 2017-11-24 2018-04-20 清华大学 一种大数据分析开发平台中异构算子管理方法
US10346198B1 (en) * 2018-02-12 2019-07-09 Avodah Labs, Inc. Data processing architecture for improved data flow
CN108628605A (zh) * 2018-04-28 2018-10-09 百度在线网络技术(北京)有限公司 流式数据处理方法、装置、服务器和介质
US20200012970A1 (en) * 2018-07-06 2020-01-09 Sap Se Machine-learning-facilitated conversion of database systems
CN109165249A (zh) * 2018-08-07 2019-01-08 阿里巴巴集团控股有限公司 数据处理模型构建方法、装置、服务器和用户端
CN111242321A (zh) * 2019-04-18 2020-06-05 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
CN110780921A (zh) * 2019-08-30 2020-02-11 腾讯科技(深圳)有限公司 数据处理方法和装置、存储介质及电子装置
CN110941467A (zh) * 2019-11-06 2020-03-31 第四范式(北京)技术有限公司 数据处理方法、装置及系统
CN111275199A (zh) * 2020-01-17 2020-06-12 深圳壹账通智能科技有限公司 一种深度学习模型文件的转换方法、系统、计算机设备及计算机可读存储介质
CN111399853A (zh) * 2020-02-20 2020-07-10 四川新网银行股份有限公司 机器学习模型与自定义算子的模板化部署方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SEIYA TOKUI等: "Chainer: A Deep Learning Framework for Accelerating the Research Cycle", 《PROCEEDINGS OF THE 25TH ACM SIGKDD INTERNATIONAL CONFERENCE ON KNOWLEDGE DISCOVERY & DATA MINING》 *
罗几何: "基于8bit量化神经网络的人脸检测识别算法设计与FPGA验证", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113610242A (zh) * 2021-08-10 2021-11-05 中国工商银行股份有限公司 数据处理方法、装置和服务器
CN114021709A (zh) * 2021-09-30 2022-02-08 苏州浪潮智能科技有限公司 多fpga数据处理方法、装置、服务器及存储介质
CN114021709B (zh) * 2021-09-30 2024-01-23 苏州浪潮智能科技有限公司 多fpga数据处理方法、装置、服务器及存储介质
CN114841326A (zh) * 2022-05-19 2022-08-02 北京百度网讯科技有限公司 深度学习框架的算子处理方法、装置、设备和存储介质
CN114841326B (zh) * 2022-05-19 2024-01-12 北京百度网讯科技有限公司 深度学习框架的算子处理方法、装置、设备和存储介质
CN114995876A (zh) * 2022-07-18 2022-09-02 浙江大华技术股份有限公司 算法方案的生成方法、设备及计算机可读存储介质
CN117390225A (zh) * 2023-09-06 2024-01-12 苏州数设科技有限公司 一种工业数据处理方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN111784000B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
CN111784000A (zh) 数据处理方法、装置和服务器
KR20200068050A (ko) 인공지능 수행을 위한 학습 데이터 생성장치 및 방법
CN112036577B (zh) 基于数据形式的应用机器学习的方法、装置和电子设备
CN107679625B (zh) 针对数据记录执行机器学习的分布式系统及其方法
Elkhatib et al. Experiences of using a hybrid cloud to construct an environmental virtual observatory
US11663505B2 (en) Estimating performance and required resources from shift-left analysis
CN114626503A (zh) 模型的训练方法、目标检测方法、装置、电子设备及介质
CN113435608A (zh) 联邦学习模型的生成方法、装置、计算机设备及存储介质
CN115982491A (zh) 页面更新方法及装置、电子设备和计算机可读存储介质
CN111062521B (zh) 一种在线预测方法、系统及服务器
CN112905880A (zh) 基于区块链离线支付的信息推送方法、系统及推送平台
CN111813739A (zh) 数据迁移方法、装置、计算机设备及存储介质
CN114218052B (zh) 一种业务交互图生成方法、装置、设备及存储介质
CN110955434A (zh) 软件开发包处理方法、装置、计算机设备和存储介质
CN109063059A (zh) 行为日志处理方法、装置及电子设备
CN112102095A (zh) 一种基金产品推荐方法、装置及设备
CN115130002A (zh) 推荐请求处理方法、装置、计算机设备、存储介质
JP7082195B2 (ja) 擬似システムとしてのクラウド・コンピューティング・データの表現および解析
CN115202673A (zh) 基于云服务器的应用构建方法、装置和计算机设备
CN113391813A (zh) 程序编译方法和装置、存储介质及电子设备
CN112416488A (zh) 一种用户画像实现的方法、装置、计算机设备及计算机可读存储介质
CN115640336B (zh) 业务大数据挖掘方法、系统及云平台
Tirado et al. Improving analysis in spmd applications for performance prediction
US20240143414A1 (en) Load testing and performance benchmarking for large language models using a cloud computing platform
CN116108901A (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