CN114970845A - 一种面向通用神经网络张量处理器的统一计算方法 - Google Patents

一种面向通用神经网络张量处理器的统一计算方法 Download PDF

Info

Publication number
CN114970845A
CN114970845A CN202210031626.3A CN202210031626A CN114970845A CN 114970845 A CN114970845 A CN 114970845A CN 202210031626 A CN202210031626 A CN 202210031626A CN 114970845 A CN114970845 A CN 114970845A
Authority
CN
China
Prior art keywords
operator
neural network
operators
composite
instruction
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
Application number
CN202210031626.3A
Other languages
English (en)
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.)
Xiamen Yipu Intelligent Technology Co ltd
Original Assignee
Xiamen Yipu Intelligent 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 Xiamen Yipu Intelligent Technology Co ltd filed Critical Xiamen Yipu Intelligent Technology Co ltd
Priority to CN202210031626.3A priority Critical patent/CN114970845A/zh
Publication of CN114970845A publication Critical patent/CN114970845A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种面向通用神经网络张量处理器的统一计算方法,在统一的环境与方法下同时实现指令计算与算子计算,把神经网络算法与应用的内容全部以算子的形式进行表达,其中,所述神经网络算法相关的计算以神经网络算子形式来表达,神经网络应用相关的计算以自定义指令算子的形式来表达。本发明的统一计算方法,可以在通用神经网络张量处理器中同时执行算子与指令,使得系统既具备数据处理器的高性能、低能耗特性,又具备指令处理器的通用灵活性。

Description

一种面向通用神经网络张量处理器的统一计算方法
技术领域
本发明涉及神经网络张量处理器领域,尤其涉及一种面向通用神经网络张量处理器的统一计算方法。
背景技术
现有处理器及其计算方法大致分为两类。一类基于指令,使用存储程序计算模型,传统的CPU、GPU或DSP都属于这类指令处理器;另一类基于数据,使用计算图模型,前案专利1(发明名称为:一种神经网络多核张量处理器,申请号为:202011423696.0)和前案专利2(发明名称为:一种神经网络张量处理器,申请号为:202011421828.6)属于这类数据处理器。
指令处理器的计算围绕着指令进行,其最小计算粒度为单条指令。数据处理器的计算围绕着数据进行,其最小计算粒度通常为算子。这里的算子指计算粒度和操作数粒度远大于指令的功能操作,例如卷积。
通常情况下,指令针对一个操作数(例如32比特数或64比特数)完成单一计算功能(例如加法操作)。算子针对一系列操作数(例如长宽高分别为H、W、C的张量数据)完成复杂计算功能(例如卷积操作,其由多个乘法和加法组成)。因此,原生支持指令计算的处理器和原生支持算子计算的处理器相比,内部结构的差异性较大且相应的计算方法也不同。
对于上述两种完全不同的处理器类型,在神经网络算法的计算中,计算方法也完全不同。对于指令处理器,可以通过指令组合的方式对算子进行模拟运行,通用性高,但其通常计算性能较低或者计算能耗较大(例如用CPU可以执行神经网络算法,但速度通常很慢,用GPU可以执行神经网络算法,但能耗通常很高)。对于数据处理器,可以原生支持算子的计算,高性能且低能耗。但其无法支持指令的计算,因此在计算的通用性上往往受限。
发明内容
针对上述现有方案的不足,本发明提出一种面向通用神经网络张量处理器的统一计算方法,可以在通用神经网络张量处理器中同时执行算子与指令,使得系统既具备数据处理器的高性能、低能耗特性,又具备指令处理器的通用灵活性。该通用神经网络张量处理器融合了指令处理器和数据处理器的特点,其内部包含数据流内核和指令流内核,其中,数据流内核可以执行上述算子,指令流内核可以执行上述指令。
本发明提出的具体技术方案如下:
一种面向通用神经网络张量处理器的统一计算方法,在统一的环境与方法下同时实现指令计算与算子计算,把神经网络算法与应用的内容全部以算子的形式进行表达,其中,所述神经网络算法相关的计算以神经网络算子形式来表达,神经网络应用相关的计算以自定义指令算子的形式来表达。
进一步的,所述神经网络算子是指在神经网络算法中所使用的粗粒度的、模块化的功能操作,所述神经网络算子不可拆解,在通用神经网络张量处理器的数据流内核执行,所述神经网络算子最终被映射为数据流内核中某些电路的直接运算操作。
进一步的,所述自定义指令算子是指在神经网络应用中所使用的功能操作,在通用神经网络张量处理器的指令流内核执行,所述自定义指令算子最终被转换为等价的指令组合,每一条指令被映射为指令流内核中某些电路的直接运算操作。
进一步的,所述算子,用于获取输入数据或中间数据,根据由算子类型决定的计算方式,计算得到输出数据或中间数据,其中,根据不同算子的类型,某些算子还拥有参数,该参数作为算子的另一个隐含输入而存在。
进一步的,所述神经网络算法相关的计算还以复合算子形式表达,在部署时,所述复合算子通过如下方式建立与硬件的映射关系:所述复合算子被映射为由神经网络算子和自定义指令算子组成的等价算子组合,所述复合算子与神经网络算子和自定义指令算子的转换规则写入编译软件中。
进一步的,所述复合算子包括神经网络算子、自定义指令算子,及可选项:复合参数和复合数据;其中,所述复合参数是复合算子训练所得参数,该参数将根据具体复合算子内部算子的需求,被拆解为多份,并分别分配给对应内部算子作为参数来使用;所述复合数据是复合算子的内部算子与外部算子的额外数据通路。
进一步的,所述复合算子具备并行机制,所述复合算子包括多个功能相同的神经网络算子,用于实现并行计算。
进一步的,所述复合算子具备迭代机制,用于实现复合算子的嵌套,在由编译软件完成的复合算子映射过程中,所有嵌套的复合算子都将被展开,并最终合并成一个新的仅有神经网络算子和自定义指令算子组成的复合算子。
进一步的,所述通用神经网络张量处理器被抽象为包含数据流内核与指令流内核的处理器,所述数据流内核用于执行所述神经网络算子,所述指令流内核用于执行所述自定义指令算子。
本发明实现了如下技术效果:
本发明提出的面向通用神经网络张量处理器的统一计算方法,把神经网络算法与应用的全部内容都以算子的形式进行表达,从而可以在通用神经网络张量处理器中同时执行算子与指令,使得系统既具备数据处理器的高性能、低能耗特性,又具备指令处理器的通用灵活性。
附图说明
图1是本发明的由神经网络算子和自定义指令算子所组成的神经网络算法;
图2是带复合算子的神经网络算法;
图3是一种复合算子的转换示例;
图4是另一种复合算子的转换示例;
图5是一种复合算子嵌套示例。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
现结合附图和具体实施方式对本发明进一步说明。
本发明提出一种面向通用神经网络张量处理器的统一计算方法,该统一计算方法可以在统一的环境与方法下同时实现指令计算与算子计算。该统一计算方法的核心思想,是把神经网络算法与应用的全部内容都以算子的形式进行表达,其中,神经网络算法相关的计算以神经网络算子形式来表达,神经网络应用相关的计算以自定义指令算子的形式来表达。
所述神经网络算子是指在神经网络算法中所使用的粗粒度的功能操作。神经网络算子通常具备一定通用性,也即不同的神经网络算法会用到相同类型的算子,例如典型的卷积、池化、激活等。
所述自定义指令算子是指在神经网络应用中所使用的功能操作。自定义指令算子通常不具备通用性,也即自定义指令算子通常由开发人员根据应用需求而自定义开发,不同的神经网络应用所使用的自定义指令算子是不同的,典型如数据输入、数据输出、数据筛选等。自定义指令算子定义为由开发人员根据应用需求而自定义开发的算子。
一个由神经网络算子和自定义指令算子所组成的神经网络算法如图1所示。其中,输入数据是该神经网络算法的输入,输出数据是该神经网络算法的输出,每个算子(包括自定义指令算子和神经网络算子)的主要作用,就是获取输入数据或中间数据,根据由算子类型决定的计算方式(如卷积),计算得到输出数据或中间数据。其中,根据不同算子的类型,某些算子还可能拥有参数,该参数作为算子的另一个隐含输入而存在。
上述由神经网络算子和自定义指令算子组成的神经网络算法可用于一新型的通用神经网络张量处理器。该通用神经网络张量处理器可以被抽象为包含数据流内核与指令流内核,可执行神经网络算子与自定义指令算子的处理器。其中,神经网络算子在数据流内核执行。神经网络算子不可拆解,其最终被映射为数据流内核中某些电路的直接运算操作;自定义指令算子由指令流内核执行。自定义指令算子最终被转换为等价的指令组合,每一条指令被映射为指令流内核中某些电路的直接运算操作。
更进一步,所述神经网络算法还可以由复合算子组成。所述复合算子指通过组合原有神经网络算子与自定义指令算子而形成的新算子。复合算子可以提供新的计算功能,且该新计算功能无需增加或修改通用神经网络张量处理器的原生硬件架构,而是通过分别使用通用神经网络张量处理器原生架构的不同部分(也即不同算子的运算),通过组合多个神经网络算子和自定义指令算子的方式来实现更为复杂的计算。
从神经网络结构与算法训练的角度来看,所述包含复合算子的神经网络算法与普通神经网络算法没有任何差异,如图2所示。复合算子被定义为一个新算子,拥有独立的软件实现,可以由算法训练工具(如Pytorch)训练获得参数,因此,从神经网络算法训练的角度,复合算子与神经网络算子和自定义指令算子之间并无差异。
然而,在基于通用神经网络张量处理器的神经网络算法推理部署阶段,由于复合算子与硬件之间并无直接映射关系,因此复合算子被映射为由神经网络算子和自定义指令算子组成的等价算子的组合。复合算子与神经网络算子和自定义指令算子的转换规则在复合算子定义阶段由设计人员决定,并把该规则写入负责转换任务的编译软件中。
图3是一个复合算子转换的例子。从基本构造来说,复合算子由神经网络算子/自定义指令算子、复合数据和复合参数组成。所述复合数据和复合参数并不是必要的,根据具体复合算子的需求,复合算子可以仅由神经网络算子/自定义指令算子组成。
复合算子的具体功能由神经网络算子与自定义指令算子的组合所决定。复合参数是复合算子训练所得参数,该参数将根据具体复合算子内部算子的需求,被拆解为多份,并分别分配给对应内部算子作为参数来使用。
另外,在不包含复合算子的神经网络算法中,算子之间仅存在输入数据/中间数据以及输出数据/中间数据的数据通路。然而,在一些复合算子的运算过程中,往往会存在额外的隐藏数据通路(典型如LSTM的hidden和cell数据)。因此,在包含复合算子的神经网络算法中,使用复合数据来表征这些有可能存在的隐藏数据通路。该复合数据被内部算子使用或更新,同时也可以被外部算子使用或更新。复合数据是复合算子的内部算子与外部算子(除了传统的输入数据、输出数据和中间数据通路)的额外数据通路。
图3所示复合算子由多个不同功能的神经网络算子和自定义指令算子组成,其主要目的是实现功能更为复杂的新算子。图4是另一种复合算子转换的例子,该复合算子由多个功能相同的神经网络算子组成,其主要目的是通过把数据和参数拆成小部分,并分给多个相同的神经网络算子执行,从而实现并行加速(在多核处理器中,图4所示复合算子内部的多个神经网络算子A可以同时分配给多个处理器核并行计算)。
复合算子具备嵌套机制,可实现复合算子中包含复合算子的神经网络算法,一个复合算子嵌套的例子如图5所示。复合算子的嵌套级数是无限的。在由编译软件完成的复合算子映射过程中,所有嵌套的复合算子都将被展开,并最终合并成一个新的仅有神经网络算子和自定义指令算子组成的复合算子。
基于上述复合算子机制,通过组合神经网络算子/自定义指令算子、复合参数与复合数据,可以实现所有神经网络的复杂算子计算,例如LSTM、GRU、Transformer等。同时,还可以实现许多传统的非神经网络算子,例如均值滤波算子、高斯滤波算子、Sobel算子等,从而极大地丰富了系统功能的灵活性,提高了系统功能的可扩展性。
本发明涉及一种通用神经网络张量处理器,该通用神经网络张量处理器被抽象为包含数据流内核与指令流内核的处理器,其中,数据流内核可以执行上述算子,指令流内核可以执行上述指令。本发明所提出的统一计算方法可以在所述通用神经网络张量处理器中同时执行算子与指令,使得系统既具备数据处理器的高性能、低能耗特性,又具备指令处理器的通用灵活性。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

Claims (9)

1.一种面向通用神经网络张量处理器的统一计算方法,其特征在于,在统一的环境与方法下同时实现指令计算与算子计算,把神经网络算法与应用的内容全部以算子的形式进行表达,其中,所述神经网络算法相关的计算以神经网络算子形式来表达,神经网络应用相关的计算以自定义指令算子的形式来表达。
2.如权利要求1所述的统一计算方法,其特征在于,所述神经网络算子是指在神经网络算法中所使用的粗粒度的、模块化的功能操作,所述神经网络算子不可拆解,在通用神经网络张量处理器的数据流内核执行,所述神经网络算子最终被映射为数据流内核中某些电路的直接运算操作。
3.如权利要求1所述的统一计算方法,其特征在于,所述自定义指令算子是指在神经网络应用中所使用的功能操作,在通用神经网络张量处理器的指令流内核执行,所述自定义指令算子最终被转换为等价的指令组合,每一条指令被映射为指令流内核中某些电路的直接运算操作。
4.如权利要求1所述的统一计算方法,其特征在于,所述算子,用于获取输入数据或中间数据,根据由算子类型决定的计算方式,计算得到输出数据或中间数据,其中,根据不同算子的类型,某些算子还拥有参数,该参数作为算子的另一个隐含输入而存在。
5.如权利要求1所述的统一计算方法,其特征在于,所述神经网络算法相关的计算还以复合算子形式表达,在部署时,所述复合算子通过如下方式建立与硬件的映射关系:所述复合算子被映射为由神经网络算子和自定义指令算子组成的等价算子组合,所述复合算子与神经网络算子和自定义指令算子的转换规则写入编译软件中。
6.如权利要求5所述的统一计算方法,其特征在于,所述复合算子包括神经网络算子、自定义指令算子,及可选项:复合参数和复合数据;其中,所述复合参数是复合算子训练所得参数,该参数将根据具体复合算子内部算子的需求,被拆解为多份,并分别分配给对应内部算子作为参数来使用;所述复合数据是复合算子的内部算子与外部算子的额外数据通路。
7.如权利要求5所述的统一计算方法,其特征在于,所述复合算子具备并行机制,所述复合算子包括多个功能相同的神经网络算子,用于实现并行计算。
8.如权利要求5所述的统一计算方法,其特征在于,所述复合算子具备迭代机制,用于实现复合算子的嵌套,在由编译软件完成的复合算子映射过程中,所有嵌套的复合算子都将被展开,并最终合并成一个新的仅有神经网络算子和自定义指令算子组成的复合算子。
9.如权利要求1所述的统一计算方法,其特征在于,所述通用神经网络张量处理器被抽象为包含数据流内核与指令流内核的处理器,所述数据流内核用于执行所述神经网络算子,所述指令流内核用于执行所述自定义指令算子。
CN202210031626.3A 2022-01-12 2022-01-12 一种面向通用神经网络张量处理器的统一计算方法 Pending CN114970845A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210031626.3A CN114970845A (zh) 2022-01-12 2022-01-12 一种面向通用神经网络张量处理器的统一计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210031626.3A CN114970845A (zh) 2022-01-12 2022-01-12 一种面向通用神经网络张量处理器的统一计算方法

Publications (1)

Publication Number Publication Date
CN114970845A true CN114970845A (zh) 2022-08-30

Family

ID=82974604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210031626.3A Pending CN114970845A (zh) 2022-01-12 2022-01-12 一种面向通用神经网络张量处理器的统一计算方法

Country Status (1)

Country Link
CN (1) CN114970845A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111260019A (zh) * 2020-02-18 2020-06-09 深圳鲲云信息科技有限公司 神经网络模型的数据处理方法、装置、设备及存储介质
CN111309757A (zh) * 2020-05-14 2020-06-19 深圳市赢时胜信息技术股份有限公司 一种HBase的SQL解释器和优化方法
CN111723935A (zh) * 2020-06-24 2020-09-29 湖北亿咖通科技有限公司 神经网络计算图的处理方法、计算机存储介质及电子设备
CN112784959A (zh) * 2021-01-13 2021-05-11 鹏城实验室 一种兼容多框架的深度学习模型快速搭建系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111260019A (zh) * 2020-02-18 2020-06-09 深圳鲲云信息科技有限公司 神经网络模型的数据处理方法、装置、设备及存储介质
CN111309757A (zh) * 2020-05-14 2020-06-19 深圳市赢时胜信息技术股份有限公司 一种HBase的SQL解释器和优化方法
CN111723935A (zh) * 2020-06-24 2020-09-29 湖北亿咖通科技有限公司 神经网络计算图的处理方法、计算机存储介质及电子设备
CN112784959A (zh) * 2021-01-13 2021-05-11 鹏城实验室 一种兼容多框架的深度学习模型快速搭建系统

