CN114819051B - 用于执行神经网络计算的模拟电路的校准方法及装置 - Google Patents
用于执行神经网络计算的模拟电路的校准方法及装置 Download PDFInfo
- Publication number
- CN114819051B CN114819051B CN202210062183.4A CN202210062183A CN114819051B CN 114819051 B CN114819051 B CN 114819051B CN 202210062183 A CN202210062183 A CN 202210062183A CN 114819051 B CN114819051 B CN 114819051B
- Authority
- CN
- China
- Prior art keywords
- calibration
- neural network
- layer
- analog circuit
- normalization
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06N3/09—Supervised learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Nonlinear Science (AREA)
- Image Analysis (AREA)
- Analogue/Digital Conversion (AREA)
Abstract
本发明公开一种用于执行神经网络计算的模拟电路的校准方法,包括:向预训练神经网络提供校准输入,该神经网络至少包括一个给定层,该给定层具有存储在模拟电路中的预训练权重;计算来自该模拟电路的校准输出的统计数据,该模拟电路使用该预训练权重执行该给定层的张量运算;在该给定层之后的归一化层确定在神经网络推理期间要执行的归一化运算,其中该归一化运算结合该校准输出的统计数据;以及将该归一化运算的配置写入存储器,同时保持该预训练权重不变。本发明通过实施对模拟电路的校准,从而使得模拟电路在执行神经网络计算的结果更加精确。
Description
技术领域
本发明涉及电路技术领域,尤其涉及一种用于执行神经网络计算的模拟电路的校准方法及装置。
背景技术
深度神经网络(deep neural network,DNN)是具有输入层、输出层以及在输入层和输出层之间的一个或多个隐藏层的神经网络。每一层对一个或多个张量(tensor)执行操作或运算(operation)。张量是一个数学对象(mathematical object),它可以是零维(又名定标器(scaler))、一维(又名向量)、二维(又名矩阵)或多维(multi-dimensional)的。这些层(layer)执行的操作是数值计算,包括但不限于:卷积(convolution)、反卷积(deconvolution)、全连接操作(fully-connected operation)、标准化或归一化(normalization)、启动(activation)、池化(pooling)、重设大小(resizing)、逐元素算术(element-wise arithmetic)、连接(concatenation)、切片(slicing)等。一些层将过滤器(滤波器)权重应用于张量,例如在卷积操作中。
神经网络计算是计算密集型的并且经常导致高功耗。因此,边缘装置(edgedevice)上的神经网络推理(inference)需要快速且低功耗。与数字电路相比,设计良好的模拟电路可以加快推理速度并提高能效(energy efficiency)。然而,模拟计算比数位计算更容易受到电路非理想性(non-ideality)的影响,例如制程变化。电路非理想性降低了神经网络计算的准确性。然而,重新训练适合每个制造芯片的神经网络既昂贵又不可行。因此,提高模拟神经网络计算的准确性是一个挑战。
发明内容
有鉴于此,本发明提供一种用于执行神经网络计算的模拟电路的校准方法及装置,以解决上述问题。
根据本发明的第一方面,公开一种用于执行神经网络计算的模拟电路的校准方法,包括:
向预训练神经网络提供校准输入,该神经网络至少包括一个给定层,该给定层具有存储在模拟电路中的预训练权重;
计算来自该模拟电路的校准输出的统计数据,该模拟电路使用该预训练权重执行该给定层的张量运算;
在该给定层之后的归一化层确定在神经网络推理期间要执行的归一化运算,其中该归一化运算结合该校准输出的统计数据;以及
将该归一化运算的配置写入存储器,同时保持该预训练权重不变。
根据本发明的第二方面,公开一种用于执行神经网络计算的模拟电路的校准方法,包括:
由模拟电路使用存储在该模拟电路中的预训练权重对校准输入执行张量运算,以生成神经网络的给定层的校准输出;
接收在该给定层之后的归一化层的配置,其中该归一化层由归一化运算定义,该归一化运算结合该校准输出的统计信息;以及
执行神经网络推理,包括使用该预训练权重的给定层的给张量运算和给归一化层的给归一化运算。
根据本发明的第三方面,公开一种用于执行神经网络计算的装置,包括:
模拟电路,用于存储神经网络的至少给定层的预训练权重,其中该模拟电路用于:通过在校准期间使用该预训练权重对校准输入执行张量运算,从该给定层生成校准输出;以及使用该预训练权重执行神经网络推理,包括该给定层的该张量运算;以及
数字电路,用于接收该给定层之后的归一化层的配置,其中该归一化层由包含该校准输出的统计数据的归一化运算定义,并在该神经网络推理期间执行该归一化层的该归一化运算。
本发明的用于校准模拟电路以执行神经网络计算的方法由于包括:向预训练神经网络提供校准输入,该神经网络至少包括一个给定层,该给定层具有存储在模拟电路中的预训练权重;计算来自该模拟电路的校准输出的统计数据,该模拟电路使用该预训练权重执行该给定层的张量运算;在该给定层之后的归一化层确定在神经网络推理期间要执行的归一化运算,其中该归一化运算结合该校准输出的统计数据;以及将该归一化运算的配置写入存储器,同时保持该预训练权重不变。本发明通过实施对模拟电路的校准,从而使得模拟电路在执行神经网络计算的结果更加精确。因此本发明提出的方案避免了因为电路非理想性而降低神经网络计算的准确性,并且无需针对每个制造芯片进行重新训练以适合神经网络计算。
附图说明
图1是说明根据一个实施例可操作(或可运算)以执行神经网络计算的系统的框图。
图2是图示根据一个实施例的DNN层和硬件电路之间的映像的图。
图3是说明根据一个实施例的模拟电路的框图。
图4是说明根据一个实施例的校准过程的流程图。
图5图示了根据第一实施例由归一化层(normalization layer)执行的操作。
图6示出了根据第二实施例的归一化层执行的操作。
图7是图示根据一个实施例的用于校准用于神经网络计算的模拟电路的方法的流程图。
图8是图示根据另一实施例的用于神经网络计算的模拟电路校准方法的流程图。
具体实施方式
在下面对本发明的实施例的详细描述中,参考了附图,这些附图构成了本发明的一部分,并且在附图中通过图示的方式示出了可以实践本发明的特定的优选实施例。对这些实施例进行了足够详细的描述,以使本领域技术人员能够实践它们,并且应当理解,在不脱离本发明的精神和范围的情况下,可以利用其他实施例,并且可以进行机械,结构和程序上的改变。本发明。因此,以下详细描述不应被理解为限制性的,并且本发明的实施例的范围仅由所附权利要求限定。
将理解的是,尽管术语“第一”、“第二”、“第三”、“主要”、“次要”等在本文中可用于描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、这些层和/或部分不应受到这些术语的限制。这些术语仅用于区分一个元件、组件、区域、层或部分与另一区域、层或部分。因此,在不脱离本发明构思的教导的情况下,下面讨论的第一或主要元件、组件、区域、层或部分可以称为第二或次要元件、组件、区域、层或部分。
此外,为了便于描述,本文中可以使用诸如“在...下方”、“在...之下”、“在...下”、“在...上方”、“在...之上”之类的空间相对术语,以便于描述一个元件或特征与之的关系。如图所示的另一元件或特征。除了在图中描述的方位之外,空间相对术语还意图涵盖设备在使用或运行中的不同方位。该装置可以以其他方式定向(旋转90度或以其他定向),并且在此使用的空间相对描述语可以同样地被相应地解释。另外,还将理解的是,当“层”被称为在两层“之间”时,它可以是两层之间的唯一层,或者也可以存在一个或多个中间层。
术语“大约”、“大致”和“约”通常表示规定值的±20%、或所述规定值的±10%、或所述规定值的±5%、或所述规定值的±3%、或规定值的±2%、或规定值的±1%、或规定值的±0.5%的范围内。本发明的规定值是近似值。当没有具体描述时,所述规定值包括“大约”、“大致”和“约”的含义。本文所使用的术语仅出于描述特定实施例的目的,并不旨在限制本发明。如本文所使用的,单数术语“一”,“一个”和“该”也旨在包括复数形式,除非上下文另外明确指出。本文所使用的术语仅出于描述特定实施例的目的,并不旨在限制本发明构思。如本文所使用的,单数形式“一个”、“一种”和“该”也旨在包括复数形式,除非上下文另外明确指出。
将理解的是,当将“元件”或“层”称为在另一元件或层“上”、“连接至”、“耦接至”或“邻近”时,它可以直接在其他元件或层上、与其连接、耦接或相邻、或者可以存在中间元件或层。相反,当元件称为“直接在”另一元件或层“上”、“直接连接至”、“直接耦接至”或“紧邻”另一元件或层时,则不存在中间元件或层。
注意:(i)在整个附图中相同的特征将由相同的附图标记表示,并且不一定在它们出现的每个附图中都进行详细描述,并且(ii)一系列附图可能显示单个项目的不同方面,每个方面都与各种参考标签相关联,这些参考标签可能会出现在整个序列中,或者可能只出现在序列的选定图中。
本发明的实施例提供了一种用于校准模拟电路以提高模拟神经网络计算的准确性的装置和方法。该装置可以包括用于根据深度神经网络(DNN)模型执行神经网络计算的模拟电路和数字电路。DNN模型包括映像到模拟电路的第一组层(“A层”)和映像到数字电路的第二组层(“D层”)。每一层都由相应的操作(或运算)定义。例如,卷积层由相应的滤波器权重和用于执行卷积的参数定义。DNN模型在加载到装置之前进行了预训练(pre-trained)。然而,在不同芯片上制作的模拟电路可能具有不同的非理想特性。因此,同一组预训练的滤波器权重和参数可能会导致不同的模拟电路产生不同的输出。本文所述的校准消除或减少了不同芯片之间的差异。
在对每个A层的输出进行DNN训练后脱机执行校准。在校准过程中,校准输入被馈送到DNN并收集每个A层的校准输出的统计信息。校准输入可以是用于DNN训练的训练数据的子集。校准不同于重新训练,因为在训练中学习到的参数和权重在校准期间和之后保持不变。
在一些实施例中,每个A层的校准输出的统计数据用于修改或替换DNN模型中定义的一些操作。统计数据可用于修改比特于DNN模型中A层之后的批归一化(batchnormalization,BN)层。或者,统计数据可用于定义一组适用于A层输出的乘加运算(multiply-and-add operation)。在下面的描述中,术语“归一化层”是指紧接在A层之后并且对A层的输出应用归一化操作的层。归一化操作是根据A层的校准输出的统计信息确定的。在校准和配置归一化层之后,装置根据校准后的包含归一化层的DNN模型进行推理。
在一个实施例中,由A层和D层执行的张量运算可以是卷积运算。A层和D层执行的卷积可以是相同类型的卷积,也可以是不同类型的卷积。例如,A层可以执行普通卷积,D层可以执行深度卷积,反之亦然。通道(channel)尺寸与深度尺寸相同。在进行深度卷积时,输入的通道尺寸与输出的通道尺寸相同。假设一个卷积层接收M个通道的输入张量并产生N个通道的输出张量,其中M和N可以是相同的数字,也可以是不同的数字。在使用N个滤波器的“普通卷积”中,每个滤波器与输入张量的M个通道进行卷积以产生M个输出。将M个输出相加以生成输出张量的N个通道之一。在“深度卷积”中,M=N,并且在卷积中使用的M个滤波器与输入张量的M个通道之间存在一一对应关系,其中每个滤波器与输入张量的一个通道进行卷积以得到产生输出张量的一个通道。普通卷积又可称为正常卷积。在先前的方案中,均未有校准的方法。本发明的发明人创造性的提出校准的方案以解决先前技术的问题,而不是忽略该问题。本发明通过实施对模拟电路的校准,从而使得模拟电路在执行神经网络计算的结果更加精确。因此本发明提出的方案避免了因为电路非理想性而降低神经网络计算的准确性,并且无需针对每个制造芯片进行重新训练以适合神经网络计算。
图1是图示根据一个实施例的可操作(可运算)以执行神经网络计算的装置100的框图。装置100包括一个或多个通用和/或专用数字电路110,例如中央处理单元(centralprocessing unit,CPU)、图形处理单元(graphics processing unit,GPU)、数字处理单元(digital processing unit,DSP)、现场可程序设计门阵列(field-programmable gatearray,FPGA)、神经处理单元(neural processing unit,NPU)、算术和逻辑单元(arithmetic and logic unit,ALU)、专用集成电路(application-specific integratedcircuit,ASIC)和其他数字电路。装置100还包括一个或多个执行数学运算的模拟电路120;数学运算例如是张量运算(或操作)。在一个实施例中,模拟电路120可以是模拟存储器计算(analog compute-in-memory,ACIM)装置,其包括具有存储和嵌入式计算能力的单元阵列。例如,ACIM装置的单元阵列可以存储卷积层的滤波器权重。当输入数据到达单元阵列时,单元阵列通过产生对应于滤波器权重和输入数据的卷积的输出电压电平(voltage level)来执行卷积。
在一个实施例中,数字电路110耦合到存储器130,存储器130可以包括诸如动态随机接入存储器(dynamic random-access memory,DRAM)、静态随机接入存储器(staticrandom access memory,SRAM)、闪存和其他非瞬态机器读取的存储器装置存储介质;例如,易失性或非易失性存储装置。为了简化说明,存储器130被表示为一个块;然而,应当理解,存储器130可以表示存储器组件的层次结构,例如高速缓冲存储器、系统内存、固态或磁存储装置等。数字电路110执行存储在存储器130中的指令以对一个或多个神经网络层执行诸如张量操作(或运算)和归一化之类的操作(或运算)。
在一个实施例中,装置(或设备)100还包括控制器140,用于调度和分配在DNN模型中定义的操作给数字电路110和模拟电路120。在一个实施例中,控制器140可以是数字电路110的一部分。在一个实施例中,装置100还包括校准电路150,用于执行模拟电路120的校准。校准电路150以虚线轮廓示出,以显示它可以位于替代位置。校准电路150可以与模拟电路120在同一芯片上;或者,校准电路150可以在与模拟电路120不同的芯片上,但是在相同的装置100中。在又一个实施例中,校准电路150可以在另一个系统或装置中,例如计算机或服务器。
装置100还可以包括用于通过有线和/或无线网络与另一个系统或装置通信的网络介面(网络接口)160。可以理解,为了简化说明,装置100可以包括图1中未示出的附加组件。在一个实施例中,数字电路110可以执行存储在存储器130中的指令以执行控制器140和/或校准电路150的操作。
图2是图示根据一个实施例的DNN模型200和硬件电路之间的映像的图。术语“映像”是指将DNN模型中定义的张量操作(或运算)分配给执行操作的硬件电路。在这个例子中,DNN模型包括多个卷积层(例如,CONV1-CONV5)。还参照图1,CONV1、CONV2和CONV3(“A层”)的操作可以分配给模拟电路120,而CONV4和CONV5(“D层”)的操作可以分配给数字电路110。卷积层到模拟电路120或数字电路110的分配可以由诸如计算复杂度、功耗、精度要求等标准来指导。CONV1、CONV2和CONV3的滤波器权重存储在模拟电路120,以及CONV3和CONV3的滤波器权重存储在可由数字电路110接入(accessible)的存储器装置(例如,图1中的存储器130)中。DNN模型(DNN Model)200可以包括附加层(例如,池化、ReLU(RectifiedLinear Unit,线性整流函数)等),为了简化说明,图2中省略了这些内容。
图2中的DNN模型200是经过校准的DNN;也就是说,它包括由校准产生的归一化层(N1、N2和N3)。每个归一化层都放置在相应A层的输出处。在第一实施例中,归一化层可以是由前一A层的校准输出的统计数据修改的修改后的BN层。在第二实施例中,归一化层可以将深度卷积应用于前一A层的输出,其中滤波器权重至少部分地从前一A层的校准输出的统计中获得的。从训练中学习到的与CONV1-CONV5相关联的滤波器权重存储在装置100(例如,模拟电路120和存储器130)中,并且在校准期间和校准之后它们不会改变。
图3是说明根据一个实施例的模拟电路120的框图。模拟电路120可以是包括用于数据存储和存储器计算的单元阵列的ACIM装置。存在各种ACIM装置的设计和实现;可以理解,模拟电路120不限于特定类型的ACIM装置。在该示例中,模拟电路120的单元阵列包括分别存储卷积层CONV1、CONV2和CONV3的滤波器权重的多个单元阵列部分(例如,单元阵列部分310、320和330)。例如单元阵列部分310存储卷积层CONV1的滤波器权重,单元阵列部分320存储卷积层CONV2的滤波器权重,单元阵列部分320存储卷积层CONV2的滤波器权重。模拟电路120耦接输入电路350及输出电路360,输入电路350及输出电路360分别缓冲卷积运算的输入数据及输出数据。输入电路350和输出电路360还可以包括用于在模拟和数字数据格式之间进行转换的转换电路。
图4是说明根据一个实施例的校准过程400的流程图。校准过程400开始于训练步骤410,此时DNN(例如,图2中的DNN模型200)通过数字电路使用一组训练数据进行训练;数字电路例如是计算机中的CPU等。训练产生卷积的滤波器权重(或过滤器权重)和批量归一化(或标准化)(例如,β和γ)的参数。数值ε用于避免零除值。卷积和批量归一化(batchnormalization)的训练方法在神经网络计算领域是已知的。在步骤420,滤波器权重和参数被加载到包括用于执行DNN推理的模拟和数字电路的装置(例如,图1中的装置100)。第一组滤波器权重存储在数字电路可接入(或访问)的存储器中,而第二组滤波器权重存储在模拟电路中。步骤430-450是校准步骤。在步骤430,向DNN提供校准输入,此时DNN被训练且未校准。在一个实施例中,校准输入可以是在步骤410使用的训练数据的子集。在步骤440,收集每个A层的校准输出,并且收集和计算校准输出的统计数据。在一个实施例中,统计数据可以包括校准输出的平均值和/或标准偏差。可以为每个校准输出启动计算统计数据(例如,平均值和/或标准偏差),包括所有维度(即高度、宽度和深度)。或者,对于跨高度和宽度维度的每个校准输出启动,可以按深度(即,每个通道)计算统计信息。在步骤440执行的动作也可以描述为,收集映像到模拟电路的每一层(“A层”)的校准输出,并计算校准输出的统计数据。
统计数据的计算可以由芯片上(on-chip)处理器或电路执行;或者,可以通过芯片外(off-chip)硬件或诸如计算机或服务器的其他装置来执行计算。在针对每个A层的步骤450,将统计数据合并到归一化操作(normalization operation)或运算中,归一化操作或运算定义了DNN中A层之后的归一化层。步骤450中,对于每个A层,确定A层之后的相应归一化层的归一化运算,其中归一化运算包含校准输出的统计信息。将参考图5和6提供归一化操作的非限制性示例。包括在步骤450确定的归一化层的DNN被称为校准的DNN(校准DNN)。在步骤460,校准的DNN被存储在装置中,其中校准的DNN包括每个A层的对应归一化层(存储校准后的DNN,校准后的DNN包括设备(或装置)中每个A层的相应归一化层)。在推理步骤470(步骤470是推理的步骤),装置根据校准的DNN执行神经网络推理(根据校准后的DNN进行DNN推理)。从步骤410的训练获得的滤波器权重保持不变并用于神经网络推理。
图5图示了根据第一实施例的归一化层500。还参考图2中的示例,归一化层500可以是N1、N2和N3中的任何一个。归一化层500可以是修改后的BN层。在经过训练的DNN中,未修改的BN层紧跟在A层510(例如,CONV1、CONV2和CONV3中的任何一个)之后。在训练期间,学习未修改后的BN层的参数(例如,β、γ和ε)。在将训练的DNN加载到装置100(图1)之后,执行校准过程400(图4)以校准映像到模拟电路120的层,模拟电路120的层包括A层510。
归一化层500由应用于从A层510输出的张量(由实线立方体550表示)输出的归一化操作定义。在校准期间,该张量被称为校准输出或校准输出启动。张量具有高度尺寸(H)、宽度尺寸(W)和深度尺寸(C),深度尺寸(C)也称为通道尺寸。归一化操作将每个xi(由虚线轮廓中的细长立方体表示)转换为A层510输出的张量(由实线立方体550表示)经过归一化操作或运算之后,然后传送给下一层520。xi和都延伸到整个深度尺寸或深度维度C。在图5的示例中,归一化层500将平均值μ和标准偏差(标准偏差)σ合并到归一化操作(或运算)中(也即归一化运算使用了包括平均值μ和标准偏差σ的参数)。在另一个实施例中,归一化层500可以将μ和σ中之一合并到归一化操作(或运算)中。平均值μ和标准偏差σ由A层510的校准输出计算得出,A层510包括所有维度(H、W和C)上的数据点(data point)。此外,归一化层500还结合了在训练中学习到的未修改的BN层的参数(例如,β和γ)。因此,归一化层500也被称为修改的BN层,其被修改为至少包含(或结合、合并)在校准输出的所有维度上计算的平均值。也即计算统计数据以包括校准输出所有维度的平均值。
图6图示了由根据第二实施例的归一化层600执行的操作。还参考图2中的示例,归一化层600可以是N1、N2和N3中的任何一个。归一化层600可以替代未校准的DNN中位于A层610(例如,CONV1、CONV2和CONV3中的任何一个)之后的BN层。在训练期间,学习了跨深度维度(depth-wise)的每个通道的深度参数(例如,βk、γk和ε),其中运行索引k标识特定通道。将经过训练的DNN被加载到装置100(图1)之后,执行校准过程400(图4)以校准映像到模拟电路120的层,模拟电路120的层包括A层610。
归一化层600由应用于来自A层610的张量(由实线中的每个立方体650表示)输出的归一化操作定义。在校准期间,该张量被称为校准输出或校准输出启动。张量具有高度尺寸(H)、宽度尺寸(W)和深度尺寸(C),深度尺寸(C)也称为通道尺寸。归一化操作(或运算)将每个Fk,i,j(由虚线轮廓的细长立方体的一个切片表示)转换为其中运行索引k标识特定通道。Fk,i,j和都是每通道张量(per-channel tensor)。来自A层610的张量(由实线中的每个立方体650表示)经过归一化操作或运算之后,然后传送给下一层620。在图6的示例中,归一化层600将每通道平均值(per-channel mean value)和每通道标准偏差(per-channel standard deviation)合并到归一化操作(或运算)中。在另一个实施例中,归一化层600可以将每通道平均值和每通道标准偏差中的一个合并(或包含、结合)到归一化操作中。每个通道平均值和每个通道标准偏差是根据A层610在C维度中每个通道的H和W维度的校准输出计算的。此外,归一化层500还结合(或包含)了在训练中学习的深度参数(例如,βk、γk和ε)。如图6所示,归一化操作包括深度乘加(depth-wise multiply-and-add)操作(或运算),该操作(或运算)至少包含(或结合)从校准输出的每个通道计算的深度(即每通道)平均值。也即计算统计数据以包括深度维度中多个通道中的每一个的校准输出的深度平均值。由于归一化层600中所示的乘法矩阵是对角矩阵(diagonal matrix),因此本示例中的深度方向(或深度维度)乘加运算也称为1x1深度方向(或深度维度)卷积运算(depth-wise convolution operation)。
图7是图示根据一个实施例的用于校准模拟电路以执行神经网络计算的方法700的流程图。方法700可以由校准电路(例如,图1的校准电路150)执行,该校准电路可以与模拟电路在同一芯片上、在不同芯片上或在模拟电路所在的不同装置中。
方法700开始于步骤710,此时校准电路将校准输入发送到预训练神经网络,该预训练神经网络至少包括具有存储在模拟电路中的预训练权重的给定层(given layer)(向预训练的神经网络提供校准输入,该神经网络包括至少具有存储在模拟电路中的预训练权重值(预训练权重)的给定层)。在步骤720,校准电路计算来自模拟电路的校准输出的统计数据,模拟电路使用预训练的权重(预训练权重)在校准输入上执行给定层的张量操作(或运算)(计算来自模拟电路的校准输出的统计信息,该模拟电路使用预训练权重对校准输入执行给定层的张量运算)。在步骤730,校准电路确定要在神经网络推理期间在给定层之后的归一化层处执行的归一化操作(或运算)。归一化操作(或运算)包含(或结合)校准输出的统计数据(确定在给定层之后的归一层的神经网络推理期间要执行的归一化运算,其中,归一化运算包含校准输出的统计信息)。在步骤740,校准电路将归一化操作的配置写入存储器。校准后预训练的权重(预训练权重)保持不变(将归一化运算的配置写入存储器,同时保持预训练权不变)。
图8是图示根据一个实施例的用于神经网络计算的模拟电路校准方法800的流程图。方法800可以由包括用于神经网络计算的模拟电路的装置执行;例如,图1的装置100。
方法800开始于步骤810,此时模拟电路使用存储在模拟电路和校准输入中的预训练权重对校准输入执行张量操作(运算)。通过执行张量运算,模拟电路生成神经网络给定层的校准输出(模拟电路使用存储在模拟电路中的预训练权重对校准输入执行张量运算,生成神经网络给定层的校准输出)。在步骤820,装置接收在给定层之后的归一化层的配置。归一化层由归一化操作(运算)定义,该操作(运算)包含(或结合)校准输出的统计信息(接收给定层之后的归一化层的配置,其中,归一化层由包含校准输出的统计信息的归一化运算定义)。在步骤830,装置使用预训练的权重和归一化层的归一化操作执行神经网络推理,神经网络推理包括给定层的张量操作(或运算)(使用预训练权重和归一化层的归一化运算执行神经网络推理,神经网络推理包括给定层的张量运算)。
在一个实施例中,在神经网络推理期间,分配模拟电路以使用预训练的权重执行给定层的张量操作(或运算),并且分配装置中的数字电路执行归一化层的归一化操作。换句话说,将给定层的张量运算分配给模拟电路执行;以及将归一化层的归一化运算分配给数字电路以在神经网络推理期间执行。
这里已经描述了各种功能组件或块。如本领域技术人员将理解的,功能块将优选地通过电路(专用电路或通用电路,其在一个或多个处理器和编码指令的控制下操作)实现,其通常包括晶体管,这些晶体管被配置为根据本文所述的功能和操作来控制电路的操作。
图4、7和8的流程图的操作已经参照图1的示例性实施例进行了描述。然而,应该理解,图4、7和8的流程图的操作可以由除图1的实施例之外的本发明的实施例来执行,并且图1的实施例可以执行与参考流程图讨论的那些不同的操作。虽然图4、7和8的流程图显示了由本发明的某些实施例执行的操作的特定顺序,但应该理解这种顺序是示例性的(例如,替代实施例可以以不同的顺序执行操作、组合某些操作、重叠某些操作等)。
本领域的技术人员将容易地观察到,在保持本发明教导的同时,可以做出许多该装置和方法的修改和改变。因此,上述公开内容应被解释为仅由所附权利要求书的界限和范围所限制。
Claims (11)
1.一种用于执行神经网络计算的模拟电路的校准方法,其特征在于,包括:
向预训练神经网络提供校准输入,该神经网络至少包括一个给定层,该给定层具有存储在模拟电路中的预训练权重;其中神经网络模型包括映像到模拟电路的第一组层和映像到数字电路的第二组层;在校准过程中,该校准输入被馈送到该神经网络并收集每个该第一组层的校准输出的统计信息;该校准输入是用于该神经网络训练的训练数据的子集;
计算来自该模拟电路的校准输出的统计数据,该模拟电路使用该预训练权重执行该给定层的张量运算;
在该给定层之后的归一化层确定在神经网络推理期间要执行的归一化运算,其中该归一化运算结合该校准输出的统计数据;以及
将该归一化运算的配置写入存储器,同时保持该预训练权重不变。
2.如权利要求1所述的校准方法,其特征在于,该模拟电路是模拟存储器计算装置。
3.如权利要求1所述的校准方法,其特征在于,计算来自该模拟电路的校准输出的统计数据进一步包括:
计算该统计数据以包括该校准输出的标准偏差和平均值中的至少一个。
4.如权利要求1所述的校准方法,其特征在于,该校准输出具有高度尺寸、宽度尺寸和深度尺寸,并且计算来自该模拟电路的该校准输出的统计数据进一步包括:
计算该统计数据以包括该校准输出所有维度的平均值。
5.如权利要求4所述的校准方法,其特征在于,其中该归一化层至少包含该平均值的批量归一化。
6.如权利要求1所述的校准方法,其特征在于,该校准输出具有高度尺寸、宽度尺寸和深度尺寸,并且计算来自该模拟电路的该校准输出的统计数据还包括:
计算该统计数据以包括深度维度中多个通道中的每一个的校准输出的深度平均值。
7.如权利要求6所述的校准方法,其特征在于,该归一化运算包括深度方向的乘加运算,该运算至少结合每个通道的深度方向的平均值。
8.如权利要求1所述的校准方法,其特征在于,该模拟电路的校准是在与该模拟电路相同的芯片上执行的;或者,该模拟电路的校准在与该模拟电路所在的不同芯片或不同装置上执行的。
9.一种用于执行神经网络计算的模拟电路的校准方法,其特征在于,包括:
由模拟电路使用存储在该模拟电路中的预训练权重对校准输入执行张量运算,以生成神经网络的给定层的校准输出;其中神经网络模型包括映像到模拟电路的第一组层和映像到数字电路的第二组层;在校准过程中,该校准输入被馈送到该神经网络并收集每个该第一组层的校准输出的统计信息;该校准输入是用于该神经网络训练的训练数据的子集;
接收在该给定层之后的归一化层的配置,其中该归一化层由归一化运算定义,该归一化运算结合该校准输出的统计信息;以及
执行神经网络推理,包括使用该预训练权重的给定层的给张量运算和给归一化层的给归一化运算。
10.如权利要求9所述的校准方法,其特征在于,还包括:
将该给定层的该张量运算分配给该模拟电路执行;以及
将该归一化层的该归一化运算分配给数字电路以在神经网络推理期间执行。
11.一种用于执行神经网络计算的装置,其特征在于,包括:
模拟电路,用于存储神经网络的至少给定层的预训练权重,其中该模拟电路用于:通过在校准期间使用该预训练权重对校准输入执行张量运算,从该给定层生成校准输出;以及使用该预训练权重执行神经网络推理,包括该给定层的该张量运算;以及
数字电路,用于接收该给定层之后的归一化层的配置,其中该归一化层由包含该校准输出的统计数据的归一化运算定义,并在该神经网络推理期间执行该归一化层的该归一化运算;
其中神经网络模型包括映像到该模拟电路的第一组层和映像到该数字电路的第二组层;在校准过程中,该校准输入被馈送到该神经网络并收集每个该第一组层的校准输出的统计信息;该校准输入是用于该神经网络训练的训练数据的子集。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202163139463P | 2021-01-20 | 2021-01-20 | |
| US63/139,463 | 2021-01-20 | ||
| US17/569,771 US20220230064A1 (en) | 2021-01-20 | 2022-01-06 | Calibration of analog circuits for neural network computing |
| US17/569,771 | 2022-01-06 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN114819051A CN114819051A (zh) | 2022-07-29 |
| CN114819051B true CN114819051B (zh) | 2025-05-06 |
Family
ID=82405228
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202210062183.4A Active CN114819051B (zh) | 2021-01-20 | 2022-01-19 | 用于执行神经网络计算的模拟电路的校准方法及装置 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20220230064A1 (zh) |
| CN (1) | CN114819051B (zh) |
| TW (1) | TWI800226B (zh) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20220230064A1 (en) * | 2021-01-20 | 2022-07-21 | Mediatek Singapore Pte. Ltd. | Calibration of analog circuits for neural network computing |
| KR20250072619A (ko) * | 2022-09-26 | 2025-05-23 | 인터디지털 씨이 페이튼트 홀딩스, 에스에이에스 | 비디오 코딩 프로세스들에서의 아날로그 및 디지털 뉴럴 네트워크들 구현들의 혼합 |
| CN120937080A (zh) * | 2023-04-10 | 2025-11-11 | 硅存储技术股份有限公司 | 用于在神经网络中执行操作的模拟存储器内计算引擎和数字存储器内计算引擎 |
| CN119149478B (zh) * | 2024-11-07 | 2025-02-28 | 浙江大学 | 一种基于sram的可实现核间互连的acim架构电路 |
| CN119761435B (zh) * | 2024-12-11 | 2025-12-02 | 北京邮电大学 | 在模拟存内计算npu中部署神经网络的方法和电子设备 |
| CN120011729B (zh) * | 2025-04-16 | 2025-06-27 | 合肥芯车无限半导体科技有限公司 | 归一化运算电路、系统 |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9400955B2 (en) * | 2013-12-13 | 2016-07-26 | Amazon Technologies, Inc. | Reducing dynamic range of low-rank decomposition matrices |
| US9542645B2 (en) * | 2014-03-27 | 2017-01-10 | Qualcomm Incorporated | Plastic synapse management |
| US11348002B2 (en) * | 2017-10-24 | 2022-05-31 | International Business Machines Corporation | Training of artificial neural networks |
| KR102633139B1 (ko) * | 2018-09-07 | 2024-02-02 | 삼성전자주식회사 | 데이터를 추출하는 집적 회로, 그것을 포함하는 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치 |
| US11263529B2 (en) * | 2018-10-10 | 2022-03-01 | Google Llc | Modifying machine learning models to improve locality |
| WO2020102204A1 (en) * | 2018-11-12 | 2020-05-22 | Massachusetts Institute Of Technology | Large-scale artificial neural-network accelerators based on coherent detection and optical data fan-out |
| US11599782B2 (en) * | 2019-03-25 | 2023-03-07 | Northeastern University | Self-powered analog computing architecture with energy monitoring to enable machine-learning vision at the edge |
| US11507642B2 (en) * | 2019-05-02 | 2022-11-22 | Silicon Storage Technology, Inc. | Configurable input blocks and output blocks and physical layout for analog neural memory in deep learning artificial neural network |
| US11636322B2 (en) * | 2020-01-03 | 2023-04-25 | Silicon Storage Technology, Inc. | Precise data tuning method and apparatus for analog neural memory in an artificial neural network |
| US11663458B2 (en) * | 2020-04-08 | 2023-05-30 | International Business Machines Corporation | Conductance drift corrections in neuromorphic systems based on crossbar array structures |
| CN112101539B (zh) * | 2020-11-18 | 2021-07-20 | 南京优存科技有限公司 | 一种存算一体电路及人工智能芯片 |
| US20220230064A1 (en) * | 2021-01-20 | 2022-07-21 | Mediatek Singapore Pte. Ltd. | Calibration of analog circuits for neural network computing |
-
2022
- 2022-01-06 US US17/569,771 patent/US20220230064A1/en not_active Abandoned
- 2022-01-19 TW TW111102245A patent/TWI800226B/zh active
- 2022-01-19 CN CN202210062183.4A patent/CN114819051B/zh active Active
Non-Patent Citations (1)
| Title |
|---|
| 高性能SAR ADC后台校准技术研究;胡逸俊;中国优秀硕士学位论文全文数据库信息科技辑;20210215(第02期);全文 * |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202230225A (zh) | 2022-08-01 |
| TWI800226B (zh) | 2023-04-21 |
| CN114819051A (zh) | 2022-07-29 |
| US20220230064A1 (en) | 2022-07-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN114819051B (zh) | 用于执行神经网络计算的模拟电路的校准方法及装置 | |
| US11610127B2 (en) | Methods and systems for selecting quantisation parameters for deep neural networks using back-propagation | |
| KR102415576B1 (ko) | 컨벌루션 뉴럴 네트워크의 계산 복잡성을 감소시키기 위한 방법 및 시스템 | |
| US20250068883A1 (en) | Hierarchical mantissa bit length selection for hardware implementation of deep neural network | |
| CN112673383B (zh) | 神经网络核中动态精度的数据表示 | |
| US11630997B2 (en) | Method and apparatus with bit-serial data processing of a neural network | |
| US12080086B2 (en) | Sparse-aware convolution and techniques for acceleration thereof | |
| EP3480743A1 (en) | End-to-end data format selection for hardware implementation of deep neural network | |
| KR102869716B1 (ko) | 기계 학습 가속을 위한 전력 감소 | |
| US20240169191A1 (en) | Methods and systems for performing a per channel affine transformation using a neural network accelerator | |
| WO2020001401A1 (zh) | 深度神经网络中的网络层运算方法及装置 | |
| US20230065725A1 (en) | Parallel depth-wise processing architectures for neural networks | |
| US12260336B2 (en) | Training a neural network | |
| Wang et al. | FPAP: A folded architecture for energy-quality scalable convolutional neural networks | |
| US11615300B1 (en) | System and method for implementing neural networks in integrated circuits | |
| EP4345692A1 (en) | Methods and systems for online selection of number formats for network parameters of a neural network | |
| EP4158546A1 (en) | Structured convolutions and associated acceleration | |
| CN113672612A (zh) | 索引源数组中的元素 | |
| US12159212B1 (en) | Shared depthwise convolution | |
| US20260044707A1 (en) | Hierarchical Mantissa Bit Length Selection For Hardware Implementation Of Deep Neural Network | |
| US20260044708A1 (en) | Hierarchical Mantissa Bit Length Selection For Hardware Implementation Of Deep Neural Network | |
| US20250053552A1 (en) | Activation accelerator for neural network accelerator | |
| Yu | Implementing the Generator of DCGAN on FPGA |
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 |