CN110795104A - 一种用于TensorFlow自定义操作生成的方法 - Google Patents

一种用于TensorFlow自定义操作生成的方法 Download PDF

Info

Publication number
CN110795104A
CN110795104A CN201911039702.XA CN201911039702A CN110795104A CN 110795104 A CN110795104 A CN 110795104A CN 201911039702 A CN201911039702 A CN 201911039702A CN 110795104 A CN110795104 A CN 110795104A
Authority
CN
China
Prior art keywords
data
custom
tensorflow
registration
ops
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
CN201911039702.XA
Other languages
English (en)
Other versions
CN110795104B (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201911039702.XA priority Critical patent/CN110795104B/zh
Publication of CN110795104A publication Critical patent/CN110795104A/zh
Application granted granted Critical
Publication of CN110795104B publication Critical patent/CN110795104B/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/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明属于机器学习领域,公开了一种用于TensorFlow自定义Op生成的方法,目的是提高现有自定义Op的生成效率。本发明通过读取自定义操作注册文件,对注册文件信息进行特定封装,然后对封装后的数据进行解析,解析后通过自动生成功能对数据添加包装描述,通过文本读取的方式获取注册文件中的关键数据来降低运行时的性能消耗。采用本发明可以有效降低自定义操作生成的性能和时间开销,提高了自定义操作功能易用性。

Description

一种用于TensorFlow自定义操作生成的方法
技术领域
本发明属于机器学习领域,涉及机器学习开源库TensorFlow中的自定义操作(Op)方法,特别涉及一种用于TensorFlow自定义操作(Op)生成的优化方法。
背景技术
作为机器学习最重要的一个分支,深度学习近年来发展迅猛,在学术界、产业界都引起了广泛关注,深度神经网络已经在计算机视觉、智能搜索、无人驾驶、模式识别等领域取得了令人瞩目的成就。近些年来,随着深度学习模型结构越来越复杂,一般的学习框架已经不能满足需求,在这个背景下出现了Caffe、TensorFlow、PyTorch等众多深度学习框架。其中,TensorFlow是基于数据流图进行数值计算的开源框架,因其具有编译速度快、支持数据并行和模型并行、方便部署等特点而备受青睐。操作(Operation),简称Op,是TensorFlow框架中的核心概念之一。它是对加减乘除、卷积、赋值等具体数值计算算子的抽象。通过Op机制,可以隐藏数值计算的实现细节,仅需调用Op接口即可构建数据流图,加速了算法研发效率。为了进一步支撑深度学习算法的设计和实现,TensorFlow已经集成了近千种常用Op(也称为自带Op)。同时,TensorFlow也提供了自定义Op生成接口,支持按需以封装或扩展的方式进行Op自定义生成。
原有TensorFlow框架采用基于编译的自定义Op生成方法。其基本思想是将自定义Op注册数据视为可以编译的代码,通过调用bazel工具编译运行自定义Op注册代码和TensorFlow源码直接定向生成自定义Op调用接口。基于编译的自定义Op生成方法存在2点不足。第一,Op注册文件与TensorFlow源码紧耦合的编译方式导致自定义Op生成方法易用性差、运行过程时间长且性能开销大。由于Op注册文件需要和TensorFlow源码一起编译,一方面,如果Op注册文件中存在TensorFlow源码中未调用的环境,很容易发生编译报错现象。往往需要定位有关问题环境,将其注释之后再重新编译,给深度学习算法开发调试带来极大不便。另一方面,如果对TensorFlow源码进行修改,则需要将TensorFlow源码与Op注册文件重新编译,造成时间浪费和较大的性能开销。第二,基于编译的自定义Op生成方法产生的包装文件、动态链接库路径复杂,并且多个Op放在同一个目标文件内,用户需要对自定义Op文件进行手工拆分才能灵活使用,操作繁琐。
因此,针对现有自定义Op功能方法,如何提高自定义Op机制的易用性、缩短运行时间、降低性能消耗、提高研发效率,已成为深度学习开发人员需要解决的问题。
发明内容
本发明要解决的技术问题是:针对TensorFlow框架原有的自定义Op生成方法存在的易用性差、运行时间长、性能开销大、操作繁琐等问题,提出了一种用于TensorFlow自定义Op生成的优化方法。这种方法支持用户一键快速生成自定义Op,无需与TensorFlow源码绑定编译。自定义Op文件的生成方式灵活可控,根据需要可生成一个统一的自定义Op文件,或同时生成多个独立的自定义Op文件,方便用户调用。
本发明的技术方案是:
一种用于TensorFlow自定义Op生成的优化方法,包括以下步骤:
第一步,初始化自定义Op注册数据:用户对自定义Op的注册数据进行声明、赋值和实现,注册数据包括自定义Op的输入数据名和类型、输出数据名和类型、形状、功能操作实现及梯度传递等,如果用户需要同时生成多个自定义Op,则需要初始化所有自定义Op的注册数据,并且所有初始化完成后的注册数据均记录在同一个自定义Op注册文件中;
第二步,重组自定义Op注册数据:遍历注册信息,查找REGISTER_OP、Input、Output等关键字获取对应数据,按照Protobuf格式对自定义Op注册信息进行重组并且封装,其中Protobuf是一种用于高效存储和读取数据的结构化数据格式,如果注册文件包含多个自定义Op的数据,所有重组后的注册数据均记录在同一个Protobuf格式文件中;
第三步,解析自定义Op注册数据:调用操作列表类的解析方法,遍历重组后的自定义Op注册数据,将注册数据类型转换成TensorFlow内部能够使用的DT_INT32、DT_INT64、DT_FLOAT32、DT_FLOAT64、DT_STRING等数据类型,生成操作列表类数据;
第四步,包装自定义Op:将操作列表类中的数据进行包装,增加TensorFlow描述,提供数据传递接口,使得在基于TensorFlow计算图进行数值计算时,自定义Op的数据和TensorFlow计算图内部数据进行正常传递,其中,包装后会生成自定义Op包装文件,它是Op实现与TensorFlow之间的一个桥梁,并通过自定义Op包装文件来实现对自定义Op的调用;如果操作列表类包含了多个自定义Op的数据,用户可根据需要将多个自定义Op包装生成一个包装文件,或生成多个独立的包装文件;
第五步,完成各自定义Op的包装之后,在TensorFlow源码包之外选用各种编译方式对自定义Op进行编译,并且通过对不同自定义Op的选择和组织,能够实现机器学习应用开发层级的灵活组织和动态增量扩展。
与现有技术相比,本发明具有以下技术优点:
1.大幅缩短了运行时间,有效降低了自定义Op生成过程的性能开销。通过将自定义Op生成与TensorFlow源码编译解耦,生成包装文件不再需要对TensorFlow进行编译,缩短了运行时间,降低了性能开销。
2.操作简便灵活。原有TensorFlow自定义Op生成方法产生的自定义Op文件调用路径复杂,且多个自定义Op强制生成在同一文件下,用户单独使用时需要手动拆分。本发明支持按需生成多个自定义Op文件,方便用户调用。
3.易用性强。本发明将自定义Op注册文件视作数据,只关注其中的信息属性,有效解决了注册文件中存在TensorFlow未调用环境时出现编译报错的问题,只需要单独检查自定义Op注册数据正确性。
4.可灵活使用。原有TensorFlow自定义Op生成方法只能依赖TensorFlow自带的bazel编译工具才能产生自定义Op文件。本发明不依赖bazel编译工具,可在各类编译器上使用。
附图说明
图1是原始TensorFlow框架图;
图2是原始TensorFlow自定义操作生成流程图;
图3是本发明的TensorFlow自定义操作生成优化方法流程图。
具体实施方式
图1是原始TensorFlow框架图,KernelsImplements为整个框架的核心,是所有机器学习计算支撑的实现部分。
图2是原始TensorFlow自定义操作生成流程,主要通过TensorFlow自带的bazel编译工具,以TensorFlow源码包内编译的方式产生自定义Op,对应于图1的KernelsImplements模块。
图3是本发明的主体框架,以一个Op生成为例,描述了本发明通过Op注册文件生成Op包装文件,完成对自定义Op的TensorFlow源码包外编译,实现整个自定义Op生成流程的优化。
本发明具体流程如下:
第一步,初始化自定义Op注册数据:用户对自定义Op的注册数据进行声明、赋值和实现,注册数据包括自定义Op的输入数据名和类型、输出数据名和类型、形状、功能操作实现及梯度传递等,如果用户需要同时生成多个自定义Op,则需要初始化所有自定义Op的注册数据,并且所有初始化完成后的注册数据均记录在同一个自定义Op注册文件中;
第二步,重组自定义Op注册数据:遍历注册信息,查找REGISTER_OP、Input、Output等关键字获取对应数据,按照Protobuf格式对自定义Op注册信息进行重组并且封装,其中Protobuf是一种用于高效存储和读取数据的结构化数据格式,如果注册文件包含多个自定义Op的数据,所有重组后的注册数据均记录在同一个Protobuf格式文件中;
第三步,解析自定义Op注册数据:调用操作列表类的解析方法,遍历重组后的自定义Op注册数据,将注册数据类型转换成TensorFlow内部能够使用的DT_INT32、DT_INT64、DT_FLOAT32、DT_FLOAT64、DT_STRING等数据类型,生成操作列表类数据;
第四步,包装自定义Op:将操作列表类中的数据进行包装,增加TensorFlow描述,提供数据传递接口,使得在基于TensorFlow计算图进行数值计算时,自定义Op的数据和TensorFlow计算图内部数据进行正常传递,其中,包装后会生成自定义Op包装文件,它是Op实现与TensorFlow之间的一个桥梁,并通过自定义Op包装文件来实现对自定义Op的调用;如果操作列表类包含了多个自定义Op的数据,用户可根据需要将多个自定义Op包装生成一个包装文件,或生成多个独立的包装文件;
第五步,完成各自定义Op的包装之后,在TensorFlow源码包之外选用各种编译方式对自定义Op进行编译,并且通过对不同自定义Op的选择和组织,能够实现机器学习应用开发层级的灵活组织和动态增量扩展。
上述说明描述了本发明应用的实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是其他实施例的排除,而可用于各种其他组合、修改和环境,并能在本文所述发明构想范围内,通过上述教导或相关领域的技术进行改动。而本领域人员所进行的改动和变化不脱离发明的精神和范围,则都应在发明所附权利要求的保护范围内。

Claims (1)

1.一种用于TensorFlow自定义操作生成的方法,其特征在于,包括以下步骤:
第一步,初始化自定义Op注册数据:用户对自定义Op的注册数据进行声明、赋值和实现,注册数据包括自定义Op的输入数据名和类型、输出数据名和类型、形状、功能操作实现及梯度传递等,如果用户需要同时生成多个自定义Op,则需要初始化所有自定义Op的注册数据,并且所有初始化完成后的注册数据均记录在同一个自定义Op注册文件中;
第二步,重组自定义Op注册数据:遍历注册信息,查找REGISTER_OP、Input、Output等关键字获取对应数据,按照Protobuf格式对自定义Op注册信息进行重组并且封装,其中Protobuf是一种用于高效存储和读取数据的结构化数据格式,如果注册文件包含多个自定义Op的数据,所有重组后的注册数据均记录在同一个Protobuf格式文件中;
第三步,解析自定义Op注册数据:调用操作列表类的解析方法,遍历重组后的自定义Op注册数据,将注册数据类型转换成TensorFlow内部能够使用的DT_INT32、DT_INT64、DT_FLOAT32、DT_FLOAT64、DT_STRING等数据类型,生成操作列表类数据;
第四步,包装自定义Op:将操作列表类中的数据进行包装,增加TensorFlow描述,提供数据传递接口,使得在基于TensorFlow计算图进行数值计算时,自定义Op的数据和TensorFlow计算图内部数据进行正常传递,其中,包装后会生成自定义Op包装文件,它是Op实现与TensorFlow之间的一个桥梁,并通过自定义Op包装文件来实现对自定义Op的调用;如果操作列表类包含了多个自定义Op的数据,用户可根据需要将多个自定义Op包装生成一个包装文件,或生成多个独立的包装文件;
第五步,完成各自定义Op的包装之后,在TensorFlow源码包之外选用各种编译方式对自定义Op进行编译,并且通过对不同自定义Op的选择和组织,能够实现机器学习应用开发层级的灵活组织和动态增量扩展。
CN201911039702.XA 2019-10-29 2019-10-29 一种用于TensorFlow自定义操作生成的方法 Active CN110795104B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911039702.XA CN110795104B (zh) 2019-10-29 2019-10-29 一种用于TensorFlow自定义操作生成的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911039702.XA CN110795104B (zh) 2019-10-29 2019-10-29 一种用于TensorFlow自定义操作生成的方法

Publications (2)

Publication Number Publication Date
CN110795104A true CN110795104A (zh) 2020-02-14
CN110795104B CN110795104B (zh) 2023-05-05

Family

ID=69442044

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911039702.XA Active CN110795104B (zh) 2019-10-29 2019-10-29 一种用于TensorFlow自定义操作生成的方法

Country Status (1)

Country Link
CN (1) CN110795104B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782219A (zh) * 2020-07-16 2020-10-16 矩阵元技术(深圳)有限公司 基于TensorFlow的自定义类型实现方法和装置
CN111899150A (zh) * 2020-08-28 2020-11-06 Oppo广东移动通信有限公司 数据处理方法、装置、电子设备及存储介质
CN113342346A (zh) * 2021-05-18 2021-09-03 北京百度网讯科技有限公司 深度学习框架的算子注册方法、装置、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104020994A (zh) * 2014-05-30 2014-09-03 华为技术有限公司 基于流系统的流过程定义装置和流过程定义方法
CN108197633A (zh) * 2017-11-24 2018-06-22 百年金海科技有限公司 基于TensorFlow的深度学习图像分类与应用部署方法
CN109933339A (zh) * 2019-02-01 2019-06-25 厦门快商通信息咨询有限公司 一种将TensorFlow模型部署到移动端运行的方法、移动端及介质
EP3544236A1 (en) * 2018-03-21 2019-09-25 Telefonica, S.A. Method and system for training and validating machine learning algorithms in data network environments

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104020994A (zh) * 2014-05-30 2014-09-03 华为技术有限公司 基于流系统的流过程定义装置和流过程定义方法
CN108197633A (zh) * 2017-11-24 2018-06-22 百年金海科技有限公司 基于TensorFlow的深度学习图像分类与应用部署方法
EP3544236A1 (en) * 2018-03-21 2019-09-25 Telefonica, S.A. Method and system for training and validating machine learning algorithms in data network environments
CN109933339A (zh) * 2019-02-01 2019-06-25 厦门快商通信息咨询有限公司 一种将TensorFlow模型部署到移动端运行的方法、移动端及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SWAGATH VENKATARAMANI 等: "DeepTools: Compiler and Execution Runtime Extensions for RaPiD AI Accelerator" *
刘波 等: "一种神经网络中自定义损失函数的设计与分析" *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782219A (zh) * 2020-07-16 2020-10-16 矩阵元技术(深圳)有限公司 基于TensorFlow的自定义类型实现方法和装置
CN111782219B (zh) * 2020-07-16 2024-03-22 矩阵元技术(深圳)有限公司 基于TensorFlow的自定义类型实现方法和装置
CN111899150A (zh) * 2020-08-28 2020-11-06 Oppo广东移动通信有限公司 数据处理方法、装置、电子设备及存储介质
CN113342346A (zh) * 2021-05-18 2021-09-03 北京百度网讯科技有限公司 深度学习框架的算子注册方法、装置、设备和存储介质
CN113342346B (zh) * 2021-05-18 2022-03-25 北京百度网讯科技有限公司 深度学习框架的算子注册方法、装置、设备和存储介质
US11625248B2 (en) 2021-05-18 2023-04-11 Beijing Baidu Netcom Science Technology Co., Ltd. Operator registration method and apparatus for deep learning framework, device and storage medium

Also Published As

Publication number Publication date
CN110795104B (zh) 2023-05-05

Similar Documents

Publication Publication Date Title
CN111770113B (zh) 一种执行智能合约的方法、区块链节点和节点设备
Marwedel et al. Code generation for embedded processors
Hendren et al. Designing the McCAT compiler based on a family of structured intermediate representations
US6078744A (en) Method and apparatus for improving compiler performance during subsequent compilations of a source program
CN110795104B (zh) 一种用于TensorFlow自定义操作生成的方法
US9823911B2 (en) Method and apparatus for compiling code based on a dependency tree
CN107250982A (zh) 用于加速器的程序生成方法和系统
US9256437B2 (en) Code generation method, and information processing apparatus
CN113031966B (zh) 一种智能选择编译加速库的深度学习编译优化方法
CN101408849A (zh) Ttcn-3语言的编译执行方法及系统
CN111815310B (zh) 一种执行智能合约的方法、区块链节点和存储介质
CN111768184A (zh) 一种执行智能合约的方法及区块链节点
CN111768183A (zh) 一种执行智能合约的方法、区块链节点和存储介质
CN115756451A (zh) 一种多项目代码文件重用的方法、装置、设备、存储介质
US9875088B2 (en) Optimized compiling of a template function
CN109558121A (zh) 接口驱动程序的开发方法、装置、设备及存储介质
CN105447285A (zh) 一种提高OpenCL硬件执行效率的方法
CN115629802A (zh) 程序移植处理方法及装置
US20230176823A1 (en) Automatic generation of source code implementing a regular expression
US11556357B1 (en) Systems, media, and methods for identifying loops of or implementing loops for a unit of computation
CN111191106B (zh) Dsl的构建方法、系统、电子设备和介质
JP6897213B2 (ja) コード生成装置、コード生成方法及びコード生成プログラム
Balbaert Julia 1.0 Programming: Dynamic and high-performance programming to build fast scientific applications
Mateos et al. Energy implications of common operations in resource-intensive java-based scientific applications
Cholakov et al. Automated Software Reengineering Model and Framework

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
CB03 Change of inventor or designer information

Inventor after: Yang Wenjing

Inventor after: Liang Zhuo

Inventor after: Huang Wanrong

Inventor after: Yang Shaowu

Inventor after: Huang Da

Inventor after: Xu Liyang

Inventor after: Yan Haojie

Inventor after: Liu Xiangyang

Inventor after: Sha Jiansong

Inventor after: Hu Yaqing

Inventor before: Yang Wenjing

Inventor before: Liang Zhuo

Inventor before: Huang Wanrong

Inventor before: Yang Shaowu

Inventor before: Huang Da

Inventor before: Xu Liyang

Inventor before: Yan Haojie

Inventor before: Liu Xiangyang

Inventor before: Sha Jiansong

Inventor before: Hu Yaqing

CB03 Change of inventor or designer information