CN113849293B - 数据处理方法、装置、***及计算机可读存储介质 - Google Patents
数据处理方法、装置、***及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113849293B CN113849293B CN202111436322.7A CN202111436322A CN113849293B CN 113849293 B CN113849293 B CN 113849293B CN 202111436322 A CN202111436322 A CN 202111436322A CN 113849293 B CN113849293 B CN 113849293B
- Authority
- CN
- China
- Prior art keywords
- neural network
- sub
- network
- output data
- module
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
Abstract
本申请实施例公开了一种数据处理方法、装置、***及计算机可读存储介质。该方法包括:将神经网络的子网络模块部署在芯片上的神经网络处理器中,通过神经网络处理器的计算单元将保存子网络输出数据的内存地址封装为报文,该子网络输出数据为神经网络处理器调用神经网络的子网络模块处理而输出的数据,并将报文发送至RDMA引擎中的待发送队列,由RDMA引擎将内存地址中保存的子网络输出数据发送至神经网络另一子网络模块所在的目标神经网络处理器上,如此,提高了神经网络处理器之间传输数据的效率,可在不增加芯片成本的基础上,实现将一个复杂的神经网络部署到多个神经网络处理器上。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种数据处理方法、装置、***及计算机可读存储介质。
背景技术
在自动驾驶领域,为了提高自动驾驶的准确性(如障碍物检测的准确性)和精度,往往采用增加神经网络的网络层数(如从ResNet-18到ResNet-200,网络层数从18层增加到200层)的方式,随着感知引擎记录了越来越多的对象,导致了神经网络规模迅速膨胀。另一方面,在未来的发展中,自动驾驶领域中的车辆又需要支持更高级别的ADAS***(AdvancedDriving Assistance System,高级驾驶员辅助***),而更高级别的ADAS***需要更大的算力。
目前有很多的AI处理器被开发出来,以用于自动驾驶领域,如硬件化的神经网络处理器(AI Processing Unit,AIPU),包括NPU(Neural Network Processing Unit orNeural Processing Unit,神经网络处理器)、TPU(Neural Processing Unit,张量处理器)等,这些专用的神经网络处理器往往以资源和空间来换取效率,采用多个计算单元排列成矩阵实现并行处理、采用矩阵分解的方式来简化过滤器的计算等。
为了支持更大规模的神经网络以及提高更大规模的神经网络的计算效率,一个可行的方法是在单块神经网络处理器,如NPU/TPU上增加权重网络存储空间、增加更多的计算单元。由于各个处理器厂商的解决方案不同,就需要有低、中、高算力的系列芯片同时生产,同时更多权重网络存储空间和更多计算单元增加了成本。
另一个未来可能会使用的方法是把一个复杂的神经网络分布到多个TPU/NPU上,在不同TPU/NPU之间利用CPU通过软件模块来传递子网络输出数据,CPU的介入严重降低了整体的性能和效率;且多个TPU/NPU中的很多中间计算结果和信息都被丢掉了,会显著降低智能性和舒适性;另外,CPU作为中间人在NPU、GPU和CPU的多个软件模块中传递数据导致端到端反应时间超长。这些原因均导致实现一个复杂的神经网络分布到多个TPU/NPU上存在诸多困难。
发明内容
本申请实施例提供一种数据处理方法、装置、***及计算机可读存储介质及,可以在不增加芯片成本的情况下,实现将一个复杂的神经网络分布到多个神经网络处理器上,且可提高神经网络处理器与其他神经网络处理器之间传输数据的效率。
本申请实施例提供了一种数据处理方法,应用在芯片中的神经网络处理器上,所述神经网络处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器上部署有神经网络的子网络模块,所述神经网络处理器包括多个计算单元和存储器,所述数据处理方法,包括:
所述神经网络处理器的计算单元获取用于保存子网络输出数据的内存地址,所述子网络输出数据是调用所述存储器中的子网络模块进行处理而输出的数据;
所述计算单元将所述内存地址封装为预设格式的硬件层的报文,并将所述报文发送至所述远程直接内存访问引擎中的待发送队列,所述预设格式为所述直接内存访问引擎支持的格式;
所述远程直接内存访问引擎获取所述待发送队列中的所述报文中的所述内存地址,从所述内存地址中获取所述子网络输出数据,并通过所述子网络模块与部署有所述神经网络的另一子网络模块之间创建的传输通道,将所述子网络输出数据发送至所述另一子网络模块所在的目标神经网络处理器上。
本申请实施例还提供一种数据处理装置,应用在芯片中的神经网络处理器上,所述神经网络处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器上部署有神经网络的子网络模块,所述神经网络处理器包括多个计算单元和存储器,所述数据处理装置,包括:
第一获取模块,用于通过所述神经网络处理器的计算单元获取用于保存子网络输出数据的内存地址,所述子网络输出数据是调用所述存储器中的子网络模块进行处理而输出的数据;
封装模块,用于通过所述计算单元将所述内存地址封装为预设格式的硬件层的报文,并将所述报文发送至所述远程直接内存访问引擎中的待发送队列,所述预设格式为所述直接内存访问引擎支持的格式;
第二获取模块,用于通过所述远程直接内存访问引擎获取所述待发送队列中的所述报文中的所述内存地址,从所述内存地址中获取所述子网络输出数据;
发送模块,用于通过所述子网络模块与部署有所述神经网络的另一子网络模块之间创建的传输通道,将所述子网络输出数据发送至所述另一子网络模块所在的目标神经网络处理器上。
本申请实施例还提供一种数据处理***,包括:包括多个神经网络处理器,神经网络的多个子网络模块被部署于各神经网络处理器中,所述神经网络处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器包括多个计算单元和存储器,所述存储器中存储有子网络模块,所述神经网络处理器用于执行上述任一项所述的数据处理方法。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如上任一实施例所述的数据处理方法中的步骤。
本申请实施例还提供一种芯片,所述芯片包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,执行如上任一实施例所述的数据处理方法中的步骤。
本申请实施例提供的数据处理方法、装置、***及计算机可读存储介质,将神经网络的子网络模块部署在芯片上的神经网络处理器中,通过神经网络处理器的计算单元将保存子网络输出数据的内存地址封装为报文,该子网络输出数据为神经网络处理器调用神经网络的子网络模块处理而输出的数据,并将报文发送至直接内存访问引擎中的待发送队列,并由直接内存访问引擎将内存地址中保存的子网络输出数据发送至神经网络另一子网络模块所在的目标神经网络处理器上,如此,将部署有神经网络的子网络模块的神经网络处理器处理得到的子网络输出数据发送至部署有神经网络的另一子网络模块的目标神经网络处理器上,子网络输出数据并没有被丢掉,使得可很好的利用子网络模块处理得到的子网络输出数据进行下一步的处理,提高神经网络处理数据的效率,此外,子网络模块处理得到的子网络输出数据的传输不必经过芯片上的CPU,不必生成传输请求(生成传输请求需要调用芯片上的CPU来进行处理),而直接封装为硬件层的报文,从计算单元发送至直接内存访问引擎中的待发送队列,直接通过硬件传输,如此提高了神经网络处理器之间传输数据的效率。在子网络模块处理得到的子网络输出数据没有丢失,且能高效的在神经网络处理器之间传输子网络输出数据的基础上,不增加芯片成本,即可实现将一个复杂的神经网络部署到多个神经网络处理器上,解决了现有技术的难题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的自动驾驶控制***的示意图。
图2为本申请实施例提供的数据处理***的应用场景示意图。
图3为本申请实施例提供的数据处理***的另一应用场景示意图。
图4为本申请实施例提供的数据处理***的工作流程示意图。
图5为本申请实施例提供的数据处理***的另一工作流程示意图。
图6为本申请实施例提供的神经网管理处理器之间传输数据的示意图。
图7为本申请实施例提供的数据处理方法的流程示意图。
图8为本申请实施例提供的数据处理方法的另一流程示意图。
图9为本申请实施例提供的在单个神经网络处理器上执行子网络模块的示意图。
图10为本申请实施例提供的数据处理方法的另一流程示意图。
图11为本申请实施例提供的数据处理方法的又一流程示意图。
图12为本申请实施例提供的数据处理方法的又一流程示意图。
图13为本申请实施例提供的数据处理装置的结构示意图。
图14为本申请实施例提供的数据处理装置的另一结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种数据处理方法、装置、***、计算机可读存储介质及芯片。具体地,本申请实施例的数据处理方法可以由芯片来执行,具体地,由芯片中的神经网络处理器来执行。其中,该芯片可以为***级芯片(SoC),还可以是其他的可集成神经网络处理器的芯片。在每个芯片中,集成有一个或者多个神经网络处理器。神经网络处理器包括TPU、NPU等AIPU处理器,下文中以NPU为例进行说明。
再具体介绍本申请实施例的具体方案之前,先介绍下当前自动驾驶车辆所采用的自动驾驶控制***的示意图,以进一步帮助理解本申请实施例的方案。
目前,量产或者即将量产的自动驾驶车辆基本都采用pipeline(类似管线传输)的模式。如图1所示,在自动驾驶车辆的自动驾驶控制***中,包括物体感知模块、物体跟踪模块或者传感器融合模块、定位和预测模块、规划和决策模块、控制模块等。其中,神经网络用在物体感知、物体跟踪或传感器融合上,使用神经网络处理器来进行处理,而定位和预测模块、规划和决策模块、控制模块等往往利用CPU或者GPU来进行处理。
为了提高自动驾驶的准确性,在不久的将来,在定位和预测模块、规划和决策模块也可能会开始大量采用各种类型的神经网络。如图2所示,为本申请实施例提供的一种自动驾驶控制***的示意图,在该自动驾驶控制***中,包括了图像识别和分类的神经网络、多目标连续跟踪网络、3D感知识别网络(感知骨干)和采用类似SSD的感知神经网络(感知头部)。可以看到,图2中使用了四类神经网络(图中灰色所示方框),其中,类似SSD的感知神经网络还需要使用3D感知识别网络的中间层数据。
为了支撑如图2所示的更大规模的神经网络,一个可行的方法是在单块神经网络处理器上增加权重网络存储空间、增加更多的计算单元,而多权重网络存储空间和更多计算单元增加了芯片的成本。由此,想到另一种可能会使用的方案,即将一个复杂的神经网络分布到多个神经网络处理器上。
然而当前不同芯片上的多个神经网络处理器之间传递数据需要利用芯片所属***所对应的CPU,并通过软件模块来实现。例如,在发送的时候,发送者NPU内嵌的CPU要被触发调度,由发送者NPU内嵌的CPU和中间人CPU(***的主控CPU)之间要发生交互,CPU要运行自己的软件栈、再把被传送的数据或者指针发送给接收者NPU内嵌的CPU,接收者NPU内嵌的CPU需要获取数据的地址,进一步可能需要把数据拷贝到自己的地址空间,再触发自己的NPU逻辑继续执行。这样使用CPU来实现多个任务/进程/芯片间交互的方式,导致效率非常低下;而且CPU作为中间人在NPU和GPU和CPU的多个软件模块中传递数据导致端到端反应时间超长。
而且,如图2所示,单个NPU无法容纳一个非常复杂的神经网络,会把该复杂的神经网络分为几个小的神经网络来处理,这样的话,会导致很多中间计算结果和信息被丢失掉了,而修改现有神经网络或者建立新的网络会使得开发代价变高。
以上这些原因均导致把一个复杂的神经网络分布到多个神经网络处理器上,真正实现起来非常困难。
本申请实施例提供的数据处理方法、装置、***及计算机可读存储介质和芯片可在一定程度上解决上述技术问题,真正实现将一个复杂的神经网络分布到多个神经网络处理器上。
需要注意的是,本申请实施例中的芯片中可集成一个或者多个神经网络处理器,由于当前环境下,一般一个芯片中集成一个神经网络处理器,本申请实施例以一个独立封装的芯片集成一个神经网络处理器来进行说明。本申请实施例中的方案适用于多个神经网络处理器之间传递数据,而无论多个神经网络处理器是处于同一个芯片中,还是处于多个不同的芯片中。
以下将分别对本申请实施例提供的一种数据处理方法、装置、计算机可读存储介质及计算机设备进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。
本申请实施例提供一种数据处理***,该数据处理***包括多个神经网络处理器,多个神经网络处理器集成在至少一个芯片中。神经网络的多个子网络模块被部署于各神经网络处理器中,每个神经网络处理器上安装有集成远程直接内存访问(Remote DirectMemory Access,RDMA)引擎的硬件,神经网络处理器包括多个计算单元和存储器。存储器中包括用于保存中间结果和子网络模块的子网络模型的静态随机存取存储器(StaticRandom Access Memory,SRAM)和用于保存子网络模块的子网络输出数据/子网络计算结果数据的外接双倍速率随机存储器(Double Data Rate Random Access Memory, DDR-RAM)。
其中,RDMA引擎的数据发送和接收功能可以承载在以太网或者PCIe(PeripheralComponent Interconnect Express,高速串行计算机扩展总线标准)网络上,或者其他支持RDMA引擎的网络上。可以在以太网上部署RDMA引擎,采用支持RDMA引擎的网卡和相关的协议栈/硬件数字逻辑、以及以太网交换机来构建通信子***;也可以在PCIe上部署RDMA引擎,采用PCIe交换机来连接多个芯片上集成的多个神经网络处理器来构建通信子***。
其中,本申请实施例中的子网络模块可以对应一个/多个独立的神经网络,如此,子网络模块的最小单位为神经网络,多个子网络模块形成一个大型的复杂的神经网络;子网络模块还可以对应神经网络中的权重网络,其中,权重网络包括计算数据的权重,用于将一个神经元的输出数值乘以权重,再传递给一下个神经元,作为下一个神经元的输入,对应地,子网络模块的最小单位为权重网络,多个权重网络构成一个大型神经网络;子网络模块还可以以层为最小单位,如此,子网络模块对应神经网络的一层/多层,多个子网络模块形成一个神经网络。
图3是本申请实施例提供的数据处理***的应用场景示意图,数据处理***可应用于自动驾驶控制***中。在该自动驾驶的应用场景中,数据处理***包括四个神经网络处理器,该四个神经网络处理器级联来实现一个大型的复杂的神经网络。将神经网络部署在四个不同的神经网络处理器中,这四个不同的神经网络处理器分别实现感知/跟踪/融合、定位和预测、规划、决策等功能,将这四种不同的功能分别通过神经网络的子网络模块来实现。
其中,感知/跟踪/融合模块可使用一个神经网络来实现;定位和预测模块,可使用区域卷积神经网络(Region Convolutional Neural Network,RCNN)来实现;规划模块可使用长短时记忆神经网络(Long Short Term Mermory network,LSTM)或卷积神经网络(Convolutional Neural Network,卷积神经网络)来实现;决策模块可使用空时神经网络来实现等。需要注意的是,此处的每个子网络模块所使用的神经网络仅仅只是示例说明,方便理解。
这四个神经网络处理器都安装有集成RDMA引擎的硬件,之间通过部署了RDMA引擎的交换机来高效率在四个神经网络处理器之间传递数据。其中,下文中的数据处理方法应用于每个神经网络处理器中。
其中,若四个神经网络处理器分别集成在四个不同的芯片上,则理解为在四个不同的芯片上安装RDMA引擎的硬件,通过网络把四个RDMA引擎之间两两连接起来,如此,这四个芯片之间的数据传递就可以直接通过RDMA引擎出来,无需芯片上的CPU来帮忙,大大提高了四个芯片之间的数据传递效率。
请继续参看图3,将图像、雷达数据、点云等作为神经网络的输入数据,输入至感知/跟踪/融合模块中,感知/跟踪/融合模块通过交换机分别与定位和预测模块、规划模块、决策模块进行连接。自动驾驶控制***还包括实时性调控模块、控制模块、精确定位模块等,这些模块有自动驾驶控制***的CPU来进行调度和处理。其中,实时性调控模块用于对神经网络的感知/跟踪/融合模块进行实时性管控,神经网络的最终处理结果和高清地图会发送至精确定位模块以用于得到精确定位相关的定位信息,并将定位信息发送至控制模块,控制模块控制车控微控制单元(Microcontroller Unit,MCU)来控制动力***和底盘***,以实现车辆的自动驾驶。
在一实施例中,也可以利用神经网络的最终处理结果生成行车轨迹,或者利用神经网络的最终处理结果得到行车决策,以并形成轨迹或者行车决策发送至车控微控制单元,再利用车控微控制单元来控制动力***和底盘***,以实现车辆的自动驾驶。
在一些情况下,可将多个神经网络处理器级联起来,形成一个神经网络处理器集群,将该神经网络处理器集群作为数据处理***。把神经网络中的大的权重网络分布在该多个神经网络处理器中。可采用流式处理机制(以数据流的流向为准),当第一个神经网络处理器上的权重网络处理结束,输出的子网络输出数据会自动传送至下一级的神经网络处理器,采用下一级的神经网络处理器的权重网络来进行处理。如此,可线性扩展整个神经网络的算力,而且对于自动驾驶这类需要承担连续处理任务的应用来说,可提高处理效率。
如图4所示,为本申请实施例提供的数据处理***的工作流程示意图。该数据处理***中包括三个神经网络处理器,神经网络中对应包括三个权重网络,分别是权重网络1、权重网络2和权重网络3。每个权重网络之间通过子网络输出数据连接起来。需要注意的是,图4仅仅是示例说明而已。
其中,第一级的神经网络处理器如NPU1根据输入数据和权重网络1,利用计算单元的硬件逻辑来进行计算,将计算得到的子网络输出数据利用RDMA引擎发送至第二级的神经网络处理器如NPU2。其中,输入数据可以是整个神经网络的输入数据如图片,还可以是神经网络中的某些层的输入数据,如包括输入图片和中间层得到的特征图等。
第二级的神经网络处理器NPU2根据上一级(第一级)得到的子网络输出数据和权重网络2,利用计算单元的硬件逻辑来进行计算,将计算得到的子网络输出数据利用RDMA引擎发送至第三级的神经网络处理器如NPU3。第三级的神经网络处理器NPU3根据上一级得到的子网络输出数据和权重网络3,利用计算单元的硬件逻辑来进行计算,以得到神经网络的各权重网络计算的最终处理结果。
在一些实施例中,还可以以神经网络中的层为单位,把整个神经网络都分摊在数据处理***中的多个神经网络处理器上。例如,一个神经网络包括500层(网络层),其中,将第1-100层作为一个子网络模块,部署在第一个神经网络处理器上,第101-200层作为一个子网络模块,部署在第二个神经网络处理器上,第201-350层作为一个子网络模块,部署在第三个神经网络处理器上,第351至500层作为一个子网络模块,部署在第四个神经网络处理器上,该神经网络的多层之间通过子网络模块的子网络输出数据连起来。
如图5所示,为本申请实施例提供的数据处理***的另一工作流程示意图。该实施例中,以一个简单的卷积神经网络为例,该卷积神经网络包括三个卷积层和一个全连接层。其中,该卷积神经网络的每层对应的权重网络保存在存储器中。把每层作为子网络模块,将神经网络的四层分布到四个神经网络处理器上,根据数据流的流向来进行处理。其中,大箭头的方向表示数据流的流向。
从图5中可以看到,第一级NPU中的计算单元调用存储器中的权重网络(对应卷积层CONV Layer)进行卷积计算,得到低尺度特征图(Low-Level Features),将低尺度特征图作为子网络输出数据保存在第一级NPU的存储器中,并发送至第二级NPU。第二级NPU中的计算单元根据低尺度特征图调用存储器中的权重网络进行卷积计算,得到中尺度特征图(Mid-Level Features),将中尺度特征图作为子网络输出数据保存在第二级NPU的存储器中,并发送至第三级NPU。第三级NPU中的计算单元调用存储器中的权重网络进行卷积计算,得到大尺度特征图(High-Level Features),将大尺度特征图保存保存在对应的存储器中,同时发送至第四级NPU。最后,第四级NPU根据大尺度特征图调用全连接网络(FC Layer)进行处理,如全连接处理(Fully Connected)和非线性化处理(Nonlinearity),以得到卷积神经网络的分类结果,即最终处理结果(Class Scores)。对于每个卷积层,分别进行卷积计算(convolution)、归一化处理(Normalization)、非线性化处理(Nonlinearity)和池化(Pooling)等处理。
如图6所示,每级NPU的子网络输出数据都需要高效的输出给下一级NPU,采用RDMA机制在连个相邻的NPU之间建立映射关系,以把子网络输出数据的存储块映射到下一级NPU的输入层。其中,每级NPU中的子网络输出数据都是本级NPU的子网络模块处理后得到的数据。下文中介绍本申请实施例中的数据处理方法时将会详细描述如何高效的将子网络输出数据输出至下一级NPU。
以上提供的数据处理***中,可以使用级联NPU的方法来扩展算力,可以在不改变芯片成本的基础上,实现将一个复杂的神经网络部署到多个神经网络处理器上。
下文中将描述本申请实施例中的数据处理方法,该数据处理方法应用于上述数据处理***中的神经网络处理器中,神经网络处理器上安装有集成远程直接内存访问引擎的硬件,神经网络处理器上部署有神经网络的子网络模块,所述神经网络处理器包括多个计算单元和存储器。如图7所示,是本申请实施例提供的数据处理方法的流程示意图,该数据处理方法包括如下步骤。
101,通过神经网络处理器的计算单元获取用于保存子网络输出数据的内存地址,该子网络输出数据是调用存储器中的子网络模块进行处理而输出的数据。
其中,子网络输出数据是该神经网络处理器调用存储器中的子网络模块进行处理而输出的数据。在定义神经网络时,将子网络输出数据保存在变量参数中。在神经网络编译器对神经网络编译并切片后,该变量会映射到具体的内存地址,如此用于保存子网络输出数据的内存地址就已确定,即该内存地址在神经网络编译器编译所述神经网络,并对编译后的神经网络进行切换后确定的。神经网络处理器的计算单元获取该神经网络中用于保存子网络输出数据的内存地址。
需要注意的是,子网络输出数据可以是子网络模块的任意一网络层处理后得到的可以被下一级NPU使用的数据。在本申请实施例中以子网络输出数据为子网络模块的最后一网络层处理后得到的数据为例进行说明。
102,通过计算单元将内存地址封装为预设格式的硬件层的报文,并将报文发送至远程直接内存访问引擎中的待发送队列,该预设格式为直接内存访问引擎支持的格式。
预设格式为RDMA引擎支持的格式,例如,QWE(Work Queue Ellement)格式,还可以为其他的RDMA引擎支持的格式,只要通信双方的RDMA引擎都支持该预设格式即可。本申请实施例中,以QWE格式为例进行说明。
通过计算单元将内存地址封装为QWE格式的报文,该报文为硬件层的报文,可直接被硬件层读取解析执行。报文中包括内存地址以及内存地址的地址长度等信息。可以理解为将一段内存地址构成的消息送给本地的RDMA引擎。
在这里有必要先简单介绍下现有技术中RDMA引擎实现的原理,以更加了解和明白该步骤所对应的有益效果。
其中,RDMA引擎提供了基于消息队列的点对点通信,每个应用都可以直接获取自己的消息,无需操作***和协议栈的介入。消息服务建立在通信双方本端(本级的神经网络处理器)和远端(下一级神经网络处理器)应用之间创建的channel-IO连接之上。当应用需要通信时,就会创建一条Channel连接,每条Channel的首尾端点是两对Queue Pairs(队列对,QP),每对QP由Send Queue(发送队列,SQ)和Receive Queue(接收队列,RQ)构成,这些队列中管理着各种类型的消息。QP会被映射到应用的虚拟地址空间,使得应用直接通过它访问RNIC(直接内存存储)。
现有技术中,RDMA引擎提供了一套software transport interface(软件传输接口),以方便用户创建传输请求(Work Request,WR),WR中描述了应用希望传输到Channel对端的消息内容。其中,创建传输请求WR时,需要用到RDMA引擎中的函数库来创建,而RDMA引擎的函数库运行于芯片的CPU之上,即在创建传输请求WR时,需要调用芯片的CPU来进行处理(而调用芯片的CPU必然会大大降低效率),并将传输请求WR通知/发送给QP中的某个队列-Work Queue(WQ)。在WQ中,用户的WR被转化为Work Queue Ellement(WQE)的格式,等待RNIC的异步调度解析,并从WQE指向的内存(buffer)中拿到真正的消息发送到Channel对端。
而本申请实施例中,直接将内存地址生成硬件层的报文,并直接发送至RDMA引擎的待发送队列。如此,本申请实施例中,无需调用软件传输接口,无需调用RDMA函数库,无需经过芯片上的CPU来生成传输请求(在应用层生成),无需经过CPU来进行调度(CPU进行调度时还可能需要等待或者发生其他异常的几率较大),而直接将内存地址封装为硬件层的报文,直接通过硬件发送至RDMA引擎中的待发送队列。其中,本申请实施例中的待发送队列可以包括QWE格式的发送队列。首先,本申请实施例直接通过生成硬件层的报文,通过硬件发送的方式出现异常的几率较小,几乎不会出现异常;其次,生成硬件层的报文通过硬件发送,无需经过芯片上的CPU来生成传输请求,无需经过芯片上的CPU的调度,大大提高了处理的效率;最后,生成的报文采用的是预设格式的,是RDMA引擎支持的格式,如此,省去了现有技术中的将传输请求转换为RDMA引擎支持格式的时间,如转换为QWE格式,进一步提高了效率。
需要注意的是,本步骤中的发送并不是指发送至另一个神经网络处理器,而是指发送至本地的RDMA引擎的待发送队列。或者也可以将本步骤中的发送理解为传输。
103,通过远程直接内存访问引擎获取待发送队列中的报文中的内存地址,从内存地址中获取子网络输出数据,并通过子网络模块与部署有神经网络的另一子网络模块之间创建的传输通道,将子网络输出数据发送至另一子网络模块所在的目标神经网络处理器上。
当RDMA引擎执行到待发送队列中的报文时,获取待发送队列中的报文中的内存地址,从对应内存地址中获取子网络输出数据,并通过子网络模块与部署有神经网络的另一子网络模块之间创建的传输通道,如channel-IO传输通道,将子网络输出数据发送至另一子网络模块所在的目标神经网络处理器上。其中,将子网络输出数据发送至目标神经网络处理器中对应的目标存储器上。该目标存储器上会分配对应的内存地址以用来保存该子网络输出数据。
需要注意的是,在从内存地址中获取子网络输出数据的步骤之前,还需要将计算单元调用该神经网络处理器的子网络模块而得到的子网络输出数据(如partial sum队列)回写至本地对应的内存地址中。
其中,另一子网络模块可以是可以是神经网络的其他任一子网络模块,如可以是下一级神经网络处理器中部署的下一个子网络模块,如图5所示。该另一子网络模块所部署的神经网络处理器为目标神经网络处理器。
可以理解为,该步骤中本地的RDMA引擎和下一级NPU的RDMA引擎交互,把内存地址所对应的由本地得到的子网络输出数据发送至下一级NPU的RDMA引擎,下一级NPU的RDMA引擎把子网络输出数据写到对应的被指定的内存地址中。
本申请实施例将部署有神经网络的子网络模块的神经网络处理器处理得到的子网络输出数据发送至部署有神经网络的另一子网络模块的目标神经网络处理器上,子网络输出数据并没有被丢掉,使得可很好的利用子网络模块处理得到的子网络输出数据进行下一步的处理,提高神经网络处理数据的效率,此外,子网络模块处理得到的子网络输出数据的传输不必经过芯片上的CPU,不必生成传输请求(生成传输请求需要调用芯片上的CPU来进行处理),而直接封装为硬件层的报文,从计算单元发送至直接内存访问引擎中的待发送队列,直接通过硬件传输,如此提高了神经网络处理器之间传输数据的效率。
在子网络模块处理得到的子网络输出数据没有丢失,且能高效的在神经网络处理器之间传输子网络输出数据的基础上,上述数据处理***中,不必改变神经网络处理器的功能,也不必改变神经网络处理器所在的芯片的功能,即可实现将一个复杂的神经网络部署到多个神经网络处理器上。
需要注意的是,因为需要将子网络输出数据发送至目标神经网络处理器上,因此,上述数据处理方法是应用于数据处理***中的非最后一个神经网络处理器中。其中,当上述数据处理方法应用于数据处理***中的第一个神经网络处理器时,子网络输出数据是调用存储器中的子网络模块,对输入数据如原始图片进行处理而得到的数据。
在一实施例中,当上述数据处理方法应用于数据处理***中的中间神经网络处理器时,所述数据处理方法还包括:当神经网络处理器接收到神经网络的其他子网络模块发送的子网络输出数据时,将接收的子网络输出数据保存在本地存储器中,并将计算单元广播子网络输出数据,计算单元调用存储器中的子网络模块对接收的子网络输出数据进行处理。如此,对应的子网络输出数据是调用存储器中的子网络模块,对上一级输出的子网络输出数据进行处理而得到的数据。需要提醒的是,该实施例中的方案同样应用于下文中所述的数据处理方法中。
在一实施例中,若当前神经网络处理器为最后一级的神经网络处理器,对应的,当前神经网络处理器上部署的子网络模块为神经网络的最后一个子网络模块时,所述数据处理方法,还包括:通过计算单元调用存储器中的子网络模块对接收到的子网络输出数据进行处理后,得到神经网络的最终处理结果,得到最终处理结果之后,结束神经网络部分的处理;再利用最终处理结果生成行车轨迹、或者利用最终处理结果得到行车决策,并将形成轨迹或者行车决策发送至车控微控制单元。需要提醒的是,该实施例中的方案同样应用于下文中所述的数据处理方法中。
图8是本申请实施例提供的数据处理方法的另一流程示意图,该数据处理方法包括如下步骤。
201,当神经网络处理器的计算单元得到子网络输出数据时,获取用于保存子网络输出数据的内存地址,该子网络输出数据是调用存储器中的子网络模块进行处理而输出的数据。
该步骤中限定了触发本申请实施例的执行时间,即在计算单元调用存储器中的子网络模块进行处理得到子网络输出数据时,触发获取内存地址的步骤。
在一实施例中,上述步骤102中可通过步骤202来实现,步骤202如下。
202,通过计算单元利用预设算子将内存地址封装为预设格式的硬件层的报文,并利用预设算子将报文发送至远程直接内存访问引擎中的待发送队列,其中,该预设算子是预先封装的原子计算指令集合,该原子计算指令集合中包括远程直接内存访问原语,该预设格式为直接内存访问引擎支持的格式。
由于预设算子operator中包括了预先封装的原子计算指令集合,原子计算指令集合中包括远程直接内存访问原语,因此,预设算子可以被计算单元直接进行处理。可以理解地,预设算子operator会变换为计算单元执行的指令序列,其中,该指令序列中包括远程直接内存访问原语构成的指令序列。该步骤中可以理解为通过预设算子实现把一段内存地址构成的消息(包括内存地址和内存地址的地址长度)送给本地的RDMA引擎,从而避免了现有技术中创建传输请求等的步骤,避免了使用芯片的CPU来进行处理。具体的有益效果可参看上文中的对应描述,在此不再赘述。
如图9所示,为本申请实施例提供的在单个神经网络处理器上执行子网络模块的示意图。其中,I000、I100、I200表示本地上的三层神经网络的不同输入;O000、O100、O200等表示三层神经网络的不同神经元的输出,该不同神经元的输出一起构成partial sum队列,即子网络输出数据;F000、F100、F010等表示神经网络计算的代码逻辑,包括加法计算、减法计算、矩阵计算等,还可以实现逻辑解析等功能。最后,将保存子网络输出数据的内存地址经过RDMA原语处理后的数据发送至RDMA引擎的待发送队列。
203,通过远程直接内存访问引擎获取待发送队列中的报文中的内存地址,从内存地址中获取子网络输出数据,并通过子网络模块与部署有神经网络的另一子网络模块之间创建的传输通道,将子网络输出数据发送至另一子网络模块所在的目标神经网络处理器上。
该实施例中未详细描述的步骤请参看上文中对应步骤的描述,在此不再赘述。
在一实施例中,如图8所示,在步骤201之前,还包括步骤201a。
201a,在定义神经网络的网络结构时,加入预设算子;或者在利用神经网络编译器编译神经网络,并将编译后的神经网络切片后得到的每个子网络模块中加入预设算子。
其中,神经网络的网络结构包括网络层的数量等。在一实施例中,预先确定在哪个网络层会将对应的处理结果发送至下一级NPU,因此,在定义神经网络的网络结构时,在对应的网络层处理得到对应的处理结果时,加入预设算子。
在一实施例中,在利用神经网络编译器编译神经网络得到图,并将图进行优化如进行切片,在切片后得到的每个子网络模块中加入预设算子,例如,在每个子网络模块的最后一个网络层处理完毕后加入预设算子。
如此,通过加入预设算子的方式,利用预设算子,调用RDMA原语,实现将保存子网络输出数据的内存地址封装为预设格式的硬件层的报文,并利用预设算子将报文发送至RDMA引擎的待发送队列。
图10是本申请实施例提供的数据处理方法的另一流程示意图,该数据处理方法包括如下步骤。
301,当神经网络处理器的计算单元得到子网络输出数据时,获取用于保存子网络输出数据的内存地址,该子网络输出数据是调用存储器中的子网络模块进行处理而输出的数据。
302,计算单元触发CPU中断,并将内存地址的发送指令发送至用户态协议栈。
触发的CPU中断为硬件方式的中断,通过CPU中断,将内存地址的发送指令发送至用户态协议栈。由于用户态协议栈运行于CPU上,因此,先触发CPU中断。需要注意的是,该步骤中的CPU指的是神经网络处理器内嵌的CPU,即神经网络处理器自带的CPU。
303,基于发送指令,利用用户态协议栈将内存地址直接封装为硬件层的报文,并将报文发送至远程直接内存访问引擎中的待发送队列,该预设格式为直接内存访问引擎支持的格式。
其中,利用用户态协议栈跳过TCP层、IP层,使得用户态协议栈直接运行于硬件层,在硬件层中将内存地址封装为硬件层的报文,并将该报文发送至RDMA引擎中的待发送队列。在该实施例中,是基于用户态协议栈的改进,使得用户态协议栈可直接从应用层调至硬件层来运行。
在现有技术中,创建传输请求是在应用层完成,在应用层完成之后,需要经过TCP层、IP层等,需要创建session,还要有句柄等信息,同时传输请求需要进入内核中进行调度处理等,这些直接降低了现有技术中的创建传输请求并发送至RDMA引擎的效率。本申请实施例中利用用户态协议栈直接运行于硬件层,利用硬件层来进行将内存地址转换为硬件层的报文的处理,无需创建session、保存句柄,无需进行内核中调度等(在内核中调度需要从应用程序的用户态切换至内核态,切换时需要占用CPU资源,且同时需要占用较多的时间),提高了处理的效率。
304,通过远程直接内存访问引擎获取待发送队列中的报文中的内存地址,从内存地址中获取子网络输出数据,并通过子网络模块与部署有神经网络的另一子网络模块之间创建的传输通道,将子网络输出数据发送至另一子网络模块所在的目标神经网络处理器上。
该实施例中为详细描述的步骤请参看上文中对应步骤的描述,在此不再赘述。
在一实施例中,用户态协议栈也可以调用预设算子,来实现将内存地址直接封装为预设格式的硬件层的报文,并将报文发送至远程直接内存访问引擎中的待发送队列。对应地,预先在用户态协议栈的硬件层中加入预设算子。对应步骤可参看上文中的描述,在此不再赘述。
该实施例通过触发用户态协议栈,利用用户态协议栈将内存地址直接封装为预设格式的硬件层的报文,并将报文发送至远程直接内存访问引擎中的待发送队列,该种方式虽然触发用户态协议栈会调用一次CPU(该CPU是神经网络内嵌的CPU,并不是芯片上的CPU),但触发用户态协议栈后则完全运行于硬件层上,通过硬件发送的方式出现异常的几率较小,几乎不会出现异常;其次,生成硬件层的报文通过硬件发送,无需经过芯片上的CPU来生成传输请求,无需经过芯片上的CPU的调度,大大提高了处理的效率;最后,生成的报文采用的是预设格式的,是RDMA引擎支持的格式,如此,省去了现有技术中的将传输请求转换为RDMA引擎支持格式的时间,如转换为QWE格式,进一步提高了效率。
图11是本申请实施例提供的数据处理方法的又一流程示意图,该数据处理方法使得NPU上运行的计算单元做到对存储的内存地址敏感,该数据处理方法包括如下步骤。
401,通过神经网络处理器的计算单元获取用于保存子网络输出数据的内存地址并将内存地址进行保存,该子网络输出数据是调用存储器中的子网络模块进行处理而输出的数据。
需要注意的是,本地神经网络处理器调用本地存储器中的子网络模块进行处理而输出的子网络输出数据需先保存在本地存储器的DDR-RAM中。该步骤中所获取的子网络输出数据的内存地址,即指的是本地存储器的DDR-RAM中保存的本地得到的子网络输出数据的内存地址。该内存地址也是在神经网络编译器编译神经网络并对网络进行优化如切片时就可得到。该内存地址保存在本地存储器中。或者也可以是当神经网络编译器编译并优化神经网络后,将保存本地子网络输出数据的内存地址告知计算单元,如此,计算单元获取用于保存子网络输出数据的内存地址并进行保存。
402,当检测到需要向内存地址中写入子网络输出数据时,触发计算单元将内存地址封装为预设格式的硬件层的报文,并将报文发送至远程直接内存访问引擎中的待发送队列,该预设格式为直接内存访问引擎支持的格式。
该步骤中,确定了地址感知的触发时机,也即触发时机为当检测到需要向内存地址中写入数据时,触发计算单元执行对应的操作:将内存地址封装为预设格式的硬件层的报文,并将报文发送至远程直接内存访问引擎中的待发送队列。由于计算单元已经知道保存本地子网络输出数据的内存地址,因此,将检测到需要向内存地址中写入数据,可确定写入的数据为本地子网络输出数据。
403,通过远程直接内存访问引擎获取待发送队列中的报文中的内存地址,从内存地址中获取子网络输出数据,并通过子网络模块与部署有神经网络的另一子网络模块之间创建的传输通道,将子网络输出数据发送至另一子网络模块所在的目标神经网络处理器上。
该实施例中未详细描述的部分请参看上文中对应的描述,在此不再赘述。该实施例中计算单元也可以调用预设算子来实现将内存地址封装为预设格式的硬件层的报文,并利用预设算子将报文发送至远程直接内存访问引擎中的待发送队列。对应的内容请参看上文中对应步骤的描述。
该实施例实现了内存地址感知,本申请实施例中可以做到对内存地址感知需要对硬件进行了改动,或者可理解为,实现地址感知的原因在于需提前将保存本地子网络输出数据的内存地址告知每个计算单元,每个计算单元需要保存该内存地址。如此,当计算单元检测到需要向内存地址中写入数据时,即可触发计算单元执行封装报文并发送报文的操作。由于计算单元需要保存内存地址,因此,需要对计算单元(计算单元是硬件)进行相应的改进,以使地计算单元可以保存该内存地址。
上述步骤401至403中描述了内存地址感知方案中生成子网络输出数据所对应的神经网络处理器该如何处理。请参看图12,图12中具体描述了内存地址感知方案中,接收到其他子网络模块发送的子网络输出数据后该如何处理。
请参看图12,数据处理方法还包括如下步骤。
501,当神经网络处理器接收到神经网络的其他子网络模块发送的子网络输出数据后,获取预先分配的保存所接收到的子网络输出数据的目标内存地址。
由于神经网络处理器也会接收其他子网络模块发送的子网络输出数据,因此神经网络处理器也会从存储器中分配内存来保存该子网络输出数据,保存所接收到的子网络输出数据的内存地址为目标内存地址,该目标内存地址是预先分配的可用来保存其他子网络输出数据的内存地址。
502,获取神经网络处理器自身的存储地址范围、以及其他神经网络处理器中部署的神经网络的其他子网络模块所对应的网络层数据。
每个神经网络处理器自身的存储地址范围是固定的,获取该存储地址范围,以及其他子网络模块所对应的网络层数据。
其中,在神经网络编译器对神经网络进行编译并将编译后的神经网络切片时,神经网络编译器就可识别切换后的各子网络模块所对应的网络层数据,也可识别各子网络模块部署在哪个NPU上。例如,神经网络的网络层为300层,第一个子网络模块的网络层为第1-90层,部署在第一个NPU上,第二个NPU上部署的第二个子网络模块的网络层为第91-200层,第三个NPU上部署的第三个子网络模块所对应的网络层为第201-250层,第四个NPU上部署的第四个子网络模块所对应的网络层为第251-300层。
503,根据目标内存地址、存储地址范围和网络层数据确定保存子网络输出数据的目标神经网络处理器。
根据目标内存地址和存储地址范围可确定是否要写入到本地存储器中,如目标内存地址在存储地址范围内,则确定要写入到本地存储器中,若是则将本神经网络处理器作为目标神经网络处理器,若否,则根据写入的目标内存地址可确定需要子网络输出数据的目标网络层,根据目标网络层和神经网络的其他子网络模块所对应的网络层数据可确定目标神经网络处理器。
504,当所确定的目标神经网络处理器不为本神经网络处理器时,计算单元将子网络输出数据和目标神经网络处理器的标识信息封装为预设格式的硬件层的报文,并将报文发送至远程直接内存访问引擎中的待发送队列,该预设格式为直接内存访问引擎支持的格式。
需要说明的是,在该种情况下,除了将子网络输出数据封装到报文中之外,还需要将目标神经网络处理器的标识信息也封装到报文中,以使地直接内存访问引擎知道需要发送至哪一个目标神经网络处理器。
505,通过远程直接内存访问引擎获取待发送队列中的报文中的子网络输出数据,并通过子网络模块与部署有神经网络的另一子网络模块之间创建的传输通道,将子网络输出数据发送至另一子网络模块所在的目标神经网络处理器上。
506,当所确定的目标神经网络处理器为本神经网络处理器时,将子网络输出数据保存在目标存储地址中。
该实施例适用于需要反向反馈的神经网络如下一级的NPU需要向上一级NPU回传数据,或者需要跨层操作的神经网络如ResNet神经网络。当NPU上的计算单元发现传递的子网络输出数据的存储地址不在本NPU的内存地址范围内,触发对应的报文传输操作,将子网络输出数据发送至目标神经网络处理器上。
上述所有的技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
为便于更好的实施本申请实施例的数据处理方法,本申请实施例还提供一种数据处理装置。请参阅13,图13为本申请实施例提供的数据处理装置的结构示意图。该数据处理装置600应用在芯片中的神经网络处理器上,神经网络处理器上安装有集成远程直接内存访问引擎的硬件,神经网络处理器上部署有神经网络的子网络模块,神经网络处理器包括多个计算单元和存储器,该数据处理装置600可以包括第一获取模块601,封装模块602,第二获取模块603以及发送模块604。
第一获取模块601,用于通过所述神经网络处理器的计算单元获取用于保存子网络输出数据的内存地址,所述子网络输出数据是调用所述存储器中的子网络模块进行处理而输出的数据。
封装模块602,用于通过所述计算单元将所述内存地址封装为预设格式的硬件层的报文,并将所述报文发送至所述远程直接内存访问引擎中的待发送队列,所述预设格式为所述直接内存访问引擎支持的格式。
第二获取模块603,用于通过所述远程直接内存访问引擎获取所述待发送队列中的所述报文中的所述内存地址,从所述内存地址中获取所述子网络输出数据。
发送模块604,用于通过所述子网络模块与部署有所述神经网络的另一子网络模块之间创建的传输通道,将所述子网络输出数据发送至所述另一子网络模块所在的目标神经网络处理器上。
在一实施例中,所述封装模块602,具体用于通过计算单元利用预设算子将内存地址封装为预设格式的硬件层的报文,并利用所述预设算子将所述报文发送至所述远程直接内存访问引擎中的待发送队列,其中,所述预设算子是预先封装的原子计算指令集合,所述原子计算指令集合中包括远程直接内存访问原语。对应地,数据处理装置600还包括添加模块605。其中,添加模块605,用于在所述计算单元利用预设算子将内存地址封装为预设格式的硬件层的报文之前,在定义所述神经网络的网络结构时,加入预设算子;或者在利用神经网络编译器编译所述神经网络,并将编译后的所述神经网络切片后得到的每个子网络模块中加入预设算子。
在一实施例中,所述封装模块602,在执行通过计算单元将所述内存地址封装为预设格式的硬件层的报文的步骤时,具体执行:所述计算单元触发CPU中断,并将所述内存地址的发送指令发送至用户态协议栈;基于所述发送指令,利用所述用户态协议栈将所述内存地址直接封装为硬件层的报文。
在一实施例中,第一获取模块601,在获取用于保存子网络输出数据的内存地址之后,通过计算单元将所述内存地址进行保存。对应的,封装模块602,用于当检测到需要向所述内存地址中写入所述子网络输出数据时,将所述内存地址封装为预设格式的硬件层的报文,并将所述报文发送至所述远程直接内存访问引擎中的待发送队列。
在一实施例中,如图14所示,数据处理装置600还包括接收模块606、广播模块607、网络处理模块608。其中,接收模块606,用于接收所述神经网络的其他子网络模块发送的子网络输出数据,并将所述子网络输出数据保存在所述存储器中。广播模块606,用于向所述计算单元广播所述子网络输出数据。网络处理模块607,用于通过所述计算单元调用所述存储器中的子网络模块对所述子网络输出数据进行处理,以得到子网络输出数据/神经网络的最终处理结果,得到最终处理结果之后,结束神经网络部分的处理,再利用最终处理结果生成行车轨迹、或者利用最终处理结果得到行车决策,以将形成轨迹或者行车决策发送至车控微控制单元。
在一实施例中,数据处理装置还包括第三获取模块、确定模块。其中,第三获取模块,用于当所述神经网络处理器接收到所述神经网络的其他子网络模块发送的子网络输出数据后,获取预先分配的保存所接收到的所述子网络输出数据的目标内存地址,以及获取预先分配的所述神经网络处理器自身的存储地址范围、以及其他神经网络处理器中部署的神经网络的其他子网络模块所对应的网络层数据。确定模块,用于根据所述目标内存地址、所述存储地址范围和所述网络层数据确定保存所述子网络输出数据的目标神经网络处理器。接收模块606,还用于当所确定的目标神经网络处理器为所述神经网络处理器时,将所述子网络输出数据保存在所述目标内存地址中。封装模块602,还用于当所确定的目标神经网络处理器不为所述神经网络处理器时,通过所述计算单元将所述子网络输出数据和所述目标神经网络处理器的标识信息封装为预设格式的硬件层的报文,并将所述报文发送至所述远程直接内存访问引擎中的待发送队列。
上述所有的技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
相应的,本申请实施例还提供一种数据处理***,所述数据处理***包括多个神经网络处理器,神经网络的多个子网络模块被部署于各神经网络处理器中,所述神经网络处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器包括多个计算单元和存储器,所述存储器中存储有子网络模块,所述神经网络处理器用于执行上述任一项所述的数据处理方法。
该数据处理***让堆叠式/级联式AIPU集群成为可能,且可高效率地在一个AIPU集群中的多个神经网络处理器之间传递子网络输出数据。使用级联AIPU集群的方法来扩展算力,使用该数据处理***可在不增加芯片成本的基础上,实现将一个复杂的神经网络部署到多个神经网络处理器上,解决了现有技术的难题。数据处理***中的部分具体可参看前文中所述的对应内容。
相应的,本申请实施例还提供一种芯片,该芯片可以为***级芯片。该***级芯片上集成有一个或者多个神经网络处理器,该神经网络处理器可执行上述任一项实施例中所述的数据处理方法。具体达到的有益效果可参看上文中所述的有益效果,在此不再赘述。
本申请还提供一种终端或者服务器。在该终端或者服务器上包括上述所述的芯片,芯片中集成有上述任一项数据处理方法所述的神经网络处理器。该终端和服务器上还可以包括处理器、存储器、触控显示屏、射频电路、音频电路、输入单元、电源、摄像头、传感器、无线保真模块、蓝牙模块中的一个或者多个。其中,处理器分别与触控显示屏、射频电路、音频电路、输入单元、电源、摄像头、传感器、无线保真模块、蓝牙模块电性连接。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种数据处理方法中的步骤。例如,该计算机程序可以执行如下步骤:
所述神经网络处理器的计算单元获取用于保存子网络输出数据的内存地址,所述子网络输出数据是调用所述存储器中的子网络模块进行处理而输出的数据;所述计算单元将所述内存地址封装为预设格式的硬件层的报文,并将所述报文发送至所述远程直接内存访问引擎中的待发送队列,所述预设格式为所述直接内存访问引擎支持的格式;所述远程直接内存访问引擎获取所述待发送队列中的所述报文中的所述内存地址,从所述内存地址中获取所述子网络输出数据,并通过所述子网络模块与部署有所述神经网络的另一子网络模块之间创建的传输通道,将所述子网络输出数据发送至所述另一子网络模块所在的目标神经网络处理器上。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种数据处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种数据处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种数据处理方法、装置、存储介质及计算机设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据处理方法,其特征在于,应用在芯片中的神经网络处理器上,所述神经网络处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器上部署有神经网络的子网络模块,所述神经网络处理器包括多个计算单元和存储器,所述数据处理方法,包括:
所述神经网络处理器的计算单元获取用于保存子网络输出数据的内存地址,所述子网络输出数据是调用所述存储器中的子网络模块进行处理而输出的数据;
所述计算单元将所述内存地址封装为预设格式的硬件层的报文,并通过硬件将所述报文发送至所述远程直接内存访问引擎中的待发送队列,从而无需所述芯片上的CPU来创建传输请求,无需经过所述芯片上的CPU的调度将所述传输请求发送至所述待发送队列并将所述传输请求转换为预设格式,所述预设格式为所述直接内存访问引擎支持的格式;
所述远程直接内存访问引擎获取所述待发送队列中的所述报文中的所述内存地址,从所述内存地址中获取所述子网络输出数据,并通过所述子网络模块与部署有所述神经网络的另一子网络模块之间创建的传输通道,将所述子网络输出数据发送至所述另一子网络模块所在的目标神经网络处理器上。
2.根据权利要求1所述的数据处理方法,其特征在于,所述计算单元将所述内存地址封装为预设格式的硬件层的报文,并将所述报文发送至所述远程直接内存访问引擎中的待发送队列的步骤,包括:
所述计算单元利用预设算子将内存地址封装为预设格式的硬件层的报文,并利用所述预设算子将所述报文发送至所述远程直接内存访问引擎中的待发送队列,其中,所述预设算子是预先封装的原子计算指令集合,所述原子计算指令集合中包括远程直接内存访问原语。
3.根据权利要求2所述的数据处理方法,其特征在于,在所述计算单元利用预设算子将内存地址封装为预设格式的硬件层的报文的步骤之前,还包括:
在定义所述神经网络的网络结构时,加入预设算子;或者
在利用神经网络编译器编译所述神经网络,并将编译后的所述神经网络切片后得到的每个子网络模块中加入预设算子。
4.根据权利要求1所述的数据处理方法,其特征在于,所述计算单元将所述内存地址封装为预设格式的硬件层的报文的步骤,包括:
所述计算单元触发CPU中断,并将所述内存地址的发送指令发送至用户态协议栈,所述CPU为神经网络处理器内嵌的CPU;
基于所述发送指令,利用所述用户态协议栈将所述内存地址直接封装为硬件层的报文。
5.根据权利要求1所述的数据处理方法,其特征在于,在所述获取用于保存子网络输出数据的内存地址的步骤之后,还包括:
所述计算单元将所述内存地址进行保存;
当检测到需要向所述内存地址中写入所述子网络输出数据时,触发将所述内存地址封装为预设格式的硬件层的报文的步骤。
6.根据权利要求5所述的数据处理方法,其特征在于,还包括:
当所述神经网络处理器接收到所述神经网络的其他子网络模块发送的子网络输出数据后,获取预先分配的保存所接收到的所述子网络输出数据的目标内存地址;
获取预先分配的所述神经网络处理器自身的存储地址范围、以及其他神经网络处理器中部署的神经网络的其他子网络模块所对应的网络层数据;
根据所述目标内存地址、所述存储地址范围和所述网络层数据确定保存所述子网络输出数据的目标神经网络处理器;
当所确定的目标神经网络处理器为所述神经网络处理器时,将所述子网络输出数据保存在所述目标内存地址中;
当所确定的目标神经网络处理器不为所述神经网络处理器时,所述计算单元将所述子网络输出数据和所述目标神经网络处理器的标识信息封装为预设格式的硬件层的报文,并触发将所述报文发送至所述远程直接内存访问引擎中的待发送队列的步骤。
7.根据权利要求1所述的数据处理方法,其特征在于,还包括:
当所述神经网络处理器接收到所述神经网络的其他子网络模块发送的子网络输出数据后,将所述子网络输出数据保存在所述存储器中,并向所述计算单元广播所述子网络输出数据;
所述计算单元调用所述存储器中的子网络模块对所述子网络输出数据进行处理。
8.一种数据处理装置,其特征在于,应用在芯片中的神经网络处理器上,所述神经网络处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器上部署有神经网络的子网络模块,所述神经网络处理器包括多个计算单元和存储器,所述数据处理装置,包括:
第一获取模块,用于通过所述神经网络处理器的计算单元获取用于保存子网络输出数据的内存地址,所述子网络输出数据是调用所述存储器中的子网络模块进行处理而输出的数据;
封装模块,用于通过所述计算单元将所述内存地址封装为预设格式的硬件层的报文,并通过硬件将所述报文发送至所述远程直接内存访问引擎中的待发送队列,从而无需所述芯片上的CPU来创建传输请求,无需经过所述芯片上的CPU的调度将所述传输请求发送至所述待发送队列并将所述传输请求转换为预设格式,所述预设格式为所述直接内存访问引擎支持的格式;
第二获取模块,用于通过所述远程直接内存访问引擎获取所述待发送队列中的所述报文中的所述内存地址,从所述内存地址中获取所述子网络输出数据;
发送模块,用于通过所述子网络模块与部署有所述神经网络的另一子网络模块之间创建的传输通道,将所述子网络输出数据发送至所述另一子网络模块所在的目标神经网络处理器上。
9.一种数据处理***,其特征在于,所述数据处理***包括多个神经网络处理器,神经网络的多个子网络模块被部署于各神经网络处理器中,所述神经网络处理器上安装有集成远程直接内存访问引擎的硬件,所述神经网络处理器包括多个计算单元和存储器,所述存储器中存储有子网络模块,所述神经网络处理器用于执行上述权利要求1-7任一项所述的数据处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如权利要求1-7任一项所述的数据处理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111436322.7A CN113849293B (zh) | 2021-11-30 | 2021-11-30 | 数据处理方法、装置、***及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111436322.7A CN113849293B (zh) | 2021-11-30 | 2021-11-30 | 数据处理方法、装置、***及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113849293A CN113849293A (zh) | 2021-12-28 |
CN113849293B true CN113849293B (zh) | 2022-02-22 |
Family
ID=78982272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111436322.7A Active CN113849293B (zh) | 2021-11-30 | 2021-11-30 | 数据处理方法、装置、***及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113849293B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579273B (zh) * | 2022-03-02 | 2024-04-02 | 中国科学技术大学 | 一种数据处理方法及网络管理装置 |
CN116028238A (zh) * | 2022-10-31 | 2023-04-28 | 广东浪潮智慧计算技术有限公司 | 计算引擎通信方法及装置 |
CN115617733B (zh) * | 2022-12-19 | 2023-02-17 | 井芯微电子技术(天津)有限公司 | RapidIO网络报文转换方法、***及设备 |
CN116074179B (zh) * | 2023-03-06 | 2023-07-14 | 鹏城实验室 | 基于cpu-npu协同的高扩展节点***及训练方法 |
CN115982110B (zh) * | 2023-03-21 | 2023-08-29 | 北京探境科技有限公司 | 文件运行方法、装置、计算机设备及可读存储介质 |
CN116303173B (zh) * | 2023-05-19 | 2023-08-08 | 深圳云豹智能有限公司 | 减少rdma引擎片上缓存的方法、装置、***及芯片 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452995B2 (en) * | 2015-06-29 | 2019-10-22 | Microsoft Technology Licensing, Llc | Machine learning classification on hardware accelerators with stacked memory |
US10375167B2 (en) * | 2015-11-20 | 2019-08-06 | Microsoft Technology Licensing, Llc | Low latency RDMA-based distributed storage |
US9985903B2 (en) * | 2015-12-29 | 2018-05-29 | Amazon Technologies, Inc. | Reliable, out-of-order receipt of packets |
JP6610398B2 (ja) * | 2016-04-12 | 2019-11-27 | 富士通株式会社 | 並列処理装置及び通信制御方法 |
CN110033078B (zh) * | 2018-01-12 | 2024-01-12 | 华为技术有限公司 | 一种基于树状拓扑的计算***及方法 |
US11023410B2 (en) * | 2018-09-11 | 2021-06-01 | Advanced Micro Devices, Inc. | Instructions for performing multi-line memory accesses |
CN110308987B (zh) * | 2019-05-17 | 2023-08-01 | 深圳致星科技有限公司 | 一种更新容器云上分布式训练任务连接参数的方法 |
CN112311694B (zh) * | 2019-07-31 | 2022-08-26 | 华为技术有限公司 | 一种优先级调整方法及装置 |
CN112528108B (zh) * | 2019-09-17 | 2023-02-07 | 华为技术有限公司 | 一种模型训练***、模型训练中梯度聚合的方法及装置 |
CN110704186B (zh) * | 2019-09-25 | 2022-05-24 | 国家计算机网络与信息安全管理中心 | 基于混合分布架构的计算资源分配方法、装置和存储介质 |
CN113298222A (zh) * | 2020-02-21 | 2021-08-24 | 深圳致星科技有限公司 | 一种基于神经网络的参数更新方法、分布式训练平台*** |
-
2021
- 2021-11-30 CN CN202111436322.7A patent/CN113849293B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113849293A (zh) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113849293B (zh) | 数据处理方法、装置、***及计算机可读存储介质 | |
EP3855367A1 (en) | Operation accelerator, processing method, and related device | |
US20210320967A1 (en) | Edge Server with Deep Learning Accelerator and Random Access Memory | |
CN113300881B (zh) | 基于5g网络的编排调度方法、装置、设备及存储介质 | |
US20230113271A1 (en) | Methods and apparatus to perform dense prediction using transformer blocks | |
CN111915001A (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
US11355175B2 (en) | Deep learning accelerator and random access memory with a camera interface | |
US20220207327A1 (en) | Method for dividing processing capabilities of artificial intelligence between devices and servers in network environment | |
CN112714164A (zh) | 一种物联网***及其任务调度方法 | |
KR20220095533A (ko) | 네트워크 프로세서와 컨볼루션 처리기를 갖는 디바이스용 신경망 처리기 | |
CN113641413A (zh) | 目标模型加载更新方法及装置、可读介质和电子设备 | |
CN115600676A (zh) | 深度学习模型推理方法、装置、设备及存储介质 | |
CN111783966A (zh) | 一种深度卷积神经网络硬件并行加速器的硬件装置及方法 | |
CN111427702A (zh) | 一种人工智能ai***及数据处理方法 | |
CN111078286B (zh) | 数据通信方法、计算***和存储介质 | |
CN111061507A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN110458285A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113553279B (zh) | 一种rdma通信加速集合通信的方法及*** | |
CN113849449A (zh) | 一种通信***和信息交互方法、设备和介质 | |
CN113639793A (zh) | 一种基于边缘计算的环境监测方法及*** | |
CN111260046B (zh) | 运算方法、装置及相关产品 | |
CN115204399A (zh) | 一种量子计算任务计算方法、装置及量子计算机操作*** | |
US11720417B2 (en) | Distributed inferencing using deep learning accelerators with integrated random access memory | |
US20230327996A1 (en) | In-network message aggregation for efficient small message transport | |
CN117435367B (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 |