Similar Documents

Publication Publication Date Title
CN110689138B (zh) 运算方法、装置及相关产品
KR102331978B1 (ko) 인공 신경망 정방향 연산 실행용 장치와 방법
US20220012575A1 (en) Methods and apparatus for localized processing within multicore neural networks
JP2020518042A (ja) 処理装置と処理方法
Zhang et al. GBTL-CUDA: Graph algorithms and primitives for GPUs
CN114556260B (zh) 用于执行神经网络的装置和系统
WO2022134307A1 (zh) 一种可重构芯片的内存耦合编译方法及系统
US20100250564A1 (en) Translating a comprehension into code for execution on a single instruction, multiple data (simd) execution
US20240020239A1 (en) Artificial intelligence (ai)/machine learning (ml) tensor processor
CN113553054A (zh) 基于异构系统的编译方法、装置、设备及存储介质
US20200410330A1 (en) Composable neural network kernels
US9280382B1 (en) Parallel processing of multidimensional arrays
Higuchi et al. ClPy: a NumPy-compatible library accelerated with OpenCL
Wang et al. Reconfigurable CNN accelerator embedded in instruction extended RISC-V core
Paudel et al. Using the cowichan problems to investigate the programmability of x10 programming system
US9135065B1 (en) Parallel processing of multidimensional arrays
WO2023030507A1 (zh) 编译优化方法、装置、计算机设备以及存储介质
CN114970845A (zh) 一种面向通用神经网络张量处理器的统一计算方法
Cyganek Adding parallelism to the hybrid image processing library in multi-threading and multi-core systems
CN113887730B (zh) 量子模拟器实现方法、装置、相关设备以及量子模拟方法
Rocki et al. The future of accelerator programming: abstraction, performance or can we have both?
Jurkans et al. Python Subset to Digital Logic Dataflow Compiler for Robots and IoT
Snir Scalable parallel computers and scalable parallel codes: From theory to practice
Müller et al. Using the Abstract Computer Architecture Description Language to Model AI Hardware Accelerators
Stratton et al. Optimizing halide for digital signal processors

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