CN110807519B - 基于忆阻器的神经网络的并行加速方法及处理器、装置 - Google Patents

基于忆阻器的神经网络的并行加速方法及处理器、装置 Download PDF

Info

Publication number
CN110807519B
CN110807519B CN201911082236.3A CN201911082236A CN110807519B CN 110807519 B CN110807519 B CN 110807519B CN 201911082236 A CN201911082236 A CN 201911082236A CN 110807519 B CN110807519 B CN 110807519B
Authority
CN
China
Prior art keywords
functional layer
memristor
neural network
parallel
layer
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
CN201911082236.3A
Other languages
English (en)
Other versions
CN110807519A (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN201911082236.3A priority Critical patent/CN110807519B/zh
Priority to KR1020227019213A priority patent/KR20220088943A/ko
Priority to US17/049,348 priority patent/US20220335278A1/en
Priority to PCT/CN2020/071424 priority patent/WO2021088248A1/zh
Priority to JP2022526246A priority patent/JP7399517B2/ja
Publication of CN110807519A publication Critical patent/CN110807519A/zh
Application granted granted Critical
Publication of CN110807519B publication Critical patent/CN110807519B/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/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
    • G06N3/065Analogue means
    • 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/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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
    • 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/08Learning methods
    • G06N3/09Supervised learning
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Chemical & Material Sciences (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Semiconductor Memories (AREA)

Abstract

一种基于忆阻器的神经网络的并行加速方法及处理器、装置。该神经网络包括:多个依次设置的功能层,其中,该多个功能层包括第一功能层和位于第一功能层之后的第二功能层,该第一功能层包括并行的多个第一忆阻器阵列,该多个第一忆阻器阵列用于执行所述第一功能层的操作并将操作结果输出至第二功能层。该并行加速方法包括:使用多个第一忆阻器阵列并行地执行第一功能层的操作,并将操作结果输出至第二功能层。同时,针对具体的并行加速处理器,设计了合适的硬件架构,该并行加速处理器及装置可以执行上述并行加速方法。

Description

基于忆阻器的神经网络的并行加速方法及处理器、装置
技术领域
本公开的实施例涉及一种基于忆阻器的神经网络的并行加速方法及处 理器、装置。
背景技术
深度神经网络算法的兴起,带来了智能化的信息技术革命。基于各种深 度神经网络算法,可以实现图像识别与分割、物体探测以及完成对语音和文 本的翻译、生成等处理。使用深度神经网络算法处理不同工作负载是一类以 数据为中心的计算,实现该算法的硬件平台需要具有高性能、低功耗的处理 能力。然而,传统的实现该算法的硬件平台是基于存储和计算分离的冯诺依 曼架构,这种架构在计算时需要数据在存储器件和计算器件之间来回搬移, 因此在包含大量参数的深度神经网络的计算过程中,该架构的能效较低。为此,开发一种新型计算硬件来运行深度神经网络算法成为当前亟需解决的问 题。
发明内容
本公开至少一实施例提供一种基于忆阻器的神经网络的并行加速方法, 其中,所述神经网络包括:多个依次设置的功能层,所述多个功能层包括第 一功能层和位于所述第一功能层之后的第二功能层,所述第一功能层包括并 行的多个第一忆阻器阵列,所述多个第一忆阻器阵列用于并行地执行所述第 一功能层的操作并将操作结果输出至所述第二功能层;所述并行加速方法包 括:使用所述多个第一忆阻器阵列并行地执行所述第一功能层的操作并将所 述操作结果输出至所述第二功能层。
例如,在本公开一些实施例提供的并行加速方法中,使用所述多个第一 忆阻器阵列并行地执行所述第一功能层的操作并将所述操作结果输出至所 述第二功能层,包括:将所述第一功能层接收的输入数据拆分为与所述多个 第一忆阻器阵列一一对应的多个子输入数据;以及使用所述多个第一忆阻器 阵列并行地对所述多个子输入数据执行所述第一功能层的操作,以对应产生 多个子操作结果。
例如,本公开一些实施例提供的并行加速方法,还包括:将所述多个子 操作结果进行拼合并使用所述第二功能层对拼合结果执行所述第二功能层 的操作。
例如,在本公开一些实施例提供的并行加速方法中,所述多个子输入数 据的尺寸大小基本相同。
例如,在本公开一些实施例提供的并行加速方法中,使用所述多个第一 忆阻器阵列并行地执行所述第一功能层的操作并将所述操作结果输出至所 述第二功能层,包括:将所述第一功能层接收的多个输入数据分别提供给所 述多个第一忆阻器阵列;以及使用所述多个第一忆阻器阵列至少部分并行地 对接收的所述多个输入数据执行所述第一功能层的操作,以对应产生多个子 操作结果。
例如,本公开一些实施例提供的并行加速方法,还包括:使用所述第二 功能层分别对所述多个子操作结果执行所述第二功能层的操作。
例如,在本公开一些实施例提供的并行加速方法中,所述多个输入数据 互不相同。
例如,在本公开一些实施例提供的并行加速方法中,所述神经网络为卷 积神经网络。
例如,在本公开一些实施例提供的并行加速方法中,所述第一功能层为 所述神经网络的初始卷积层。
例如,在本公开一些实施例提供的并行加速方法中,所述多个功能层还 包括第三功能层,所述第三功能层的输出被提供至所述第一功能层。
例如,在本公开一些实施例提供的并行加速方法中,所述神经网络的权 重参数通过片外训练得到,所述神经网络的权重参数包括所述第一功能层的 权重参数,所述第一功能层的权重参数被写入所述多个第一忆阻器阵列,以 确定所述多个第一忆阻器阵列的电导。
例如,在本公开一些实施例提供的并行加速方法中,所述神经网络的权 重参数还包括除所述第一功能层之外的其它功能层的权重参数,所述其他功 能层的权重参数被写入所述其他功能层对应的忆阻器阵列,以确定所述其他 功能层对应的忆阻器阵列的电导。
本公开至少一实施例还提供一种基于忆阻器的神经网络的并行加速处 理器,其中,所述神经网络包括多个依次设置的功能层,所述多个功能层包 括第一功能层,所述并行加速处理器包括多个忆阻器阵列计算单元,所述多 个忆阻器阵列计算单元包括多个第一忆阻器阵列计算单元,所述第一功能层 的权重参数被写入所述多个第一忆阻器阵列计算单元中,所述多个第一忆阻 器阵列计算单元被配置为并行地执行所述第一功能层的操作对应的运算。
本公开至少一实施例还提供一种基于忆阻器的神经网络的并行加速装 置,包括:本公开任一实施例提供的并行加速处理器,以及与所述并行加速 处理器连接的输入接口和输出接口;所述输入接口被配置为接收指令以控制 所述并行加速处理器的运行,所述输出接口被配置为输出所述并行加速处理 器的运行结果。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作 简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例, 而非对本公开的限制。
图1为一种忆阻器单元电路的示意图;
图2为一种忆阻器阵列的示意图;
图3为一种卷积神经网络的示意图;
图4为一种卷积神经网络的工作过程示意图;
图5A为一种基于忆阻器阵列的卷积神经网络的卷积计算的示意图;
图5B为一种基于忆阻器阵列的卷积神经网络的全连接计算的示意图;
图6为本公开一些实施例提供的一种神经网络的结构示意框图;
图7A为图6所示的神经网络的并行加速方法中的第一功能层的一种并 行处理方式;
图7B为图6所示的神经网络的并行加速方法中的第一功能层的另一种 并行处理方式;
图8为本公开一些实施例提供的一种神经网络的片外训练方法的流程 图;
图9为本公开一些实施例提供的一种基于忆阻器的神经网络的并行加速 处理器的示意图;
图10为图9所示的并行加速处理器中的忆阻器阵列计算单元的结构示 意图;以及
图11为本公开一些实施例提供的一种基于忆阻器的神经网络的并行加 速装置的示意框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公 开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然, 所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描 述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获 得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属 领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第 二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分 不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限 制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词 前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而 不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理 的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。 “上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对 位置改变后,则该相对位置关系也可能相应地改变。
忆阻器(阻变存储器、相变存储器、导电桥存储器等)是一种可以通过 施加外部激励,调节其电导状态的非易失型器件。根据基尔霍夫电流定律和 欧姆定律,由这类器件构成的阵列可以并行的完成乘累加计算,且存储和计 算都发生在阵列各器件中。基于这种计算架构,可以实现不需要大量数据搬 移的存算一体计算。同时,乘累加是运行神经网络需要的核心计算任务。因 此,使用阵列中的忆阻器型器件的电导表示权重值,可以基于这种存算一体 计算实现高能效的神经网络运算。
图1为一种忆阻器单元电路的示意图。如图1所示,该忆阻器单元电路 采用1T1R结构,即该忆阻器单元电路包括一个晶体管M1和一个忆阻器R1。
需要说明的是,本公开的实施例中采用的晶体管均可以为薄膜晶体管或 场效应晶体管(例如MOS场效应晶体管)或其他特性相同的开关器件。这 里采用的晶体管的源极、漏极在结构上可以是对称的,所以其源极、漏极在 结构上可以是没有区别的。在本公开的实施例中,为了区分晶体管除栅极之 外的两极,直接描述了其中一极为第一极,而另一极为第二极。
本公开的实施例对采用的晶体管的类型不作限定,例如当晶体管M1采 用N型晶体管时,其栅极和字线端WL连接,例如字线端WL输入高电平 时晶体管M1导通;晶体管M1的第一极可以是源极并被配置为和源线端SL 连接,例如晶体管M1可以通过源线端SL接收复位电压;晶体管M1的第 二极可以是漏极并被配置为和忆阻器R1的第二极(例如负极)连接,忆阻 器R1的第一极(例如正极)和位线端BL连接,例如忆阻器R1可以通过位 线端BL接收置位电压。例如当晶体管M1采用P型晶体管时,其栅极和字 线端WL连接,例如字线端WL输入低电平时晶体管M1导通;晶体管M1 的第一极可以是漏极并被配置为和源线端SL连接,例如晶体管M1可以通 过源线端SL接收复位电压;晶体管M1的第二极可以是源极并被配置为和 忆阻器R1的第二极(例如负极)连接,忆阻器R1的第一极(例如正极) 和位线端BL连接,例如忆阻器R1可以通过位线端BL接收置位电压。需要 说明的是,阻变存储器结构还可以实现为其他结构,例如忆阻器R1的第二 极与源线端SL连接的结构,本公开的实施例对此不作限制。下面各实施例 均以晶体管M1采用N型晶体管为例进行说明。
字线端WL的作用是对晶体管M1的栅极施加相应电压,从而控制晶体 管M1导通或关闭。在对忆阻器R1进行操作时,例如进行置位操作或复位 操作,均需要先开启晶体管M1,即需要通过字线端WL对晶体管M1的栅 极施加导通电压。在晶体管M1导通后,例如,可以通过在源线端SL和位 线端BL向忆阻器R1施加电压,以改变忆阻器R1的阻态。例如,可以通过位线端BL施加置位电压,以使得该忆阻器R1处于低阻态;又例如,可以 通过源线端SL施加复位电压,以使得该忆阻器R1处于高阻态。
需要说明的是,在本公开的实施例中,通过字线端WL和位线端BL同 时施加电压,使得忆阻器R1的电阻值越来越小,即忆阻器R1从高阻态变 为低阻态,将使得忆阻器R1从高阻态变为低阻态的操作称为置位操作;通 过字线端WL和源线端SL同时施加电压,使得忆阻器R1的电阻值越来越 大,即忆阻器R1从低阻态变为高阻态,将使得忆阻器R1从低阻态变为高 阻态的操作称为复位操作。例如,忆阻器R1具有阈值电压,在输入电压幅 度小于忆阻器R1的阈值电压时,不会改变忆阻R1的电阻值(或电导值)。 在这种情况下,可以通过输入小于阈值电压的电压,利用忆阻器R1的电阻 值(或电导值)进行计算;可以通过输入大于阈值电压的电压,改变忆阻器 R1的电阻值(或电导值)。
图2示出了一种忆阻器阵列,该忆阻器阵列由多个如图1中所示的忆阻 器单元电路构成,例如多个忆阻器单元电路构成一个m行n列的阵列,m为 大于1的整数,n为大于等于1的整数。图2中BL<1>、BL<2>……BL<m> 分别表示第一行、第二行……第m行的位线,每一行的忆阻器单元电路中的 忆阻器和该行对应的位线连接;图2中WL<1>、WL<2>……WL<n>分别表 示第一列、第二列……第n列的字线,每一列的忆阻器单元电路中的晶体管 的栅极和该列对应的字线连接;图2中SL<1>、SL<2>……SL<n>分别表示 第一列、第二列……第n列的源线,每一列的忆阻器单元电路中的晶体管的 源极和该列对应的源线连接。
图2所示的m行n列的忆阻器阵列可以表示一个m行n列大小的神经 网络权重矩阵。例如,第一层神经元层具有m个神经元节点,与图2所示的 忆阻器阵列的m行位线对应连接;第二层神经元层具有n个神经元节点,与 图2所示的忆阻器阵列的n列源线对应连接。通过向第一层神经元层并行输 入电压激励,可以在第二层神经元层得到由电压激励向量和忆阻器阵列的电 导矩阵(电导为电阻的倒数)相乘得到的输出电流。
具体地,根据基尔霍夫定律,忆阻器阵列的输出电流可以根据下述公式 得出:
Figure BDA0002264319610000061
其中,j=1,…,n,k=1,…,m。
在上述公式中,vk表示第一层神经元层中的神经元节点k输入的电压激 励,ij表示第二层神经元层的神经元节点j的输出电流,gk,j表示忆阻器阵列 的电导矩阵。
根据基尔霍夫定律可知,忆阻器阵列可以并行地完成乘累加计算。
需要说明的是,例如在某些示例中,神经网络权重矩阵的每个权重也可 以使用两个忆阻器来实现。也就是说,可以通过忆阻器阵列中的两列忆阻器 实现一列输出电流的输出。在此情况下,表示一个m行n列大小的神经网络 权重矩阵需要m行2n列的忆阻器阵列。
需要说明的是,忆阻器阵列输出的电流为模拟电流,在一些示例中,可 以通过模数转换电路(ADC)将模拟电流转换为数字电压传递给第二层神经 元层,从而第二层神经元层还可以通过数模转换电路(DAC)将数字电压转 换为模拟电压,并通过另一忆阻器阵列与另一层神经元层连接;在另一些示 例中,还可以通过采样保持电路将模拟电流转换为模拟电压传输给第二层神 经元层。
卷积神经网络(Convolutional Neural Network,CNN)主要用于识别二 维形状,其对图像的平移、比例缩放、倾斜或其他形式的变形具有高度不变 性。CNN主要通过局部感知野和权值共享来简化神经网络模型的复杂性、 减少权重的数量。随着深度学习技术的发展,CNN的应用范围已经不仅仅 限于图像识别领域,其也可以应用在人脸识别、文字识别、动物分类、图像 处理等领域。
图3示出了一种卷积神经网络的示意图。例如,该卷积神经网络可以用 于图像处理,其使用图像作为输入和输出,并通过卷积核替代标量的权重。 图3中仅示出了具有3层神经元层的卷积神经网络,本公开的实施例对此不作 限制。如图3所示,卷积神经网络包括3层神经元层,分别为输入层101、隐 藏层102和输出层103。输入层101具有4个输入,隐藏层102具有3个输出,输 出层103具有2个输出。
例如,输入层101的4个输入可以为4幅图像,或者1幅图像的四种特征图 像。隐藏层102的3个输出可以为经过输入层101输入的图像的特征图像。
例如,如图3所示,卷积层具有权重
Figure BDA0002264319610000071
和偏置
Figure BDA0002264319610000072
权重
Figure BDA0002264319610000073
表示卷积核, 偏置
Figure BDA0002264319610000074
是叠加到卷积层的输出的标量,其中,k是表示输入层101的标签,i 和j分别是输入层101的单元和隐藏层102的单元的标签。例如,第一卷积层201 包括第一组卷积核(图1中的
Figure BDA0002264319610000075
)和第一组偏置(图1中的
Figure BDA0002264319610000076
)。第二卷积层 202包括第二组卷积核(图1中的
Figure BDA0002264319610000077
)和第二组偏置(图1中的
Figure BDA0002264319610000078
)。通常, 每个卷积层包括数十个或数百个卷积核,若卷积神经网络为深度卷积神经网 络,则其可以包括至少五层卷积层。
例如,如图3所示,该卷积神经网络还包括第一激活层203和第二激活层 204。第一激活层203位于第一卷积层201之后,第二激活层204位于第二卷积 层202之后。激活层(例如,第一激活层203和第二激活层204)包括激活函 数,激活函数用于给卷积神经网络引入非线性因素,以使卷积神经网络可以 更好地解决较为复杂的问题。激活函数可以包括线性修正单元(ReLU)函 数、S型函数(Sigmoid函数)或双曲正切函数(tanh函数)等。ReLU函数为非饱和非线性函数,Sigmoid函数和tanh函数为饱和非线性函数。例如,激活 层可以单独作为卷积神经网络的一层,或者激活层也可以被包含在卷积层 (例如,第一卷积层201可以包括第一激活层203,第二卷积层202可以包括 第二激活层204)中。
例如,在第一卷积层201中,首先,对每个输入应用第一组卷积核中的 若干卷积核
Figure BDA0002264319610000081
和第一组偏置中的若干偏置
Figure BDA0002264319610000082
以得到第一卷积层201的输 出;然后,第一卷积层201的输出可以通过第一激活层203进行处理,以得到 第一激活层203的输出。在第二卷积层202中,首先,对输入的第一激活层203 的输出应用第二组卷积核中的若干卷积核
Figure BDA0002264319610000083
和第二组偏置中的若干偏置
Figure BDA0002264319610000084
以得到第二卷积层202的输出;然后,第二卷积层202的输出可以通过 第二激活层204进行处理,以得到第二激活层204的输出。例如,第一卷积层 201的输出可以为对其输入应用卷积核
Figure BDA0002264319610000085
后再与偏置
Figure BDA0002264319610000086
相加的结果,第二卷 积层202的输出可以为对第一激活层203的输出应用卷积核
Figure BDA0002264319610000087
后再与偏置
Figure BDA0002264319610000088
相加的结果。
在利用卷积神经网络进行图像处理前,需要对卷积神经网络进行训练。 经过训练之后,卷积神经网络的卷积核和偏置在图像处理期间保持不变。在 训练过程中,各卷积核和偏置通过多组输入/输出示例图像以及优化算法进行 调整,以获取优化后的卷积神经网络模型。
图4示出了一种卷积神经网络的工作过程示意图。例如,如图4所示, 输入图像输入到卷积神经网络后,依次经过若干个处理过程(如图4中的卷 积计算、降采样(即下采样)、展开成向量、全连接计算等)后得到对应的 输出。卷积神经网络的主要组成部分可以包括多个卷积层、多个降采样层(即 下采样层)、平坦化层和全连接层。在本公开中,应该理解的是,多个卷积 层、多个降采样层、平坦化层和全连接层等这些层每个都指代对应的处理/ 操作,即卷积处理/操作(如图4中的卷积计算所示)、降采样处理/操作(如 图4中降采样所示)、平坦化处理/操作(如图4中的展开成向量所示)、全连 接处理/操作(如图4中的全连接计算所示)等,后续不再重复赘述。需要说 明的是,在本公开中,这些层用于指代对应的处理/操作的层统称为功能层, 以区别于神经元层。还需要说明的是,功能层还可以包括升采样层(上采样 层)、标准化层等,本公开的实施例对此不作限制。
卷积层是卷积神经网络的核心层。在卷积神经网络的卷积层中,一个神 经元只与部分相邻层的神经元连接。卷积层可以对输入图像应用若干个卷积 核(也称为滤波器),以提取输入图像的多种类型的特征。每个卷积核可以 提取一种类型的特征。卷积核一般以随机小数矩阵的形式初始化,在卷积神 经网络的训练过程中卷积核将通过学习以得到合理的权值。对输入图像应用 一个卷积核之后得到的结果被称为特征图像(feature map),特征图像的数目 与卷积核的数目相等。每个特征图像由一些矩形排列的神经元组成,同一特征图像的神经元共享权值,这里共享的权值就是卷积核。一个层级的卷积层 输出的特征图像可以被输入到相邻的下一个层级的卷积层并再次处理以得 到新的特征图像。例如,如图4所示,第一层级的卷积层可以输出第一特征 图像,该第一特征图像被输入到第二层级的卷积层再次处理以得到第二特征 图像。
例如,如图4所示,卷积层可以使用不同的卷积核对输入图像的某一个 局部感受域的数据进行卷积,卷积结果可以被输入激活层,由激活层根据相 应的激活函数进行计算以得到输入图像的特征信息。
例如,如图4示,降采样层设置在相邻的卷积层之间,降采样层是降采 样的一种形式。一方面,降采样层可以用于缩减输入图像的规模,简化计算 的复杂度,在一定程度上减小过拟合的现象;另一方面,降采样层也可以进 行特征压缩,提取输入图像的主要特征。降采样层能够减少特征图像的尺寸, 但不改变特征图像的数量。例如,一个尺寸为12×12的输入图像,通过6×6 的卷积核对其进行采样,那么可以得到2×2的输出图像,这意味着输入图像 上的36个像素合并为输出图像中的1个像素。最后一个降采样层的输出可 以被输入到平坦化层以进行平坦化操作(Flatten)。平坦化层可以将特征图像 (二维图像)转换为向量(一维)。该平坦化操作可以按照如下的方式进行:
vk=fk/j,k%j
其中,v是包含k个元素的向量,f是具有i行j列的矩阵。
然后,平坦化层的输出(即一维向量)可以被输入到一个全连接层 (FCN)。全连接层可以具有与图3所示的卷积神经网络相似的结构,但不 同之处在于,全连接层使用不同的标量值以替代卷积核。全连接层用于连接 提取的所有特征。全连接层的输出可以为一维向量。
卷积神经网络中的卷积计算和全连接计算等计算过程主要包括乘累加 计算,因此,卷积层和全连接层等功能层可以通过忆阻器阵列实现。例如, 卷积层和全连接层的权重均可以通过忆阻器阵列的阵列电导表示,同时卷积 层和全连接层的输入可以通过对应的电压激励表示,从而可以根据前述基尔 霍夫定律分别实现卷积计算和全连接计算。
图5A为一种基于忆阻器阵列的卷积神经网络的卷积计算的示意图,图 5B为一种基于忆阻器阵列的卷积神经网络的全连接计算的示意图。
如图5A所示,可以用一个忆阻器阵列来实现一个卷积层的卷积计算, 例如可以对输入图像(如图5A中的数字图像“2”所示)进行卷积处理。例如, 在一些示例中,该卷积层包括多个卷积核,该忆阻器阵列的每一行对应一个 卷积核,且每一行的多个忆阻器分别用于表示一个卷积核的各个元素的值。 例如,对于一个3×3的卷积核,该忆阻器阵列的每一行用9个忆阻器表示该 卷积核的9个元素的值。需要说明的是,上述使用忆阻器阵列表征卷积层的 方式是示例性的,本公开的实施例包括但不限于此。
应当理解的是,卷积层对其输入图像进行卷积处理,需要将输入图像划 分为多个图像子块(其尺寸与卷积核的尺寸大小相同),然后使用卷积核对 每个图像子块进行卷积操作。在使用忆阻器阵列实现卷积层的卷积运算的情 况下,虽然多个卷积核可以并行地对每个图像子块进行处理,但是,仍然需 要将各个图像子块的数据分批次(即一个个图像子块)串行地输入到该忆阻 器阵列中,以实现对整个输入图像的卷积处理。
如图5B所示,可以用一个忆阻器阵列来实现一个全连接层的全连接计 算。例如,在一些示例中,如图5B所示,该忆阻器阵列的各列用于接收全 连接层的输入,各行用于提供全连接层的输出,每一行的多个忆阻器分别用 于表示该行的输出对应的各个权重。需要说明的是,上述使用忆阻器阵列表 征全连接层的方式是示例性的,本公开的实施例包括但不限于此。
应当理解的是,全连接层的全连接计算可以一次性完成。由于卷积层的 卷积计算需要分批次串行完成,且需要处理完所有批次后,卷积层的卷积计 算才完成。因此,卷积计算和全连接计算之间往往存在严重的速度失配(卷 积计算耗用的时间远大于全连接计算耗用的时间)。因此,当基于忆阻器阵 列实现卷积神经网络时,该卷积神经网络的性能往往受限于效率最低的忆阻 器阵列(称为效率瓶颈),例如卷积层对应的忆阻器阵列。
本公开至少一实施例提供一种基于忆阻器的神经网络的并行加速方法。 该神经网络包括:多个依次设置的功能层,其中,该多个功能层包括第一功 能层和位于第一功能层之后的第二功能层,该第一功能层包括并行的多个第 一忆阻器阵列,该多个第一忆阻器阵列用于执行所述第一功能层的操作并将 操作结果输出至第二功能层。该并行加速方法包括:使用多个第一忆阻器阵 列并行地执行第一功能层的操作,并将操作结果输出至第二功能层。
本公开至少一实施例还提供对应于上述并行加速方法的处理器及装置。
本公开的实施例提供的基于忆阻器的神经网络的并行加速方法及处理 器、装置,将第一功能层的操作通过多个第一忆阻器阵列并行执行,从而可 以实现对基于忆阻器的神经网络的运行过程的加速。该基于忆阻器的神经网 络的架构思路及并行加速方法可以广泛适用于各种深度神经网络模型和不 同类型的忆阻器,有助于解决深度神经网络模型的速度失配问题。
下面结合附图对本公开的一些实施例及其示例进行详细说明。
本公开至少一实施例提供一种基于忆阻器的神经网络的并行加速方法。 图6示出了本公开一些实施例提供的一种神经网络的结构示意框图,图7A 示出了图6所示的神经网络的并行加速方法中的第一功能层的一种并行处理 方式,图7B示出了图6所示的神经网络的并行加速方法中的第一功能层的 另一种并行处理方式。
如图6所示,该神经网络包括多个依次设置的功能层。例如,如图6所 示,该多个功能层包括第一功能层和位于第一功能层之后的第二功能层。例 如,在一些实施例中,该多个功能层还可以包括第一功能层和第二功能层之 外的其他功能层,本公开对此不作限制。
例如,在一些实施例中,如图7A和图7B所示,第一功能层包括并行 的多个第一忆阻器阵列,第一功能层对应的多个第一忆阻器阵列用于并行地 执行第一功能层的操作并将操作结果输出至第二功能层,从而实现对神经网 络的运行过程的加速。例如,在一些实施例中,在第一功能层仅包括一个第 一忆阻器阵列的情况下,第一功能层为限制该神经网络运行性能的效率瓶 颈,例如第一功能层为卷积层。
例如,在一些实施例中,该神经网络为包括多个卷积层的卷积神经网络; 由于通常情况下,用于对神经网络的输入图像进行卷积处理的初始卷积层(即第一个卷积层)的运算量最大、耗用时间最长,即初始卷积层通常是神 经网络的效率瓶颈,因此,第一功能层通常可以包括该初始卷积层。需要说 明的是,本公开包括但不限于此。例如,在另一些实施例中,如图6所示, 神经网络的多个功能层还可以包括位于第一功能层之前的第三功能层,第三 功能层的输出被提供至第一功能层以作为第一功能层的输入,因此,第一功 能层也可以是神经网络的初始卷积层之外的其他卷积层,例如中间卷积层 等。
应当理解的是,神经网络可以包括多个第一功能层(例如,卷积层), 从而通过每个第一功能层对应的多个第一忆阻器阵列并行执行该第一功能 层的操作,从而可以提高神经网络的并行度,进而可以实现对神经网络的运 行过程的进一步加速。例如,各个第一功能层对应的第一忆阻器阵列的数量 可以相同,也可以不同,本公开的实施例对此不作限制。
例如,上述第二功能层可以包括卷积层、降采样层、平坦化层和全连接 层等之一;例如,上述第三功能层可以包括卷积层和降采样层等之一。需要 说明的是,本公开的实施例对此均不做限制。
例如,图7A和图7B均示例性地示出了第一功能层包括3个第一忆阻 器阵列的情形,但不应视作对本公开的限制。也就是说,第一功能层包括的 第一忆阻器阵列的数量可以根据实际需求进行设置,本公开的实施例对此不 作限制。
例如,如图7A和图7B所示,上述基于忆阻器的神经网络的并行加速 方法包括:使用多个第一忆阻器阵列并行地执行第一功能层的操作并将操作 结果输出至第二功能层(图7A和图7B中未示出)。
例如,在一些实施例中,如图7A所示,首先,可以将第一功能层接收 的输入数据(如图7A中的数字图像“2”所示)拆分为与多个第一忆阻器阵列 一一对应的多个子输入数据(如图7A中的数字图像“2”拆分成的三部分所 示);然后,可以使用该多个第一忆阻器阵列并行地对该多个子输入数据执 行第一功能层的操作,以对应产生多个子操作结果;接着,还可以将该多个 子操作结果进行拼合并使用第二功能层对拼合结果执行第二功能层的操作。
例如,在一些示例中,如图7A所示,第一功能层为卷积层,第一功能 层包括的每个第一忆阻器阵列都可以采用如图5A所示的方式实现第一功能 层的卷积操作。
例如,在一些示例中,在由输入图像(即输入数据)拆分得到的多个子 输入图像(即子输入数据)中,相邻的子输入图像之间通常可以相互交叠, 当然也可以不交叠,本公开的实施例对此不作限制。例如,在一些示例中, 该多个子输入数据的尺寸大小基本相同,从而,各子输入数据由对应的第一 忆阻器阵列进行卷积处理需要耗用的时间基本相同,进而就整体而言可以加 快第一功能层的处理速度,即加快神经网络的处理速度。
例如,在一些示例中,该多个子输入数据可以按照任意顺序分别提供给 该多个第一忆阻器阵列,在此情况下,每个第一忆阻器阵列可以处理任一子 输入数据;例如,在另一些示例中,该多个子输入数据应当按照预定顺序分 别一一对应地提供给该多个第一忆阻器阵列,在此情况下,每个第一忆阻器 阵列可以处理与之对应的子输入数据。
例如,在使用一个第一忆阻器阵列对输入图像进行处理(参考图5A所 示)的情况下,第一功能层的操作耗用的时间记为t;在使用例如三个第一 忆阻器阵列对输入图像拆分得到的三幅子输入图像进行并行处理(参考图 7A所示)的情况下,第一功能层的操作耗用的时间减少为t/3。由此,图7A 所示的并行加速方法可以实现对神经网络处理单个输入数据的运行过程的 加速。
例如,在一些示例中,第二功能层可以为卷积层、降采样层、平坦化层 和全连接层等之一,本公开的实施例对此不作限制。
例如,在另一些实施例中,如图7B所示,首先,可以将第一功能层接 收的多个输入数据(如图7B中的数字图像“2”、“1”、“4”所示)分别提供给 多个第一忆阻器阵列;然后,可以使用该多个第一忆阻器阵列至少部分并行 地对接收的多个输入数据执行第一功能层的操作,以对应产生多个子操作结 果;接着,还可以使用第二功能层分别对该多个子操作结果执行第二功能层 的操作。
例如,在一些示例中,如图7B所示,第一功能层为卷积层,第一功能 层包括的每个第一忆阻器阵列都可以采用如图5A所示的方式实现第一功能 层的卷积操作。例如,该多个输入数据可以按照任意顺序分配给该多个第一 忆阻器阵列,在此情况下,每个第一忆阻器阵列可以处理任一输入数据。例 如,该多个输入数据可以互不相同,当然也可以部分或全部相同,本公开的 实施例对此不作限制。
例如,在使用一个第一忆阻器阵列对输入图像进行处理(参考图5A所 示)的情况下,第一功能层的操作耗用的时间记为t1,后续功能层的操作耗 用的时间记为t2,若t1>t2,则使用神经网络处理三幅输入图像所耗用的时 间至少约为3*t1+t2(例如,在第一功能层处理当前的一幅输入图像的数据 时,后续功能层可以处理完上一幅输入图像的相关数据)。相比之下,在使 用例如三个第一忆阻器阵列对三幅输入图像进行并行处理(参考图7B所示) 的情况下,则使用神经网络处理三幅输入图像所耗用的时间约为t1+3*t2, 由此,节省的时间为2*(t1-t2)。即,图7B所示的并行加速方法可以实现 对神经网络处理多个输入数据的运行过程的加速。
应当理解的是,图7A所示的并行加速方法和图7B所示的并行加速方 法,可以综合性地应用于同一个神经网络(例如,同一个神经网络的不同的 第一功能层),本公开的实施例对此不作限制。
本公开的实施例提供的神经网络,可以采用上述并行加速方法使之运 行,在其运行过程中,将第一功能层的操作通过多个第一忆阻器阵列并行执 行,从而可以实现对神经网络的运行过程的加速。该神经网络的架构思路及 其并行加速方法可以广泛适用于各种深度神经网络模型和不同类型的忆阻 器,有助于解决深度神经网络模型的速度失配问题。
本公开至少一实施例还提供一种基于忆阻器的神经网络的片外训练方 法。例如,该训练方法可以用于得到前述实施例提供的神经网络的参数。例 如,结合图6、图7A和图7B所示,该神经网络包括:多个依次设置的功能 层,其中,该多个功能层包括第一功能层和位于第一功能层之后的第二功能 层,第一功能层包括并行的多个第一忆阻器阵列,该多个第一忆阻器阵列用 于执行第一功能层的操作并将操作结果输出至第二功能层。
应当理解的是,神经网络的训练方法通常包括以下步骤:使用神经网络 对训练输入数据进行处理,以得到训练输出数据;基于训练输出数据,通过 损失函数计算神经网络的损失值;根据损失值对神经网络的参数进行修正; 以及,判断神经网络的训练是否满足预定条件,若不满足预定条件,则重复 执行上述训练过程;若满足预定条件,则停止上述训练过程,得到训练好的 神经网络。当然,在对神经网络进行训练时,通常还需要对神经网络的参数 进行初始化。例如,通常可以将神经网络的参数初始化为随机数,例如随机 数符合高斯分布,本公开的实施例对此不作限制。应当理解的是,本公开的 实施例提供的神经网络的训练方法也可以参考上述常用的训练步骤和过程。
通过片外训练得到各权重参数后,对忆阻器阵列中的各个器件的电导通 过置位和复位操作进行编程,实现相应的权重。具体的编程方法以及忆阻器 权重的组织方式不受限制。
图8为本公开一些实施例提供的一种神经网络的片外训练方法的流程 图。例如,如图8所示,该片外训练方法可以包括以下步骤S10至步骤S30。
步骤S10:构建神经网络的数学模型。
例如,在一些示例中,可以使用软件(例如,程序代码等)构建本公开 的实施例提供的数学模型。
步骤S20:对数学模型进行训练,以得到训练好的数学模型。
例如,在一些示例中,可以基于处理器和存储器等运行及训练上述数学 模型。例如,数学模型的训练步骤和过程可以参考常用的训练步骤和过程, 在此不再重复赘述。
步骤S30:将训练好的数学模型的权重参数写入神经网络对应的忆阻器 阵列。
例如,在一些示例中,数学模型中的第一功能层包括一份第一权重参数。 在数学模型的训练过程中,正向传播时,由该份第一权重参数对第一功能层 的训练输入数据进行处理;反向传播时,对该份第一权重参数进行修正以得 到训练好的第一功能层的第一权重参数。在此情况下,将训练好的数学模型 的权重参数写入神经网络对应的忆阻器阵列,即步骤S30,包括:将训练好 的数学模型中的第一功能层的该份第一权重参数分别写入多个第一忆阻器 阵列。此时,第一功能层对应的各第一忆阻器阵列包括相同的电导权重矩阵。
例如,在另一些示例中,数学模型中的第一功能层包括多份第一权重参 数。在数学模型的训练过程中,正向传播时,将数学模型中的第一功能层接 收的训练输入数据拆分为与该多份第一权重参数一一对应的多个训练子输 入数据;使用该多份第一权重参数并行地对该多个训练子输入数据执行第一 功能层的操作,以产生多个训练子操作结果;以及,基于每份第一权重参数 对应的训练子操作结果以及该训练子操作结果对应的训练中间数据,更新该 份第一权重参数的参数值。根据片外训练具体方式的不同,各个阵列可以写 入相同的权重参数,也可以写入不同的权重参数。
在此情况下,将训练好的数学模型的权重参数写入神经网络对应的忆阻 器阵列,即步骤S30,包括:将训练好的数学模型中的第一功能层的多份第 一权重参数分别一一对应地写入多个第一忆阻器阵列。此时,得到的神经网 络可以用于执行图7A所示的并行加速方法。
例如,在又一些示例中,数学模型中的第一功能层包括多份第一权重参 数。在数学模型的训练过程中,正向传播时,将数学模型中的第一功能层接 收的多个训练输入数据分别提供给该多份第一权重参数;使用该多份第一权 重参数至少部分并行地对该多个训练输入数据执行第一功能层的操作,以产 生多个训练子操作结果;以及,基于每份第一权重参数对应的训练子操作结 果以及该训练子操作结果对应的训练中间数据,更新该份第一权重参数的参 数值。
在此情况下,将训练好的数学模型的权重参数写入神经网络对应的忆阻 器阵列,即步骤S30,包括:将训练好的数学模型中的第一功能层的多份第 一权重参数分别一一对应地写入多个第一忆阻器阵列。此时,得到的神经网 络可以用于执行图7B所示的并行加速方法,也可以用于执行图7A所示的 并行加速方法。
因此,在本公开的另一些实施例提供的基于忆阻器的神经网络的并行加 速方法中,神经网络的权重参数通过上述片外训练方法得到,神经网络的权 重参数包括第一功能层的权重参数,第一功能层的权重参数被写入多个第一 忆阻器阵列,以确定多个第一忆阻器阵列的电导。还应当理解的是,通过上 述片外训练方法得到的神经网络的权重参数还可以包括除所述第一功能层 之外的其它功能层的权重参数,所述其他功能层的权重参数可以被写入其他 功能层对应的忆阻器阵列,以确定其他功能层对应的忆阻器阵列的电导。
本公开至少一实施例还提供一种基于忆阻器的神经网络的并行加速处 理器,该并行加速处理器可以用于执行前述并行加速方法。图9为本公开一 些实施例提供的一种基于忆阻器的神经网络的并行加速处理器的示意图。
例如,如图6所示,该神经网络包括多个依次设置的功能层,该多个功 能层包括第一功能层。例如,如图9所示,该并行加速处理器包括多个计算 核心,各个忆阻器计算核心之间可以互相通信;同时,每个计算核心内部又 包括多个忆阻器阵列计算单元。
例如,在一些实施例中,多个忆阻器阵列计算单元包括多个第一忆阻器 阵列计算单元,第一功能层的权重参数被写入多个第一忆阻器阵列计算单元 中,多个第一忆阻器阵列计算单元被配置为并行地执行所述第一功能层的操 作对应的运算。也就是说,可以将神经网络中某一功能层的权重编程写入不 同计算核心或忆阻器阵列计算单元,从而实现多个忆阻器阵列对该功能层的 操作的并行加速计算。例如,多个第一忆阻器阵列的可以采用前述任一实施 例提供的并行加速方法实现第一功能层的操作的并行加速计算。
图10为图9所示的并行加速处理器中的忆阻器阵列计算单元的结构示 意图。以下,结合图9所示的忆阻器阵列计算单元的结构,对忆阻器阵列计 算单元的工作原理进行详细说明。
例如,如图10所示,忆阻器阵列计算单元包括忆阻器阵列和外围电路。 例如,在一些示例中,如图10所示,忆阻器阵列包括128×128个忆阻器, 本公开的实施例包括但不限于此。例如,在一些示例中,如图10所示,外 围电路包括开关阵列、多路选择器、采样保持模块(S&H模块)、模数转换 模块(ADC)和移位&累加器(Sh&A)等。
例如,在一些示例中,如图10所示,忆阻器阵列计算单元的输入包括 多个8比特(8-bit)的输入数据。例如,每个输入数据的每一比特对应一个 控制脉冲,每个控制脉冲按每一比特的取值进行编码,具体编码方式如下所 示:
Figure BDA0002264319610000171
其中,s=0,…,B-1,B表示输入数据的比特数(例如,如图10所示,B=8), Vk表示第k行输入数据对应的电压激励,VR表示恒定的基准电压(例如, 图10中所示的读电压),ak,s表示第[s]个控制脉冲的电平。例如,在一些示 例中,ak,s可以对应于8比特的输入数据ak的二进制编码(ak,7,ak,6,…,ak,0) 之一。ak,s=1时,表示第[s]个控制脉冲为高电平,从而可以开启开关阵列中 相应的开关,将读电压VR提供至忆阻器阵列的第k行;ak,s=0时,表示第[s] 个控制脉冲为低电平,从而可以关闭开关阵列中相应的开关,同时,开关阵 列中的另一开关开启,将接地电平提供至忆阻器阵列的第k行,即此时不向 忆阻器阵列的第k行提供信号。
应当理解的是,如图10所示,一方面,多个输入数据并行地输入忆阻 器阵列;另一方面,每个输入数据被对应表征为多个(例如,8个)控制脉 冲,该多个控制脉冲串行地输入忆阻器阵列。当然,不同的输入数据对应的 同一次序的控制脉冲并行地输入忆阻器阵列。
根据基尔霍夫定律,忆阻器阵列的输出电流可以根据下述公式得出:
Figure BDA0002264319610000181
其中,k=1,…,m,j=1,…,n,m表示忆阻器阵列的行数,n表示忆阻器阵列 的列数,ij表示全部输入数据对应的忆阻器阵列的第j列的输出电流,ij,s表 示全部的第[s]个控制脉冲对应的忆阻器阵列的第j列的脉冲输出电流,gk,j表示忆阻器阵列的电导矩阵。
根据该公式可知,当全部的输入数据对应的全部的第[s]个控制脉冲施加 至开关阵列时,读电压VR可以在高电平的控制脉冲的调控下并行地施加至 忆阻器阵列,从而,忆阻器阵列相应地输出多个脉冲输出电流ij,s,其中,
Figure BDA0002264319610000182
需要说明的是,在图10所示的实施例中,并不直接根据上述公式对各 个控制脉冲对应的脉冲输出电流进行加权(脉冲输出电流ij,s对应的权值为 2s)求和以得到第j列的输出电流ij。例如,如图10所示,每个脉冲输出电 流经过采样保持(S&H)模块转换为可以保持住的电压信号,然后通过模数 转换模块量化为数字信息(例如,二进制数字信息),最后通过移位&累加器 将各脉冲输出电流对应的二进制数字信息进行移位累加。例如,脉冲输出电 流ij,1对应的二进制数字信息相对于脉冲输出电流ij,0对应的二进制数字信息 前移一位(即前者的最低比特位对应于后者的倒数第二低比特位),脉冲输 出电流ij,2对应的二进制数字信息相对于脉冲输出电流ij,1对应的二进制数字 信息前移一位,…,以此类推。
例如,在一些实施例中,如图10所示,忆阻器阵列的每一列的输出可 以通过两组采样保持模块交替进行转换,从而增加硬件工作时的并行性。同 时,为节省处理器芯片的功耗和面积,对模数转换(ADC)模块可以采用时 分复用的方式进行工作,例如4列输出共享一个模数转换模块。在忆阻器阵 列计算单元工作时,如果当前时刻以第[s]个比特(即第[s]个控制脉冲)作为 计算单元的输入信号,通过切换信号控制开关阵列以选通第一组采样保持模 块,将列上的脉冲输出电流同时转化为相应的电压输出;同时,模数转换模 块在多路选择器的辅助下,高速量化上一时刻(即第[s-1]个控制脉冲对应的 时刻)的脉冲输出电流。紧接着,在下一时刻,以第[s+1]个比特(即第[s+1] 个控制脉冲)作为计算单元的输入信号,通过切换信号控制开关阵列以选通 第二组采样保持模块,同时模数转换模块量化之前第一组采样保持模块保持 下来的电压值。例如,在忆阻器阵列计算单元工作过程中,所有的开关切换 操作都可以通过控制多路选择器实现。
需要说明的是,图9所示的并行加速处理器和图10所示的忆阻器阵列 计算单元均是示例性的,本公开的实施例对其具体实现形式和细节均不作限 制。
本公开的实施例提供的并行加速处理器的技术效果可以参考前述实施 例中关于并行加速方法的相应描述,在此不再赘述。
本公开至少一实施例还提供一种基于忆阻器的神经网络的并行加速装 置。图11为本公开一些实施例提供的一种基于忆阻器的神经网络的并行加 速装置的示意框图。例如,如图11所示,该并行加速装置包括上述实施例 提供的并行加速处理器以及与该并行加速处理器连接的输入接口和输出接 口。例如,该并行加速装置可以通过其中的并行加速处理器执行前述并行加 速方法。
例如,在一些示例中,如图11所示,该并行加速装置还可以包括系统 总线,并行加速处理器及输入接口和输出接口之间可以通过系统总线互相通 信。例如,输入接口被配置为从外部计算机设备、从用户等处接收指令以控 制所述并行加速处理器的运行等。例如,并行加速装置被配置为输出所述并 行加速处理器的运行结果等。例如,通过输入接口和输出接口与并行加速装 置通信的外部设备可被包括在提供任何类型的用户可与之交互的用户界面 的环境中。用户界面类型的示例包括图形用户界面、自然用户界面等。例如, 图形用户界面可接受来自用户采用诸如键盘、鼠标、遥控器等之类的输入设 备的输入,以及在诸如显示器之类的输出设备上提供输出。此外,自然用户 界面可使得用户能够以无需受到诸如键盘、鼠标、遥控器等之类的输入设备 强加的约束的方式来与并行加速装置交互。相对地,自然用户界面可依赖于 语音识别、触摸和指示笔识别、屏幕上和屏幕附近的手势识别、空中手势、 头部和眼睛跟踪、语音和语音、视觉、触摸、手势、以及机器智能等。
另外,并行加速装置尽管在图11中被示出为单个系统,但可以理解, 并行加速装置500也可以是分布式系统,还可以布置为云设施(包括公有云 或私有云)。因此,例如,若干设备可以通过网络连接进行通信并且可共同 执行被描述为由并行加速装置执行的任务。
例如,并行加速方法的运行过程可以参考上述并行加速方法的实施例中 的相关描述,重复之处在此不再赘述。
需要说明的是,本公开的实施例提供的并行加速装置是示例性的,而非 限制性的,根据实际应用需要,该并行加速装置还可以包括其他常规部件或 结构,例如,为实现并行加速装置的必要功能,本领域技术人员可以根据具 体应用场景设置其他的常规部件或结构,本公开的实施例对此不作限制。
本公开的实施例提供的并行加速装置的技术效果可以参考上述实施例 中关于并行加速方法和并行加速处理器的相应描述,在此不再赘述。
对于本公开,有以下几点需要说明:
(1)本公开实施例附图中,只涉及到与本公开实施例涉及到的结构, 其他结构可参考通常设计。
(2)在不冲突的情况下,本公开同一实施例及不同实施例中的特征可 以相互组合。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变 化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应 以权利要求的保护范围为准。

Claims (14)

1.一种基于忆阻器的神经网络的并行加速方法,其中,所述神经网络包括:多个依次设置的功能层,多个功能层包括第一功能层和位于所述第一功能层之后的第二功能层,所述第一功能层包括并行的多个第一忆阻器阵列,所述多个第一忆阻器阵列用于并行地独立执行所述第一功能层的操作并分别将操作结果输出至所述第二功能层,所述神经网络的权重参数包括所述第一功能层的多份权重参数,所述第一功能层的多份权重参数被分别一一对应写入所述多个第一忆阻器阵列,以分别确定所述多个第一忆阻器阵列的电导;
所述并行加速方法包括:
使用所述多个第一忆阻器阵列并行地独立执行所述第一功能层的操作并分别将所述操作结果输出至所述第二功能层。
2.根据权利要求1所述的并行加速方法,其中,使用所述多个第一忆阻器阵列并行地执行所述第一功能层的操作并将所述操作结果输出至所述第二功能层,包括:
将所述第一功能层接收的输入数据拆分为与所述多个第一忆阻器阵列一一对应的多个子输入数据;以及
使用所述多个第一忆阻器阵列并行地对所述多个子输入数据执行所述第一功能层的操作,以对应产生多个子操作结果。
3.根据权利要求2所述的并行加速方法,还包括:
将所述多个子操作结果进行拼合并使用所述第二功能层对拼合结果执行所述第二功能层的操作。
4.根据权利要求2或3所述的并行加速方法,其中,所述多个子输入数据的尺寸大小基本相同。
5.根据权利要求1所述的并行加速方法,其中,使用所述多个第一忆阻器阵列并行地执行所述第一功能层的操作并将所述操作结果输出至所述第二功能层,包括:
将所述第一功能层接收的多个输入数据分别提供给所述多个第一忆阻器阵列;以及
使用所述多个第一忆阻器阵列至少部分并行地对接收的所述多个输入数据执行所述第一功能层的操作,以对应产生多个子操作结果。
6.根据权利要求5所述的并行加速方法,还包括:
使用所述第二功能层分别对所述多个子操作结果执行所述第二功能层的操作。
7.根据权利要求5或6所述的并行加速方法,其中,所述多个输入数据互不相同。
8.根据权利要求1-3和5-6中任一项所述的并行加速方法,其中,所述神经网络为卷积神经网络。
9.根据权利要求8所述的并行加速方法,其中,所述第一功能层为所述神经网络的初始卷积层。
10.根据权利要求1-3和5-6中任一项所述的并行加速方法,其中,所述多个功能层还包括第三功能层,所述第三功能层的输出被提供至所述第一功能层。
11.根据权利要求1-3和5-6中任一项所述的并行加速方法,其中,所述神经网络的权重参数通过片外训练得到。
12.根据权利要求11所述的并行加速方法,其中,所述神经网络的权重参数还包括除所述第一功能层之外的其它功能层的权重参数,所述其他功能层的权重参数被写入所述其他功能层对应的忆阻器阵列,以确定所述其他功能层对应的忆阻器阵列的电导。
13.一种基于忆阻器的神经网络的并行加速处理器,其中,所述神经网络包括多个依次设置的功能层,多个功能层包括第一功能层,所述并行加速处理器包括多个忆阻器阵列计算单元,所述多个忆阻器阵列计算单元包括多个第一忆阻器阵列计算单元,所述多个第一忆阻器阵列计算单元被配置为并行地独立执行所述第一功能层的操作对应的运算,
所述神经网络的权重参数包括所述第一功能层的多份权重参数,所述第一功能层的多份权重参数被分别一一对应写入所述多个第一忆阻器阵列,以分别确定所述多个第一忆阻器阵列的电导。
14.一种基于忆阻器的神经网络的并行加速装置,包括:根据权利要求13所述的并行加速处理器,以及与所述并行加速处理器连接的输入接口和输出接口;所述输入接口被配置为接收指令以控制所述并行加速处理器的运行,所述输出接口被配置为输出所述并行加速处理器的运行结果。
CN201911082236.3A 2019-11-07 2019-11-07 基于忆阻器的神经网络的并行加速方法及处理器、装置 Active CN110807519B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201911082236.3A CN110807519B (zh) 2019-11-07 2019-11-07 基于忆阻器的神经网络的并行加速方法及处理器、装置
KR1020227019213A KR20220088943A (ko) 2019-11-07 2020-01-10 멤리스터 기반 신경망 병렬 가속 방법, 프로세서 및 장치
US17/049,348 US20220335278A1 (en) 2019-11-07 2020-01-10 Parallel acceleration method for memristor-based neural network, parallel acceleration processor based on memristor-based neural network and parallel acceleration device based on memristor-based neural network
PCT/CN2020/071424 WO2021088248A1 (zh) 2019-11-07 2020-01-10 基于忆阻器的神经网络的并行加速方法及处理器、装置
JP2022526246A JP7399517B2 (ja) 2019-11-07 2020-01-10 メモリスタに基づくニューラルネットワークの並列加速方法およびプロセッサ、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911082236.3A CN110807519B (zh) 2019-11-07 2019-11-07 基于忆阻器的神经网络的并行加速方法及处理器、装置

Publications (2)

Publication Number Publication Date
CN110807519A CN110807519A (zh) 2020-02-18
CN110807519B true CN110807519B (zh) 2023-01-17

Family

ID=69501496

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911082236.3A Active CN110807519B (zh) 2019-11-07 2019-11-07 基于忆阻器的神经网络的并行加速方法及处理器、装置

Country Status (5)

Country Link
US (1) US20220335278A1 (zh)
JP (1) JP7399517B2 (zh)
KR (1) KR20220088943A (zh)
CN (1) CN110807519B (zh)
WO (1) WO2021088248A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762990B2 (en) * 2020-04-07 2023-09-19 Microsoft Technology Licensing, Llc Unstructured text classification
CN112070220B (zh) * 2020-08-06 2023-01-17 北京大学 一种基于非线性器件的原位自激活神经网络电路及神经网络运算方法
FR3113326B1 (fr) * 2020-08-06 2023-01-06 St Microelectronics Rousset Procédé de calcul convolutif intra-mémoire et circuit intégré correspondant
CN111949405A (zh) * 2020-08-13 2020-11-17 Oppo广东移动通信有限公司 资源调度方法、硬件加速器及电子设备
CN112215855B (zh) * 2020-10-20 2024-04-12 清华大学 基于忆阻器阵列实现图像连通区域判断的方法及电子装置
US12003535B2 (en) 2021-03-01 2024-06-04 Microsoft Technology Licensing, Llc Phishing URL detection using transformers
CN115481562B (zh) * 2021-06-15 2023-05-16 中国科学院微电子研究所 多并行度优化方法、装置、识别方法和电子设备
CN113643175A (zh) * 2021-08-16 2021-11-12 清华大学 数据处理方法及电子装置
CN113610220B (zh) * 2021-08-27 2023-12-26 中国人民解放军国防科技大学 神经网络模型的训练方法、应用方法及装置
CN114463161B (zh) * 2022-04-12 2022-09-13 之江实验室 一种基于忆阻器的神经网络处理连续图像的方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017007318A1 (en) * 2015-07-07 2017-01-12 Technische Universiteit Delft Scalable computation architecture in a memristor-based array

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02266458A (ja) * 1989-04-06 1990-10-31 Nec Corp ニューラルネットワークシミュレーション装置
US9811775B2 (en) * 2012-12-24 2017-11-07 Google Inc. Parallelizing neural networks during training
KR20180110080A (ko) * 2016-02-08 2018-10-08 스페로 디바이시즈 인코포레이티드 아날로그 코-프로세서
GB2552014B (en) * 2016-07-07 2020-05-13 Advanced Risc Mach Ltd Reconfigurable artificial neural networks comprising programmable non-volatile memory elements
CN106203621B (zh) * 2016-07-11 2019-04-30 北京深鉴智能科技有限公司 用于卷积神经网络计算的处理器
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
CN107704922B (zh) * 2017-04-19 2020-12-08 赛灵思公司 人工神经网络处理装置
JP6724863B2 (ja) * 2017-05-29 2020-07-15 株式会社デンソー 畳み込みニューラルネットワーク
US20210264679A1 (en) * 2017-07-25 2021-08-26 Facebook Technologies, Llc Smart sensor
US20210098611A1 (en) * 2019-10-01 2021-04-01 Northwestern University Dual-gated memtransistor crossbar array, fabricating methods and applications of same
CN108009640B (zh) * 2017-12-25 2020-04-28 清华大学 基于忆阻器的神经网络的训练装置及其训练方法
CN108268938B (zh) * 2018-01-24 2020-04-21 清华大学 神经网络及其信息处理方法、信息处理系统
JP6569755B1 (ja) * 2018-03-06 2019-09-04 Tdk株式会社 ニューラルネットワーク装置、信号生成方法およびプログラム
CN109460817B (zh) * 2018-09-11 2021-08-03 华中科技大学 一种基于非易失存储器的卷积神经网络片上学习系统
US10726096B2 (en) * 2018-10-12 2020-07-28 Hewlett Packard Enterprise Development Lp Sparse matrix vector multiplication with a matrix vector multiplication unit
EP3889844A4 (en) * 2018-12-29 2021-12-29 Huawei Technologies Co., Ltd. Neural network system and data processing technology
CN109800870B (zh) * 2019-01-10 2020-09-18 华中科技大学 一种基于忆阻器的神经网络在线学习系统
US11003955B1 (en) * 2019-05-03 2021-05-11 Zoox, Inc. Machine-learning model structural merging
US11568200B2 (en) * 2019-10-15 2023-01-31 Sandisk Technologies Llc Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017007318A1 (en) * 2015-07-07 2017-01-12 Technische Universiteit Delft Scalable computation architecture in a memristor-based array

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"An Energy-Efficient Digital ReRam-Crossbar-Based CNN With Bitwise Parallelism";Leibin ni et al;《Exploratory Solid-State Computational Devices and Circuits》;20170525;第3卷;第1-10页 *
"In situ training of feed-forward and recurrent convolutional memristor networks";Zhongrui Wang et al;《nature machine intelligence》;20190909;第1卷;第434-442页 *
"基于忆阻器的MLP神经网络仿真研究";秦超;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20190515(第05期);第I137-92页 *
"基于新型忆阻器的存内计算";林钰登等;《微纳电子与智能制造》;20190630;第1卷(第02期);第35-46页 *

Also Published As

Publication number Publication date
KR20220088943A (ko) 2022-06-28
WO2021088248A1 (zh) 2021-05-14
US20220335278A1 (en) 2022-10-20
JP2022554371A (ja) 2022-12-28
JP7399517B2 (ja) 2023-12-18
CN110807519A (zh) 2020-02-18

Similar Documents

Publication Publication Date Title
CN110807519B (zh) 基于忆阻器的神经网络的并行加速方法及处理器、装置
US9646243B1 (en) Convolutional neural networks using resistive processing unit array
US10909449B2 (en) Monolithic multi-bit weight cell for neuromorphic computing
Gao et al. Demonstration of convolution kernel operation on resistive cross-point array
US20200012924A1 (en) Pipelining to improve neural network inference accuracy
US11087204B2 (en) Resistive processing unit with multiple weight readers
Fouda et al. Spiking neural networks for inference and learning: A memristor-based design perspective
US11531898B2 (en) Training of artificial neural networks
US11544540B2 (en) Systems and methods for neural network training and deployment for hardware accelerators
CN112825153A (zh) 神经网络系统中数据处理的方法、神经网络系统
US20210049448A1 (en) Neural network and its information processing method, information processing system
CN113077829A (zh) 基于忆阻器阵列的数据处理方法、电子装置
CN110569962B (zh) 一种基于1t1r存储器阵列的卷积计算加速器及其操作方法
CN113643175A (zh) 数据处理方法及电子装置
Sun et al. Cascaded architecture for memristor crossbar array based larger-scale neuromorphic computing
CN112150343A (zh) 基于忆阻器阵列实现二值形态学操作的方法及电子装置
US11610101B2 (en) Formation failure resilient neuromorphic device
CN112215855B (zh) 基于忆阻器阵列实现图像连通区域判断的方法及电子装置
CN112734022B (zh) 一种具有识别和排序功能的四字符忆阻神经网络电路
US11556770B2 (en) Auto weight scaling for RPUs
de Lima et al. Quantization-aware in-situ training for reliable and accurate edge ai
KR20230005309A (ko) 아날로그 인공지능 네트워크 추론을 위한 행별 컨볼루션 신경망 매핑을 위한 효율적 타일 매핑
Aguirre et al. Line resistance impact in memristor-based multi layer perceptron for pattern recognition
US20240037394A1 (en) System and method for neural network multiple task adaptation
CN114020239A (zh) 数据处理方法及电子装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40023687

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant