CN107341541B - 一种用于执行全连接层神经网络训练的装置和方法 - Google Patents

一种用于执行全连接层神经网络训练的装置和方法 Download PDF

Info

Publication number
CN107341541B
CN107341541B CN201610285062.0A CN201610285062A CN107341541B CN 107341541 B CN107341541 B CN 107341541B CN 201610285062 A CN201610285062 A CN 201610285062A CN 107341541 B CN107341541 B CN 107341541B
Authority
CN
China
Prior art keywords
gradient
layer
weight
vector
operation 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
Application number
CN201610285062.0A
Other languages
English (en)
Other versions
CN107341541A (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201811221576.5A priority Critical patent/CN109376861B/zh
Priority to CN201610285062.0A priority patent/CN107341541B/zh
Priority to EP16899905.0A priority patent/EP3451242A4/en
Priority to KR1020187033950A priority patent/KR102470264B1/ko
Priority to PCT/CN2016/081114 priority patent/WO2017185394A1/zh
Publication of CN107341541A publication Critical patent/CN107341541A/zh
Priority to US16/174,050 priority patent/US20190065958A1/en
Application granted granted Critical
Publication of CN107341541B publication Critical patent/CN107341541B/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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Feedback Control In General (AREA)
  • Image Analysis (AREA)

Abstract

本公开提供了一种用于执行人工神经网络全连接层反向训练的装置,包括指令存储单元、控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块。使用该装置可以实现人工神经网络全连接层的反向训练。对于每一层来说,首先对输入神经元梯度向量进行加权求和计算出本层的输出神经元梯度向量。该输出神经元梯度向量乘以下一层在正向运算时的激活函数的导数值可以得到下一层的输入神经元梯度向量。将输入神经元梯度向量与正向运算时的输入神经元对位相乘得到本层权值的梯度,然后可以根据所得到的本层权值的梯度来更新本层的权值。

Description

一种用于执行全连接层神经网络训练的装置和方法
技术领域
本公开总体上涉及人工神经网络,具体地涉及一种用于执行人工神经网络全连接层的反向训练的装置和方法。
背景技术
人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。
人工神经网络全连接层是一种常见的人工神经网络类型,就像大脑里的神经网络一样,人工神经网络全连接层由一些互相连接的节点组成,如图1所示,每个圆圈表示一个神经元,每个箭头表示两个神经元之间的连接又被称为权值,所有的输入与输出之间互相都有连接。
神经元的计算公式可以简单的描述成:
Figure GDA0002749622170000011
其中,x表示所有和输出神经元相连接的输入神经元,w表示x和输出神经元之间对应的权值,b是一个常数。f(x)是一个非线性函数,通常称作激活函数,常用的函数如:
Figure GDA0002749622170000012
等。
一种支持人工神经网络全连接层反向训练的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的人工神经网络全连接层反向训练的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把人工神经网络全连接层反向运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销。
另一种支持人工神经网络全连接层反向训练的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对人工神经网络全连接层反向训练的专门支持,仍然需要大量的前端译码工作才能执行人工神经网络全连接层的运算,带来了大量的额外开销。另外GPU只有较小的片上存储,人工神经网络全连接层的模型数据(权值)需要反复从片外读取,片外带宽成为了主要性能瓶颈。另外,GPU只有较小的片上存储,人工神经网络全连接层的模型数据(权值)需要反复从片外读取,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。
发明内容
本公开的一个方面提供了一种用于执行人工神经网络全连接层反向训练的装置,包括互连模块、主运算模块、多个从运算模块,其中:
在每层人工神经网络反向训练开始计算的阶段,主运算模块通过互连模块向所有的从运算模块传输本层的输入神经元梯度向量;
每个从运算模块计算输入神经元梯度向量中相应的部分标量元素与权值矩阵的对应列的乘积,得到输出神经元梯度向量部分和;
在从运算模块的计算过程完成后,互连模块逐级将各从运算模块的输出神经元梯度向量部分和拼接得到本层的输出神经元梯度向量;
主运算模块在每一层的计算过程中,利用本层的输出神经元梯度向量完成后续计算。
本公开的另一个方面提供了一种使用上述装置执行单层人工神经网络全连接层反向训练的方法。
本公开的另一方面提供了一种使用上述装置执行多层人工神经网络全连接层反向训练的方法。
本公开可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示出了人工神经网络全连接层的结构图。
图2示出了根据本公开实施例的用于执行人工神经网络全连接层反向训练的装置的整体结构的示例框图。
图3示意性示出了根据本公开实施例的用于执行人工神经网络全连接层反向训练的装置中H树模块(互连模块的一种实施方式)的结构。
图4示出了根据本公开实施例的用于执行人工神经网络全连接层反向训练的装置中主运算模块结构的示例框图。
图5示出了根据本公开实施例的用于执行人工神经网络全连接层反向训练的装置中从运算模块结构的示例框图。
图6示出了根据本公开实施例的人工神经网络全连接层反向训练过程的示例框图。
图7示出了根据本公开实施例的单层人工神经网络全连接层反向训练的流程图。
在所有附图中,相同的装置、部件、单元等使用相同的附图标记来表示。
具体实施方式
根据结合附图对本公开示例性实施例的以下详细描述,本公开的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。
在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。
根据本公开实施例的人工神经网络全连接层的反向训练,对于每一层来说,首先对输入神经元梯度向量进行加权求和计算出本层的输出神经元梯度向量。该输出神经元梯度向量乘以下一层在正向运算时的激活函数的导数值可以得到下一层的输入神经元梯度向量。将输入神经元梯度向量与正向运算时的输入神经元对位相乘得到本层权值的梯度,然后可以根据所得到的本层权值的梯度来更新本层的权值。
图2示出了根据本公开实施例的用于执行人工神经网络全连接层反向训练的装置的整体结构的示例框图。如图2所示,该装置包括指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和多个从运算模块6。指令存储单元1、控制器单元2、数据访问单元3、互连模块4、主运算模块5和从运算模块6均可以通过硬件电路(例如包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。
指令存储单元1通过数据访问单元3读入指令并存储读入的指令。
控制器单元2从指令存储单元1中读取指令,将指令译成控制其他模块行为的控制信号并发送给其他模块如数据访问单元3、主运算模块5和从运算模块6等。
数据访问单元3能够访问外部地址空间,直接向装置内部的各个存储单元读写数据,完成数据的加载和存储。
互连模块4用于连接主运算模块和从运算模块,可以实现成不同的互连拓扑(如树状结构、环状结构、网格状结构、分级互连,总线结构等)。
图3示意性示出了互连模块4的一种实施方式:H树结构。互连模块4构成主运算模块5和多个从运算模块6之间的数据通路,并具有H树型的结构。H树是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在人工神经网络全连接层反向运算过程中,下游两个节点返回的向量会在当前节点相加成一个向量并返回给上游节点。在每层人工神经网络全连接层开始计算的阶段,主运算模块5内的输入梯度通过互连模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,每个从运算模块6输出的输出神经元梯度向量部分和会在互连模块4中逐级两两相加,即对所有输出神经元梯度向量部分和求和,作为最终的输出神经元梯度向量。
图4示出了根据本公开实施例的用于执行人工神经网络全连接层反向训练的装置中主运算模块5的结构的示例框图。如图4所示,主运算模块5包括第一运算单元51、第一数据依赖关系判断单元52和第一神经元存储单元53。
第一神经元存储单元53用于存储主运算模块5在计算过程中用到的输入数据和输出数据。第一运算单元51完成主运算模块的各种运算功能,包括人工神经网络全连接层反向训练中的权值更新梯度求和以及求导数等运算。第一数据依赖关系判断单元52是第一运算单元51读写第一神经元存储单元53的端口,同时能够保证对神经元存储单元53中数据的读写不存在一致性冲突。具体地,数据依赖关系判断单元52判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该控制信号立即发射,否则需要等到该控制信号所依赖的所有控制信号全部执行完成后该控制信号才允许被发射。例如,所有发往第一数据依赖关系单元52的控制信号都会被存入第一数据依赖关系单元52内部的控制信号队列里,在该队列中,读控制信号的读取数据的范围如果与队列位置靠前的写控制信号写数据的范围发生冲突,则该控制信号必须等到所依赖的写控制信号被执行后才能够执行。同时,第一数据依赖关系判断单元52也负责将从第一神经元存储单元53读取的输入神经元梯度向量通过互连模块4发送给从运算模块6,而从运算模块6的输出数据通过互连模块4直接发送给运算单元51。控制器单元2输出的指令发送给第一运算单元51和第一依赖关系判断单元52,来控制其行为。
图5示出了根据本公开实施例的用于执行人工神经网络全连接层反向训练的装置中从运算模块6的结构的示例框图。如图5所示,每个从运算模块6包括第二运算单元61、第二数据依赖关系判断单元62、第二神经元存储单元63、权值存储单元64和权值更新梯度存储单元65。
第二运算单元61接收控制器单元2发出的控制信号并进行算数逻辑运算。
第二数据依赖关系判断单元62负责计算过程中对第二神经元存储单元63的读写操作。第二数据依赖关系判断单元62保证对第二神经元存储单元的读写不存在一致性冲突。具体地,第二数据依赖关系判断单元62判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该控制信号立即发射,否则需要等到该控制信号所依赖的所有控制信号全部执行完成后该控制信号才允许被发射。例如,所有发往第二数据依赖关系单元62的控制信号都会被存入第二数据依赖关系单元62内部的控制信号队列里,在该队列中,读控制信号的读取数据的范围如果与队列位置靠前的写控制信号写数据的范围发生冲突,则该控制信号必须等到所依赖的写控制信号被执行后才能够执行。
第二神经元存储单元63存储输入神经元梯度向量数据中与该从运算模块6相对应的标量数据以及该从运算模块6计算得到的输出神经元梯度向量部分和。
权值存储单元64存储该从运算模块6在计算过程中需要的权值数据。每一个从运算模块存储权值矩阵中与该从运算模块6所存储的标量数据相对应的列。
权值更新梯度存储单元65存储相应从运算模块在更新权值过程中需要的权值更新梯度数据。每一个从运算模块6存储的权值更新梯度数据与其存储的权值数据相对应。
从运算模块6实现人工神经网络全连接层反向训练计算输出神经元梯度向量的过程中可以并行的前半部分以及权值的更新。反向训练计算输出神经元梯度向量的主要过程可以描述为out_gradient=w*in_gradient,其中权值矩阵w和输入神经元梯度向量in_gradient的乘法可以划分为不相关的并行计算子任务,out_gradient与in_gradient是列向量,每个从运算模块计算in_gradient中相应的部分标量元素与权值矩阵w对应的列的乘积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在互连模块4中拼接得到最后的结果。所以计算过程变成了并行的计算部分和后面拼接的过程。每个从运算模块6计算出输出神经元梯度向量的部分和,所有的部分和在互连模块4中完成拼接操作得到最后的输出神经元梯度向量。每个从运算模块6还根据每层的输出神经元和输出梯度计算权值梯度,以更新本从运算模块6存储的权值。正向运算和反向训练是人工神经网络算法的两个主要过程,人工神经网络要训练(更新)网络中的权值,首先需要计算输入向量在当前权值构成的网络中的正向输出,这是正向过程,然后根据输出值与输入向量本身的标注值之间的差值,反向逐层训练(更新)每层的权值。在正向计算过程中会保存每一层的输出向量以及激活函数的导数值,这些数据是反向训练过程所需要的,所以在反向训练开始时,这些数据已经保证存在。正向运算中每层的输出值是反向运算开始时已有的数据,可以通过数据访问单元3存储在主运算模块中并通过互连模块发送给从运算模块。主运算模块5基于输出神经元梯度向量进行后续计算,例如将输出神经元梯度向量乘以正向运算时的激活函数的导数得到下一层的输入梯度值。正向运算时的激活函数的导数是在反向运算开始时已有的数据,可以通过数据访存单元存储在主运算模块中。
根据本公开实施例,还提供了在前述装置上执行人工神经网络全连接层反向训练的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令,其中:
CONFIG指令在每层人工神经网络全连接层计算开始前配置当前层计算需要的各种常数;
COMPUTE指令完成每层人工神经网络全连接层的算术逻辑计算;
IO指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令负责清空当前装置内部所有控制信号队列中的控制信号,保证NOP指令之前的所有控制信号执行完毕。NOP指令本身不包含任何操作;
JUMP指令负责控制器将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据复制至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
图6示出了根据本公开实施例的人工神经网络全连接层反向训练过程的示例框图。计算输出神经元梯度向量的过程为out_gradient=w*in_gradient,其中权值矩阵w和输入神经元梯度向量in_gradient的矩阵向量乘法可以划分为不相关的并行计算子任务,每个从运算模块6计算出输出神经元梯度向量的部分和,所有的部分和在互连模块4中完成拼接得到最后的输出神经元梯度向量。图6中上一层的输出神经元梯度向量inputgradient[input gradient0,input gradient1,inp utgradient 2,input gradient3]乘以对应的激活函数导数[f’(outO),f’(out1),f’(out2),f’(out3)]得到本层的输入神经元梯度向量in_g radient,再与权值矩阵w[w00,w10,w20,w30]相乘得到输出神经元梯度向量output gradient[output gradient0,output gradient1,ou tput gradient 2,outputgradient3]。
具体地,参考图6所示,input gradient(图6中的[input gradient0,…,inputgradient3])是第n+1层的输出神经元梯度向量,该向量首先要与正向运算过程中第n层的导数值(图6中的[f’(out0),…,f’(out3)])相乘,得到第n层的输入神经元梯度向量,该过程在主运算模块5中完成,由互连模块4发往从运算模块6,暂存在从运算模块6的神经元存储单元63中。然后,输入神经元梯度向量与权值矩阵相乘得到第n层的输出神经元梯度向量。在这个过程中,第i个从运算模块计算输入神经元梯度向量中第i个标量和权值矩阵中列向量[w_i0,…,w_iN]的乘积,得到的输出向量在互连模块4中进行拼接操作得到最后的输出神经元梯度向量output gradient(图6中的[output gradient0,…,outputgradient3])。
计算权值更新梯度的过程如下。设x是第n层的输出神经元向量,主模块5将该输出神经元通过互连模块4传送给各个从运算模块。主运算模块5还将第n+1层的输出神经元梯度向量in_gradient通过互连模块4传送到各个从运算模块6。每个从运算模块6将输出神经元梯度向量ingradient中与该从运算模块6相对应的标量数据与输出神经元向量x相乘,得到本从运算模块的第n层的原始权值更新梯度dw_original。在算出所有层的原始权值更新梯度之后,为了限制权值的梯度范围,主运算模块可以对原始权值更新梯度进行处理。首先设定一个正的常数clip_gradient;然后计算所有层的原始权值更新梯度的平方和sumsq_diff,然后对sumsq_diff进行开方得到l2norm_diff。如果l2normdiff大于clip_gradient,则得到一个缩放因子scale_factor=clip_gradient/l2norm_diff。所有的原始权值更新梯度dw_original都分别乘以这个缩放因子scale_factor,得到权值更新梯度dw。
在得到权值更新梯度dw后,使用权值w、权值更新梯度dw和上一次更新权值时使用的权值更新梯度dw’根据指令设置的学习率α,动量m和权重衰减系数η更新权值w。一种典型的更新权值的方式是:w_new=η*w_old+α*(dw+m*dw’)。另一种典型的更新权值的方式是:w_new=w_old+α*dw,其中,w_new是更新后的权值,w_old是更新前的权值。
根据本公开的实施例,每个从运算模块存储w、dw和dw’中与该从运算模块相对应的列向量。
图7是示出根据一个实施例的单层的人工神经网络全连接层反向训练流程图。该流程图描述利用本公开的装置和指令集实现图6所示的一种单层人工神经网络全连接层反向训练的过程。
在步骤S1,在指令存储单元1的首地址处预先存入一条IO指令。
在步骤S2,运算开始,控制器单元2从指令存储单元1的首地址读取该条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取与该单层人工神经网络全连接层反向训练有关的所有指令,并将其存储在指令存储单元1中。
在步骤S3,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取主运算模块5需要的所有数据至主运算模块5的第一神经元存储单元53,所述数据包括之前正向运算时的输入神经元和激活函数导数值以及输入神经元梯度向量。
在步骤S4,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元3从外部地址空间读取从运算模块6需要的所有权值数据和权值更新梯度数据,并分别存储到相应的从运算模块6的权值存储单元64和权值更新梯度存储单元65。
在步骤S5,控制器单元2接着从指令存储单元读入下一条CONFIG指令,第一和第二运算单元根据译出的控制信号配置运算单元内部寄存器的值,包括该层人工神经网络计算需要的各种常数,本层计算的精度设置、更新权值时的学习率等。
在步骤S6,控制器单元2接着从指令存储单元读入下一条COMPUTE指令,根据译出的控制信号,主运算模块5通过互连模块4将输入神经元梯度向量和正向运算时的输入神经元发给各从运算模块6,所述输入神经元梯度向量和正向运算时的输入神经元存至从运算模块6的第二神经元存储单元63。
在步骤S7,根据COMPUTE指令译出的控制信号,从运算模块6的第二运算单元61从权值存储单元64读取权值向量(即该从运算模块存储的权值矩阵的部分列),完成权值向量和输入神经元梯度向量的向量乘标量运算,将输出向量部分和通过互连模块4返回;同时从运算模块6将输入神经元梯度向量与输入神经元相乘,得到权值更新梯度存至权值更新梯度存储单元65。
在步骤S8,在互连模块4中,各从运算模块6返回的输出梯度部分和通过互连模块的拼接操作得到完整的输出神经元梯度向量。
在步骤S9,主运算模块5得到互连模块4的返回值,根据COMPUTE指令译出的控制信号,从第一神经元存储单元53读取正向运算时的激活函数导数值,将导数值乘以返回的输出向量,得到下一层反向训练的输入神经元梯度向量,将其写回至第一神经元存储单元53。
在步骤S10,控制器单元2接着从指令存储单元读入下一条COMPUTE指令,根据译出的控制信号,从运算模块6从权值存储单元64读取权值w,从权值更新梯度存储单元读取本次的权值更新梯度dw和上一次更新权值使用的权值更新梯度dw’,根据指令设置的学习率α,动量m和权重衰减系数η更新权值w。
在步骤S11,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的控制信号,数据访问单元3将第一神经元存储单元53中的输出神经元梯度向量存至外部地址空间指定地址,运算结束。
对于多层的人工神经网络全连接层,其实现过程与单层人工神经网络全连接层类似,当上一层人工神经网络执行完毕后,下一层的运算指令会将主运算模块中计算出的输出神经元梯度向量作为下一层训练的输入神经元梯度向量进行如上的计算过程,指令中的权值地址和权值更新梯度地址也会变更至本层对应的地址。
通过采用用于执行人工神经网络全连接层反向训练的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络全连接层反向训练的支持。
通过采用针对多层人工神经网络全连接层反向训练的专用片上存储,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络全连接层反向训练性能瓶颈的问题。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
本公开中各功能单元/模块/子模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在前述的说明书中,参考其特定示例性实施例描述了本公开的各实施例。显然,可对各实施例做出各种修改,而不背离所附权利要求所述的本公开的更广泛的精神和范围。相应地,说明书和附图应当被认为是说明性的,而不是限制性的。

Claims (25)

1.一种用于执行人工神经网络全连接层反向训练的装置,包括互连模块、主运算模块、多个从运算模块,其中:
在每层人工神经网络全连接层反向训练开始计算的阶段,主运算模块通过互连模块向所有的从运算模块传输本层的输入神经元梯度向量;
每个从运算模块计算输入神经元梯度向量中相应的部分标量元素与权值矩阵的对应列的乘积,得到输出神经元梯度向量部分和;
在从运算模块的计算过程完成后,互连模块逐级将各从运算模块的输出神经元梯度向量部分和拼接得到本层的输出神经元梯度向量;
主运算模块在每一层的计算过程中,利用本层的输出神经元梯度向量完成后续计算。
2.根据权利要求1所述的装置,其中,主运算模块将每一层的输出神经元梯度向量与下一层的激活函数求导值对位相乘,作为下一层的输入神经元梯度向量。
3.根据权利要求1所述的装置,其中,还包括:
控制器单元,用于读取指令,并将该指令译码成控制互连模块、主运算模块、以及所述多个从运算模块行为的控制信号。
4.根据权利要求1所述的装置,其中,主运算模块包括第一运算单元、第一数据依赖关系判断单元和第一神经元存储单元,其中:
第一神经元存储单元用于存储主运算模块在计算过程中用到的输入数据和输出数据;
第一运算单元完成主运算模块的各种运算功能;
第一数据依赖关系判断单元是第一运算单元读写第一神经元存储单元的端口,保证对第一神经元存储单元中离散或连续的数据读写不存在一致性冲突,并且负责从第一神经元存储单元读取输入神经元梯度向量通过互连模块发送给各从运算模块;以及
来自互连模块的输出神经元梯度向量被发送到第一运算单元。
5.根据权利要求1所述的装置,其中,每个从运算模块包括第二运算单元、第二数据依赖关系判断单元、第二神经元存储单元、权值存储单元和权值更新梯度存储单元,其中:
第二运算单元接收控制器单元发出的控制信号并进行算术逻辑运算;
第二数据依赖关系判断单元负责计算过程中对第二神经元存储单元、权值存储单元和权值更新梯度存储单元的读写操作,保证对第二神经元存储单元、权值存储单元和权值更新梯度存储单元的读写不存在一致性冲突;
第二神经元存储单元存储输入神经元梯度向量数据中与该从运算模块相对应的标量数据以及该从运算模块计算得到的输出神经元梯度向量部分和;
权值存储单元存储权值矩阵中与该从运算模块所存储的所述标量数据相对应的列;以及
权值更新梯度存储单元存储该从运算模块在更新权值过程中需要的权值更新梯度数据,每个从运算模块存储的权值更新梯度数据与其存储的权值数据相对应。
6.根据权利要求1所述的装置,其中:
计算权值更新梯度的过程如下:
设x是第n层的输出神经元向量,主运算模块将该输出神经元向量通过互连模块传送给各个从运算模块,主运算模块还将第n+1层的输出神经元梯度向量in_gradient通过互连模块传送到各个从运算模块;
每个从运算模块将输出神经元梯度向量in_gradient中与该从运算模块相对应的标量数据与输出神经元向量x相乘,得到本从运算模块的第n层的原始权值更新梯度dw_original。
7.根据权利要求6所述的装置,其中:
在算出所有层的原始权值更新梯度之后,主运算模块对原始权值更新梯度进行处理,首先设定一个正的常数clip_gradient;然后计算所有层的原始权值更新梯度的平方和sumsq_diff,然后对sumsq_diff进行开方得到l2norm_diff;
如果l2norm_diff大于clip_gradient,则得到一个缩放因子scale_factor=clip_gradient/l2norm_diff,所有的原始权值更新梯度dw_original都分别乘以这个缩放因子scale_factor,得到权值更新梯度dw。
8.根据权利要求7所述的装置,其中,在得到权值更新梯度dw后,使用权值w、权值更新梯度dw和上一次更新权值时使用的权值更新梯度dw’根据指令设置的学习率α,动量m和权重衰减系数η更新权值w。
9.根据权利要求8所述的装置,其中,更新权值的方式是:w_new=η*w_old+α*(dw+m*dw’),或w_new=w_old+α*dw,其中,w_new是更新后的权值,w_old是更新前的权值。
10.根据权利要求8所述的装置,其中,每个从运算模块存储w、dw和dw’中与该从运算模块相对应的列向量。
11.根据权利要求1所述的装置,其中,计算输出神经元梯度向量的过程为out_gradient=w*in_gradient,其中权值矩阵w和输入神经元梯度向量in_gradient的矩阵向量乘法可以划分为不相关的并行计算子任务,每个从运算模块计算出输出神经元梯度向量的部分和,所有的部分和在互连模块中完成拼接得到最后的输出神经元梯度向量。
12.根据权利要求11所述的装置,其中,计算输出神经元梯度向量时,上一层的输出神经元梯度向量input gradient乘以对应的激活函数导数得到本层的输入神经元梯度向量in_gradient,再与权值矩阵w相乘得到输出神经元梯度向量。
13.根据权利要求12所述的装置,其中,input gradient是第n+1层的输出神经元梯度向量,该向量首先要与正向运算过程中第n层的导数值相乘,得到第n层的输入神经元梯度向量,该过程在主运算模块中完成,由互连模块发往从运算模块,暂存在从运算模块的神经元存储单元中,然后,输入神经元梯度向量与权值矩阵相乘得到第n层的输出神经元梯度向量,在这个过程中,第i个从运算模块计算输入神经元梯度向量中第i个标量和权值矩阵中列向量的乘积,得到的输出向量在互连模块中进行拼接操作得到最后的输出神经元梯度向量output gradient。
14.根据权利要求1所述的装置,其中,还包括:
指令存储单元,用于存储指令,控制器单元从指令存储单元读取指令。
15.根据权利要求1所述的装置,其中,还包括:
数据访问单元,执行外部地址空间与所述装置之间的数据或指令读写操作。
16.根据权利要求14所述的装置,其中,所述指令包括以下至少一种:
CONFIG指令,在每层人工神经网络全连接层计算开始前配置当前层计算需要的各种常数;
COMPUTE指令,完成每层人工神经网络全连接层的算术逻辑计算;
IO指令,实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令,负责清空当前装置内部所有控制信号队列中的控制信号,保证NOP指令之前的所有控制信号执行完毕;
JUMP指令,负责控制器将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令,负责将装置内部地址空间某一地址的数据复制至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
17.一种电子设备,包括权利要求1-16任一项所述的装置,其中,电子设备包括各类电子产品、各类交通工具、各类家用电器、各类医疗设备。
18.一种应用权利要求1-16任一所述的装置执行单层人工神经网络全连接层反向训练的方法,包括:
数据访问单元从外部地址空间读取主运算模块需要的所有数据至主运算模块的第一神经元存储单元,所述数据包括之前正向运算时的输入神经元和激活函数导数值以及输入神经元梯度向量;
数据访问单元从外部地址空间读取从运算模块需要的所有权值数据和权值更新梯度数据,并分别存储到相应的从运算模块的权值存储单元和权值更新梯度存储单元;
主运算模块通过互连模块将输入神经元梯度向量和正向运算时的输入神经元发给各从运算模块,所述输入神经元梯度向量和正向运算时的输入神经元存至从运算模块的第二神经元存储单元;
从运算模块的第二运算单元从权值存储单元读取权值向量,完成权值向量和输入神经元梯度向量的向量乘标量运算,将输出向量部分和通过互连模块返回;同时从运算模块将输入神经元梯度向量与输入神经元相乘,得到权值更新梯度存至权值更新梯度存储单元;
在互连模块中,各从运算模块返回的输出梯度部分和通过互连模块的拼接操作得到完整的输出神经元梯度向量;
主运算模块在每一层的计算过程中,利用本层的输出神经元梯度向量完成后续计算。
19.根据权利要求18所述的方法,还包括:主运算模块得到互连模块的返回值,根据COMPUTE指令译出的控制信号,从神经元存储单元读取正向运算时的激活函数导数值,将导数值乘以返回的输出向量,得到下一层反向训练的输入神经元梯度向量,将其写回至第一神经元存储单元。
20.根据权利要求19所述的方法,还包括:从运算模块从权值存储单元读取权值w,从权值更新梯度存储单元读取本次的权值更新梯度dw和上一次更新权值使用的权值更新梯度dw’,根据指令设置的学习率α,动量m和权重衰减系数η更新权值w。
21.根据权利要求20所述的方法,还包括:第一和第二运算单元,根据译出的控制信号配置运算单元内部寄存器的值,包括该层人工神经网络计算需要的各种常数,本层计算的精度设置、更新权值时的学习率。
22.根据权利要求18所述的方法,其中,还包括:控制器单元在指令存储单元的首地址处预先存入一条IO指令。
23.根据权利要求22所述的方法,其中,还包括:数据访问单元从外部地址空间读取与该单层人工神经网络全连接层反向训练有关的所有指令,并将其存储在指令存储单元中。
24.根据权利要求23所述的方法,其中,所述指令包括以下至少一种:
CONFIG指令,在每层人工神经网络全连接层计算开始前配置当前层计算需要的各种常数;
COMPUTE指令,完成每层人工神经网络全连接层的算术逻辑计算;
IO指令,实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令,负责清空当前装置内部所有控制信号队列中的控制信号,保证NOP指令之前的所有控制信号执行完毕;
JUMP指令,负责控制器将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令,负责将装置内部地址空间某一地址的数据复制至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
25.一种用于执行多层人工神经网络全连接层反向训练的方法,包括:
对于每一层,执行根据权利要求18所述的方法;以及
当上一层人工神经网络全连接层执行完毕后,下一层的运算指令将主运算模块中计算出的输出神经元梯度向量作为下一层训练的输入神经元梯度向量执行根据权利要求18的方法,指令中的权值地址和权值更新梯度地址相应地变更至本层对应的地址。
CN201610285062.0A 2016-04-29 2016-04-29 一种用于执行全连接层神经网络训练的装置和方法 Active CN107341541B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201811221576.5A CN109376861B (zh) 2016-04-29 2016-04-29 一种用于执行全连接层神经网络训练的装置和方法
CN201610285062.0A CN107341541B (zh) 2016-04-29 2016-04-29 一种用于执行全连接层神经网络训练的装置和方法
EP16899905.0A EP3451242A4 (en) 2016-04-29 2016-05-05 DEVICE AND METHOD FOR REVERSE LEARNING OF COMPLETELY CONNECTED LAYERS OF A NEURONAL NETWORK
KR1020187033950A KR102470264B1 (ko) 2016-04-29 2016-05-05 완전연결층 신경망 역방향 트레이닝 실행용 장치와 방법
PCT/CN2016/081114 WO2017185394A1 (zh) 2016-04-29 2016-05-05 一种用于执行全连接层神经网络反向训练的装置和方法
US16/174,050 US20190065958A1 (en) 2016-04-29 2018-10-29 Apparatus and Methods for Training in Fully Connected Layers of Convolutional Networks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610285062.0A CN107341541B (zh) 2016-04-29 2016-04-29 一种用于执行全连接层神经网络训练的装置和方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201811221576.5A Division CN109376861B (zh) 2016-04-29 2016-04-29 一种用于执行全连接层神经网络训练的装置和方法

Publications (2)

Publication Number Publication Date
CN107341541A CN107341541A (zh) 2017-11-10
CN107341541B true CN107341541B (zh) 2021-01-29

Family

ID=60160559

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201811221576.5A Active CN109376861B (zh) 2016-04-29 2016-04-29 一种用于执行全连接层神经网络训练的装置和方法
CN201610285062.0A Active CN107341541B (zh) 2016-04-29 2016-04-29 一种用于执行全连接层神经网络训练的装置和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201811221576.5A Active CN109376861B (zh) 2016-04-29 2016-04-29 一种用于执行全连接层神经网络训练的装置和方法

Country Status (5)

Country Link
US (1) US20190065958A1 (zh)
EP (1) EP3451242A4 (zh)
KR (1) KR102470264B1 (zh)
CN (2) CN109376861B (zh)
WO (1) WO2017185394A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180053086A1 (en) * 2016-08-22 2018-02-22 Kneron Inc. Artificial neuron and controlling method thereof
CN108108662B (zh) * 2017-11-24 2021-05-25 深圳市华尊科技股份有限公司 深度神经网络识别模型及识别方法
CN109961136B (zh) * 2017-12-14 2020-05-19 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN108108189B (zh) * 2017-12-15 2020-10-30 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN108053029B (zh) * 2017-12-27 2021-08-27 上海闪易半导体有限公司 一种基于存储阵列的神经网络的训练方法
CN110163334B (zh) * 2018-02-11 2020-10-09 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
CN110163349B (zh) * 2018-02-12 2021-03-23 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
EP3651072B1 (en) * 2018-02-13 2021-10-27 Shanghai Cambricon Information Technology Co., Ltd Computation device and method
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN111368987B (zh) * 2018-12-25 2023-03-24 上海寒武纪信息科技有限公司 一种神经网络计算装置和方法
CN110147872B (zh) * 2018-05-18 2020-07-17 中科寒武纪科技股份有限公司 编码存储装置及方法、处理器及训练方法
CN110728364A (zh) * 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
US11423284B2 (en) * 2018-09-07 2022-08-23 Black Sesame Technologies, Inc Subgraph tile fusion in a convolutional neural network
CN109165738B (zh) * 2018-09-19 2021-09-14 北京市商汤科技开发有限公司 神经网络模型的优化方法及装置、电子设备和存储介质
CN109447258B (zh) * 2018-09-19 2021-09-14 北京市商汤科技开发有限公司 神经网络模型的优化方法及装置、电子设备和存储介质
CN110968404B (zh) * 2018-09-30 2023-04-28 阿里巴巴集团控股有限公司 一种设备数据处理方法及装置
CN110059797B (zh) * 2018-10-10 2020-03-10 中科寒武纪科技股份有限公司 一种计算装置及相关产品
CN109657788A (zh) * 2018-12-18 2019-04-19 北京中科寒武纪科技有限公司 数据处理方法、装置及相关产品
CN111368986B (zh) * 2018-12-25 2023-03-10 上海寒武纪信息科技有限公司 一种神经网络计算装置和方法
CN109740739B (zh) * 2018-12-29 2020-04-24 中科寒武纪科技股份有限公司 神经网络计算装置、神经网络计算方法及相关产品
CN111722937B (zh) * 2019-03-21 2024-05-10 阿里巴巴集团控股有限公司 深度学习权重更新方法、装置
WO2020192582A1 (zh) * 2019-03-26 2020-10-01 上海寒武纪信息科技有限公司 神经网络运算模块及方法
JP7370158B2 (ja) * 2019-04-03 2023-10-27 株式会社Preferred Networks 情報処理装置および情報処理方法
CN110032450B (zh) * 2019-04-17 2021-04-20 中山大学 一种基于固态盘扩展内存的大规模深度学习方法及系统
CN113222101A (zh) * 2020-02-05 2021-08-06 北京百度网讯科技有限公司 深度学习处理装置、方法、设备和存储介质
CN112329941B (zh) * 2020-11-04 2022-04-12 支付宝(杭州)信息技术有限公司 深度学习模型的更新方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN106991478A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 用于执行人工神经网络反向训练的装置和方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5517596A (en) * 1991-05-17 1996-05-14 International Business Machines Corporation Learning machine synapse processor system apparatus
CN103996069B (zh) * 2013-02-20 2018-04-03 百度在线网络技术(北京)有限公司 一种基于多gpu的bpnn训练方法和装置
CN103150596B (zh) * 2013-02-22 2015-12-23 百度在线网络技术(北京)有限公司 一种反向传播神经网络dnn的训练系统
WO2017185248A1 (zh) * 2016-04-27 2017-11-02 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN106991478A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 用于执行人工神经网络反向训练的装置和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DaDianNao:A Machine-Learning Supercomputer;Yunji Chen et al;《2014 47th Annual IEEE/ACM International Symposium on Microarchitecture》;20141231;全文 *

Also Published As

Publication number Publication date
KR102470264B1 (ko) 2022-11-23
CN109376861B (zh) 2020-04-24
KR20190003612A (ko) 2019-01-09
EP3451242A4 (en) 2019-12-25
EP3451242A1 (en) 2019-03-06
WO2017185394A1 (zh) 2017-11-02
CN107341541A (zh) 2017-11-10
US20190065958A1 (en) 2019-02-28
CN109376861A (zh) 2019-02-22

Similar Documents

Publication Publication Date Title
CN107341541B (zh) 一种用于执行全连接层神经网络训练的装置和方法
CN109375951B (zh) 一种用于执行全连接层神经网络正向运算的装置和方法
CN111310904B (zh) 一种用于执行卷积神经网络训练的装置和方法
US10713568B2 (en) Apparatus and method for executing reversal training of artificial neural network
CN111860813B (zh) 一种用于执行卷积神经网络正向运算的装置和方法
CN107316078B (zh) 用于执行人工神经网络自学习运算的装置和方法
CN109284825B (zh) 用于执行lstm运算的装置和方法
CN107832843B (zh) 一种信息处理方法及相关产品
CN109242094B (zh) 用于执行人工神经网络正向运算的装置和方法
CN109358900B (zh) 支持离散数据表示的人工神经网络正向运算装置和方法
CN107301454B (zh) 支持离散数据表示的人工神经网络反向训练装置和方法
CN107886166B (zh) 一种执行人工神经网络运算的装置和方法
EP3451240A1 (en) Apparatus and method for performing auto-learning operation of artificial neural network
CN107329733B (zh) 用于执行pooling运算的装置和方法
CN113867797A (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
CB02 Change of applicant information

Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant after: Zhongke Cambrian Technology Co., Ltd

Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant