CN107315569B - 一种用于执行RMSprop梯度下降算法的装置及方法 - Google Patents

一种用于执行RMSprop梯度下降算法的装置及方法 Download PDF

Info

Publication number
CN107315569B
CN107315569B CN201610269674.0A CN201610269674A CN107315569B CN 107315569 B CN107315569 B CN 107315569B CN 201610269674 A CN201610269674 A CN 201610269674A CN 107315569 B CN107315569 B CN 107315569B
Authority
CN
China
Prior art keywords
vector
instruction
updated
unit
mean square
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
CN201610269674.0A
Other languages
English (en)
Other versions
CN107315569A (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 CN201610269674.0A priority Critical patent/CN107315569B/zh
Publication of CN107315569A publication Critical patent/CN107315569A/zh
Application granted granted Critical
Publication of CN107315569B publication Critical patent/CN107315569B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开提供了一种用于执行RMSprop梯度下降算法的装置及方法,该装置包括直接内存访问单元、指令缓存单元、控制器单元、数据缓存单元、数据处理模块。该方法包括:首先读取梯度向量以及待更新值向量,同时初始化一个均方向量;每次迭代时,首先利用梯度向量更新均方向量,然后,利用均方向量计算出更新时对应的梯度下降量,更新待更新参数向量,重复此过程,直至待更新向量收敛。在整个过程中,均方向量一直存储在数据缓存单元中。利用本公开,可以实现RMSprop梯度下降算法的应用,并大幅度提高数据处理的效率。

Description

一种用于执行RMSprop梯度下降算法的装置及方法
技术领域
本公开涉及RMSprop算法应用技术领域,具体地涉及一种用于执行RMSprop梯度下降算法的装置及方法,是有关于RMSprop梯度下降优化算法的硬件实现的相关应用。
背景技术
梯度下降优化算法在函数逼近、优化计算、模式识别和图像处理等领域被广泛应用,RMSprop算法作为梯度下降优化算法中的一种,由于其易于实现,计算量小,所需存储空间小以及对mini-batch数据集进行处理时效果好等特征被广泛的使用,并且使用专用装置实现RMSprop算法可以显著提高其执行的速度。
目前,一种执行RMSprop梯度下降算法的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把RMSprop算法对应的相关运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销。
另一种执行RMSprop梯度下降算法的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用单指令多数据流(SIMD)指令来支持上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对RMSprop梯度下降算法相关运算的专门支持,仍然需要大量的前端译码工作才能执行RMSprop梯度下降算法中相关的运算,带来了大量的额外开销。另外,GPU只有较小的片上缓存,RMSprop梯度下降算法运行中所需的中间变量数据如均方向量等需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。
发明内容
(一)要解决的技术问题
有鉴于此,本公开的主要目的在于提供一种用于执行RMSprop梯度下降算法的装置及方法,以解决数据的通用处理器运算性能不足,前段译码开销大的问题,并避免反复向内存读取数据,降低内存访问的带宽。
(二)技术方案
为达到上述目的,本公开提供了一种用于执行RMSprop梯度下降算法的装置,该装置包括直接内存访问单元1、指令缓存单元2、控制器单元3、数据缓存单元4、数据处理模块5,其中:
直接内存访问单元1,用于访问外部指定空间,向指令缓存单元2和数据处理模块5读写数据,完成数据的加载和存储;
指令缓存单元2,用于通过直接内存访问单元1读取指令,并缓存读取的指令;
控制器单元3,用于从指令缓存单元2中读取指令,将读取的指令译码为控制直接内存访问单元1、数据缓存单元4或数据处理模块5行为的微指令;
数据缓存单元4,用于在初始化及数据更新过程中缓存均方矩阵;
数据处理模块5,用于更新均方向量和待更新参数,并将更新后的均方向量写入到数据缓存单元4中,将更新后的待更新参数通过直接内存访问单元1写入到外部指定空间中。
上述方案中,所述直接内存访问单元1是从外部指定空间向指令缓存单元2写入指令,从外部指定空间读取待更新参数和对应的梯度值到数据处理模块5,并将更新后的参数向量从数据处理模块5直接写入外部指定空间。
上述方案中,所述控制器单元3将读取的指令译码为控制直接内存访问单元1、数据缓存单元4或数据处理模块5行为的微指令,用以控制直接内存访问单元1从外部指定地址读取数据和将数据写入外部指定地址,控制数据缓存单元4通过直接内存访问单元1从外部指定地址获取操作所需的指令,控制数据处理模块5进行待更新参数的更新运算,以及控制数据缓存单元4与数据处理模块5进行数据传输。
上述方案中,所述数据缓存单元4在初始化时初始化均方矩阵RMSt,在每次数据更新过程中将均方矩阵RMSt-1读出到数据处理模块5中,在数据处理模块5中更新为均方矩阵RMSt,然后再写入到数据缓存单元4中。在装置运行过程中,所述数据缓存单元4内部始终保存着均方矩阵RMSt的副本。
上述方案中,所述数据处理模块5从数据缓存单元4中读取均方向量RMSt-1,通过直接内存访问单元1从外部指定空间中读取待更新参数向量θt-1、梯度向量
Figure GDA0001655757570000034
全局更新步长α和均方向量更新率δ,将均方向量RMSt-1更新为RMSt,通过RMSt更新待更新参数θt-1为θt,并将RMSt回写到数据缓存单元4中,将θt通过直接内存控制单元1回写到外部指定空间。
上述方案中,所述数据处理模块5将均方向量RMSt-1更新为RMSt是根据公式
Figure GDA0001655757570000031
实现的,所述数据处理模块5将待更新向量θt-1更新为θt是根据公式
Figure GDA0001655757570000032
实现的。
上述方案中,所述数据处理模块5包括运算控制子模块51、向量加法并行运算子模块52、向量乘法并行运算子模块53、向量除法并行运算子模块54、向量平方根并行运算子模块55和基本运算子模块56,其中向量加法并行运算子模块52、向量乘法并行运算子模块53、向量除法并行运算子模块54、向量平方根并行运算子模块55以及基本运算子模块56并联连接,运算控制子模块51分别与向量加法并行运算子模块52、向量乘法并行运算子模块53、向量除法并行运算子模块54、向量平方根并行运算子模块55以及基本运算子模块56串联连接。
上述方案中,该装置在对向量进行运算时,向量运算均为element-wise运算,同一向量执行某种运算时不同位置元素是并行执行运算。
为达到上述目的,本公开还提供了一种用于执行RMSprop梯度下降算法的方法,该方法包括:
初始化一个均方向量RMS0,并从指定存储单元中获取待更新参数向量θt和对应的梯度向量
Figure GDA0001655757570000033
在进行梯度下降操作时,先利用均方向量RMSt-1、梯度向量
Figure GDA0001655757570000041
和均方向量更新率δ更新均方向量RMSt,然后将梯度向量除以均方向量的平方根再乘以全局更新步长α得到对应的梯度下降量,更新待更新向量θt-1为θt并输出;重复此过程,直至待更新向量收敛。
上述方案中,所述初始化一个均方向量RMS0,并从指定存储单元中获取待更新参数向量θt和对应的梯度向量
Figure GDA0001655757570000042
包括:
步骤S1,在指令缓存单元2的首地址处预先存入一条指令预取指令(INSTRUCTION_IO),该INSTRUCTION_IO指令用于驱动直接内存单元1从外部地址空间读取与RMSprop梯度下降计算有关的所有指令。
步骤S2,运算开始,控制器单元3从指令缓存单元2的首地址读取该条INSTRUCTION_IO指令,根据译出的微指令,驱动直接内存访问单元1从外部地址空间读取与RMSprop梯度下降计算有关的所有指令,并将这些指令缓存入指令缓存单元2中;
步骤S3,控制器单元3从指令缓存单元2读入一条超参量读取指令(HYPERPARAMETER_IO),根据译出的微指令,驱动直接内存访问单元1从外部空间读取全局更新步长α,均方向量更新率δ、收敛阈值ct,然后送入数据处理模块5中;
步骤S4,控制器单元3从指令缓存单元2读入赋值指令,根据译出的微指令,驱动数据缓存单元4中的均方向量RMSt-1初始化,并驱动数据处理单元5中的迭代次数t被设置为1;
步骤S5,控制器单元3从指令缓存单元2读入一条参数读取指令(DATA_IO),根据译出的微指令,驱动直接内存访问单元1从外部指定空间读取待更新参数向量θt-1和对应的梯度向量
Figure GDA0001655757570000043
然后送入到数据处理模块5中;
步骤S6,控制器单元3从指令缓存单元2读入一条数据传输指令,根据译出的微指令,将数据缓存单元4中的均方向量RMSt-1传输到数据处理单元5中。
上述方案中,所述利用均方向量RMSt-1、梯度向量
Figure GDA0001655757570000044
和均方向量更新率δ更新均方向量RMSt,是根据公式
Figure GDA0001655757570000045
实现的,具体包括:控制器单元3从指令缓存单元2中读取一条均方向量更新指令,根据译出的微指令,驱动数据缓存单元4进行均方向量RMSt-1的更新操作;在该更新操作中,均方向量更新指令被送至运算控制子模块51,运算控制子模块51发送相应的指令进行以下操作:发送运算指令1(INS_1)至基本运算子模块56,驱动基本运算子模块56运算(1-δ),发送运算指令2(INS_2)至向量乘法并行运行子模块53,驱动向量乘法并行运行子模块53分别计算(1-δ)RMSt-1
Figure GDA0001655757570000051
Figure GDA0001655757570000052
其中
Figure GDA0001655757570000053
Figure GDA0001655757570000054
向量对应位置的元素的计算存在先后顺序,不同位置之间并行计算;然后,发送运算指令3(INS_3)至向量加法并行运算子模块52,驱动向量加法并行运算子模块52计算
Figure GDA0001655757570000055
得到更新后的均方向量RMSt
上述方案中,所述利用均方向量RMSt-1、梯度向量
Figure GDA0001655757570000056
和均方向量更新率δ更新均方向量RMSt后,还包括:控制器单元3从指令缓存单元2读取一条数据传输指令,根据译出的微指令,将更新后的均方向量RMSt从数据处理单元5传送到数据缓存单元4中。
上述方案中,所述将梯度向量除以均方向量的平方根再乘以全局更新步长α得到对应的梯度下降量,更新待更新向量θt-1为θt,是根据公式
Figure GDA0001655757570000057
实现的,具体包括:控制器单元3从指令缓存单元2读取一条参数向量更新指令,根据译出的微指令,进行参数向量的更新操作;在该更新操作中,参数向量更新指令被送至运算控制子模块51,运算控制子模块51控制相关运算模块进行如下操作:发送运算指令4(INS_4)至基本运算单元子模块56,驱动基本运算单元子模块56计算出-α,迭代次数t加1;发送运算指令5(INS_5)至向量平方根并行运算子模块55,驱动向量平方根并行运算子模块55计算得到
Figure GDA0001655757570000058
发送运算指令6(INS_6)至向量乘法并行运行子模块53,驱动向量乘法并行运行子模块53计算得到
Figure GDA0001655757570000061
待两个操作完成后,发送运算指令7(INS_7)至向量除法并行运行子模块54,驱动向量除法并行运行子模块54计算得到
Figure GDA0001655757570000062
然后,发送运算指令8(INS_8)至向量加法并行运行子模块52,驱动向量加法并行运行子模块52计算
Figure GDA0001655757570000063
得到θt;其中,θt-1是θ0在第t次循环时未更新前的值,第t次循环将θt-1更新为θt;运算控制子模块51发送运算指令9(INS_9)至向量除法并行运算子模块54,驱动向量除法并行运算子模块54运算得到向量
Figure GDA0001655757570000064
运算控制子模块51分别发送运算指令10(INS_10)、运算指令11(INS_11)向量加法并行运算子模块52和基本运算子模块56,计算得到sum=∑itempi、temp2=sum/n。
上述方案中,所述更新待更新向量θt-1为θt之后,还包括:控制器单元3从指令缓存单元2读取一条DATABACK_IO指令,根据译出的微指令,将更新后的参数向量θt从数据处理单元5通过直接内存访问单元1传送至外部指定空间。
上述方案中,所述重复此过程直至待更新向量收敛的步骤中,包括判断待更新向量是否收敛,具体判断过程如下:控制器单元3从指令缓存单元2读取一条收敛判断指令,根据译出的微指令,数据处理模块5判断更新后的参数向量是否收敛,若temp2<ct,则收敛,运算结束。
(三)有益效果
从上述技术方案可以看出,本公开具有以下有益效果:
1、本公开提供的用于执行RMSprop梯度下降算法的装置及方法,通过采用专门用于执行RMSprop梯度下降算法的装置,可以解决数据的通用处理器运算性能不足,前段译码开销大的问题,加速相关应用的执行速度。
2、本公开提供的用于执行RMSprop梯度下降算法的装置及方法,由于采用了数据缓存单元暂存中间过程所需的矩向量,避免了反复向内存读取数据,减少了装置与外部地址空间之间的IO操作,降低了内存访问的带宽,解决了片外带宽这一瓶颈。
3、本公开提供的用于执行RMSprop梯度下降算法的装置及方法,由于数据处理模块采用相关的并行运算子模块进行向量运算,使得并行程度大幅提高。
4、本公开提供的用于执行RMSprop梯度下降算法的装置及方法,由于数据处理模块采用相关的并行运算子模块进行向量运算,运算的并行程度高,所以工作时的频率较低,使得功耗开销小。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示出了根据本公开实施例的用于执行RMSprop梯度下降算法的装置的整体结构的示例框图。
图2示出了根据本公开实施例的用于执行RMSprop梯度下降算法的装置中数据处理模块的示例框图。
图3示出了根据本公开实施例的用于执行RMSprop梯度下降算法的方法的流程图。
在所有附图中,相同的装置、部件、单元等使用相同的附图标记来表示。
具体实施方式
根据本公开实施例结合附图对本公开示例性实施例的以下详细描述,本公开的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。
在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。
根据本公开实施例的用于执行RMSprop梯度下降算法的装置及方法,用以加速RMSprop梯度下降算法的应用。首先,初始化一个均方向量RMS0,并从指定存储单元中获取待更新参数向量θt和对应的梯度向量
Figure GDA0001655757570000081
然后,每次迭代时,首先利用之前的均方向量RMSt-1、梯度向量
Figure GDA0001655757570000082
和均方向量更新率δ更新均方向量RMSt,即
Figure GDA0001655757570000083
之后,将梯度向量除以均方向量的平方根再乘以全局更新步长α得到对应的梯度下降量,更新待更新向量,即
Figure GDA0001655757570000084
重复整个过程,直至待更新向量收敛。
图1示出了根据本公开实施例的用于实现RMSprop梯度下降算法的装置的整体结构的示例框图。如图1所示,该装置包括直接内存访问单元1、指令缓存单元2、控制器单元3、数据缓存单元4和数据处理模块5,均可以通过硬件电路进行实现。
直接内存访问单元1,用于访问外部指定空间,向指令缓存单元2和数据处理模块5读写数据,完成数据的加载和存储。具体是从外部指定空间向指令缓存单元2写入指令,从外部指定空间读取待更新参数和对应的梯度值到数据处理模块5,并将更新后的参数向量从数据处理模块5直接写入外部指定空间。
指令缓存单元2,用于通过直接内存访问单元1读取指令,并缓存读取的指令。
控制器单元3,用于从指令缓存单元2中读取指令,将读取的指令译码为控制直接内存访问单元1、数据缓存单元4或数据处理模块5行为的微指令,并将各微指令发送至直接内存访问单元1、数据缓存单元4或数据处理模块5,控制直接内存访问单元1从外部指定地址读取数据和将数据写入外部指定地址,控制数据缓存单元3通过直接内存访问单元1从外部指定地址获取操作所需的指令,控制数据处理模块5进行待更新参数的更新运算,以及控制数据缓存单元4与数据处理模块5进行数据传输。
数据缓存单元4,用于在初始化及数据更新过程中缓存均方矩阵;具体而言,数据缓存单元4在初始化时初始化均方矩阵RMSt,在每次数据更新过程中将均方矩阵RMSt-1读出到数据处理模块5中,在数据处理模块5中更新为均方矩阵RMSt,然后再写入到数据缓存单元4中。在整个装置运行过程中,数据缓存单元4内部始终保存着均方矩阵RMSt的副本。在本公开中,由于采用了数据缓存单元暂存中间过程所需的矩向量,避免了反复向内存读取数据,减少了装置与外部地址空间之间的IO操作,降低了内存访问的带宽。
数据处理模块5,用于更新均方向量和待更新参数,并将更新后的均方向量写入到数据缓存单元4中,将更新后的待更新参数通过直接内存访问单元1写入到外部指定空间中;具体而言,数据处理模块5从数据缓存单元4中读取均方向量RMSt-1,通过直接内存访问单元1从外部指定空间中读取待更新参数向量θt-1、梯度向量
Figure GDA0001655757570000092
全局更新步长α和均方向量更新率δ。首先将均方向量RMSt-1更新为RMSt,即
Figure GDA0001655757570000091
Figure GDA0001655757570000093
然后,通过RMSt更新待更新参数θt-1为θt,即
Figure GDA0001655757570000094
Figure GDA0001655757570000095
并将RMSt回写到数据缓存单元4中,将θt通过直接内存控制单元1回写到外部指定空间。在本公开中,由于数据处理模块采用相关的并行运算子模块进行向量运算,使得并行程度大幅提高,所以工作时的频率较低,进而使得功耗开销小。
图2示出了根据本公开实施例的用于实现RMSprop梯度下降算法相关应用的装置中数据处理模块的示例框图。如图2所示,数据处理模块5包括运算控制子模块51、向量加法并行运算子模块52、向量乘法并行运算子模块53、向量除法并行运算子模块54、向量平方根并行运算子模块55和基本运算子模块56,其中向量加法并行运算子模块52、向量乘法并行运算子模块53、向量除法并行运算子模块54、向量平方根并行运算子模块55以及基本运算子模块56并联连接,运算控制子模块51分别与向量加法并行运算子模块52、向量乘法并行运算子模块53、向量除法并行运算子模块54、向量平方根并行运算子模块55以及基本运算子模块56串联连接。该装置在对向量进行运算时,向量运算均为element-wise运算,同一向量执行某种运算时不同位置元素是并行执行运算。
图3示出了根据本公开实施例的用于执行RMSprop梯度下降算法的方法的流程图,具体包括以下步骤:
步骤S1,在指令缓存单元2的首地址处预先存入一条指令预取指令(INSTRUCTION_IO),该INSTRUCTION_IO指令用于驱动直接内存单元1从外部地址空间读取与RMSprop梯度下降计算有关的所有指令。
步骤S2,运算开始,控制器单元3从指令缓存单元2的首地址读取该条INSTRUCTION_IO指令,根据译出的微指令,驱动直接内存访问单元1从外部地址空间读取与RMSprop梯度下降计算有关的所有指令,并将这些指令缓存入指令缓存单元2中;
步骤S3,控制器单元3从指令缓存单元2读入一条超参量读取指令(HYPERPARAMETER_IO),根据译出的微指令,驱动直接内存访问单元1从外部空间读取全局更新步长α,均方向量更新率δ、收敛阈值ct,然后送入数据处理模块5中;
步骤S4,控制器单元3从指令缓存单元2读入赋值指令,根据译出的微指令,驱动数据缓存单元4中的均方向量RMSt-1初始化,并驱动数据处理单元5中的迭代次数t被设置为1;
步骤S5,控制器单元3从指令缓存单元2读入一条参数读取指令(DATA_IO),根据译出的微指令,驱动直接内存访问单元1从外部指定空间读取待更新参数向量θt-1和对应的梯度向量
Figure GDA0001655757570000101
然后送入到数据处理模块5中;
步骤S6,控制器单元3从指令缓存单元2读入一条数据传输指令,根据译出的微指令,将数据缓存单元4中的均方向量RMSt-1传输到数据处理单元5中。
步骤S7,控制器单元3从指令缓存单元2中读取一条均方向量更新指令,根据译出的微指令,驱动数据缓存单元4进行均方向量RMSt-1的更新操作。在该更新操作中,均方向量更新指令被送至运算控制子模块51,运算控制子模块51发送相应的指令进行以下操作:发送运算指令1(INS_1)至基本运算子模块56,驱动基本运算子模块56运算(1-δ),发送运算指令2(INS_2)至向量乘法并行运行子模块53,驱动向量乘法并行运行子模块53分别计算(1-δ)RMSt-1
Figure GDA0001655757570000111
Figure GDA0001655757570000112
其中
Figure GDA0001655757570000113
Figure GDA0001655757570000114
向量对应位置的元素的计算存在先后顺序,不同位置之间并行计算。然后,发送运算指令3(INS_3)至向量加法并行运算子模块52,驱动向量加法并行运算子模块52计算
Figure GDA0001655757570000115
得到更新后的均方向量RMSt
步骤S8,控制器单元3从指令缓存单元2读取一条数据传输指令,根据译出的微指令,将更新后的均方向量RMSt从数据处理单元5传送到数据缓存单元4中。
步骤S9,控制器单元3从指令缓存单元2读取一条参数向量运算指令,根据译出的微指令,进行参数向量的更新操作。在该更新操作中,参数向量更新指令被送至运算控制子模块51,运算控制子模块51控制相关运算模块进行如下操作:发送运算指令4(INS_4)至基本运算单元子模块56,驱动基本运算单元子模块56计算出-α,迭代次数t加1;发送运算指令5(INS_5)至向量平方根并行运算子模块55,驱动向量平方根并行运算子模块55计算得到
Figure GDA0001655757570000121
发送运算指令6(INS_6)至向量乘法并行运行子模块53,驱动向量乘法并行运行子模块53计算得到
Figure GDA0001655757570000122
待两个操作完成后,发送运算指令7(INS_7)至向量除法并行运行子模块54,驱动向量除法并行运行子模块54计算得到
Figure GDA0001655757570000123
然后,发送运算指令8(INS_8)至向量加法并行运行子模块52,驱动向量加法并行运行子模块52计算
Figure GDA0001655757570000124
得到θt;其中,θt-1是θ0在第t次循环时未更新前的值,第t次循环将θt-1更新为θt;运算控制子模块51发送运算指令9(INS_9)至向量除法并行运算子模块54,驱动向量除法并行运算子模块54运算得到向量
Figure GDA0001655757570000125
运算控制子模块51分别发送运算指令10(INS_10)、运算指令11(INS_11)向量加法并行运算子模块52和基本运算子模块56,计算得到sum=∑itempi、temp2=sum/n。
步骤S10,控制器单元3从指令缓存单元2读取一条待更新量写回指令(DATABACK_IO),根据译出的微指令,将更新后的参数向量θt从数据处理单元5通过直接内存访问单元1传送至外部指定空间。
步骤S11,控制器单元3从指令缓存单元2读取一条收敛判断指令,根据译出的微指令,数据处理模块5判断更新后的参数向量是否收敛,若temp2<ct,则收敛,运算结束,否则,转到步骤S5处继续执行。
本公开通过采用专门用于执行RMSprop梯度下降算法的装置,可以解决数据的通用处理器运算性能不足,前段译码开销大的问题,加速相关应用的执行速度。同时,对数据缓存单元的应用,避免了反复向内存读取数据,降低了内存访问的带宽。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
在前述的说明书中,参考其特定示例性实施例描述了本公开的各实施例。显然,可对各实施例做出各种修改,而不背离所附权利要求所述的本公开的更广泛的精神和范围。相应地,说明书和附图应当被认为是说明性的,而不是限制性的。

Claims (24)

1.一种用于执行RMSprop梯度下降算法的装置,其特征在于,该装置包括:
控制器单元(3),用于读取指令,将读取的指令译码为控制数据缓存单元(4)或数据处理模块(5)行为的微指令;
数据缓存单元(4),用于在初始化及数据更新过程中缓存均方矩阵;
数据处理模块(5),连接到所述控制器单元(3)与数据缓存单元(4),用于更新均方向量和待更新参数,并将更新后的均方向量写入到数据缓存单元(4)中,将更新后的待更新参数通过直接内存访问单元(1)写入到外部指定空间中,
其中,所述数据缓存单元(4)在初始化时初始化均方矩阵RMSt,在每次数据更新过程中将均方矩阵RMSt-1读出到数据处理模块(5)中,在数据处理模块(5)中更新为均方矩阵RMSt,然后再写入到数据缓存单元(4)中。
2.根据权利要求1所述的装置,其特征在于,所述装置还包括:
直接内存访问单元(1),用于访问外部指定空间,向指令缓存单元(2)和数据处理模块(5)读写数据,完成数据的加载和存储;
指令缓存单元(2),用于通过直接内存访问单元(1)读取指令,并缓存读取的指令。
3.根据权利要求2所述的装置,其特征在于,所述直接内存访问单元(1)是从外部指定空间向指令缓存单元(2)写入指令,从外部指定空间读取待更新参数和对应的梯度值到数据处理模块(5),并将更新后的参数向量从数据处理模块(5)直接写入外部指定空间。
4.根据权利要求2所述的装置,其特征在于,所述控制器单元(3)将读取的指令译码为控制直接内存访问单元(1)、数据缓存单元(4)或数据处理模块(5)行为的微指令,用以控制直接内存访问单元(1)从外部指定地址读取数据和将数据写入外部指定地址,控制数据缓存单元(4)通过直接内存访问单元(1)从外部指定地址获取操作所需的指令,控制数据处理模块(5)进行待更新参数的更新运算,以及控制数据缓存单元(4)与数据处理模块(5)进行数据传输。
5.根据权利要求1所述的装置,其特征在于,在装置运行过程中,所述数据缓存单元(4)内部始终保存着均方矩阵RMSt的副本。
6.根据权利要求2所述的装置,其特征在于,所述数据处理模块(5)从数据缓存单元(4)中读取均方向量RMSt-1,通过直接内存访问单元(1)从外部指定空间中读取待更新参数向量θt-1、梯度向量
Figure FDA0003057794260000021
全局更新步长α和均方向量更新率δ,将均方向量RMSt-1更新为RMSt,通过RMSt更新待更新参数θt-1为θt,并将RMSt回写到数据缓存单元(4)中,将θt通过直接内存控制单元(1)回写到外部指定空间。
7.根据权利要求6所述的装置,其特征在于,所述数据处理模块(5)将均方向量RMSt-1更新为RMSt是根据公式
Figure FDA0003057794260000022
Figure FDA0003057794260000023
实现的,所述数据处理模块(5)将待更新向量θt-1更新为θt是根据公式
Figure FDA0003057794260000024
实现的。
8.根据权利要求1或7所述的的装置,其特征在于,所述数据处理模块(5)包括运算控制子模块(51)、向量加法并行运算子模块(52)、向量乘法并行运算子模块(53)、向量除法并行运算子模块(54)、向量平方根并行运算子模块(55)和基本运算子模块(56),其中向量加法并行运算子模块(52)、向量乘法并行运算子模块(53)、向量除法并行运算子模块(54)、向量平方根并行运算子模块(55)以及基本运算子模块(56)并联连接,运算控制子模块(51)分别与向量加法并行运算子模块(52)、向量乘法并行运算子模块(53)、向量除法并行运算子模块(54)、向量平方根并行运算子模块(55)以及基本运算子模块(56)串联连接。
9.根据权利要求8所述的装置,其特征在于,该装置在对向量进行运算时,向量运算均为element-wise运算,同一向量执行某种运算时不同位置元素是并行执行运算。
10.一种应用权利要求1所述的用于执行RMSprop梯度下降算法的装置的方法,其特征在于,该方法包括:
采用控制器单元(3)读取指令,将读取的指令译码为控制数据缓存单元(4)或数据处理模块(5)行为的微指令;
采用数据缓存单元(4)在初始化及数据更新过程中缓存均方矩阵;
采用数据处理模块(5)更新均方向量和待更新参数,并将更新后的均方向量写入到数据缓存单元(4)中,将更新后的待更新参数通过直接内存访问单元(1)写入到外部指定空间中;
所述数据缓存单元(4)在初始化时初始化均方矩阵RMSt,在每次数据更新过程中将均方矩阵RMSt-1读出到数据处理模块(5)中,在数据处理模块(5)中更新为均方矩阵RMSt,然后再写入到数据缓存单元(4)中。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
采用直接内存访问单元(1)访问外部指定空间,向指令缓存单元(2)和数据处理模块(5)读写数据,完成数据的加载和存储;
采用指令缓存单元(2)通过直接内存访问单元(1)读取指令,并缓存读取的指令;
其中,所述直接内存访问单元(1)从外部指定空间向指令缓存单元(2)写入指令,从外部指定空间读取待更新参数和对应的梯度值到数据处理模块(5),并将更新后的参数向量从数据处理模块(5)直接写入外部指定空间。
12.根据权利要求11所述的方法,其特征在于,该方法包括:
所述控制器单元(3)将读取的指令译码为控制直接内存访问单元(1)、数据缓存单元(4)或数据处理模块(5)行为的微指令,
控制直接内存访问单元(1)从外部指定地址读取数据和将数据写入外部指定地址,
控制数据缓存单元(4)通过直接内存访问单元(1)从外部指定地址获取操作所需的指令,
控制数据处理模块(5)进行待更新参数的更新运算,以及
控制数据缓存单元(4)与数据处理模块(5)进行数据传输。
13.根据权利要求10所述的方法,其特征在于,在运行过程中,所述数据缓存单元(4)内部始终保存着均方矩阵RMSt的副本。
14.根据权利要求11所述的方法,其特征在于,所述数据处理模块(5)从数据缓存单元(4)中读取均方向量RMSt-1,通过直接内存访问单元(1)从外部指定空间中读取待更新参数向量θt-1、梯度向量
Figure FDA0003057794260000031
全局更新步长α和均方向量更新率δ,将均方向量RMSt-1更新为RMSt,通过RMSt更新待更新参数θt-1为θt,并将RMSt回写到数据缓存单元(4)中,将θt通过直接内存控制单元(1)回写到外部指定空间。
15.根据权利要求14所述的方法,其特征在于,所述数据处理模块(5)将均方向量RMSt-1更新为RMSt是根据公式
Figure FDA0003057794260000041
Figure FDA0003057794260000042
实现的,所述数据处理模块(5)将待更新向量θt-1更新为θt是根据公式
Figure FDA0003057794260000043
实现的。
16.根据权利要求10所述的方法,其特征在于,所述数据处理模块(5)通过运算控制子模块(51)、向量加法并行运算子模块(52)、向量乘法并行运算子模块(53)、向量除法并行运算子模块(54)、向量平方根并行运算子模块(55)和基本运算子模块(56)实现,其中向量加法并行运算子模块(52)、向量乘法并行运算子模块(53)、向量除法并行运算子模块(54)、向量平方根并行运算子模块(55)以及基本运算子模块(56)并联,运算控制子模块(51)分别与向量加法并行运算子模块(52)、向量乘法并行运算子模块(53)、向量除法并行运算子模块(54)、向量平方根并行运算子模块(55)以及基本运算子模块(56)串联。
17.根据权利要求16所述的方法,其特征在于,在对向量进行运算时,向量运算均为element-wise运算,同一向量执行某种运算时不同位置元素是并行执行运算。
18.一种应用权利要求1所述的用于执行RMSprop梯度下降算法的装置的方法,其特征在于,该方法包括:初始化一个均方向量RMS0,并从指定存储单元中获取待更新参数向量θt和对应的梯度向量
Figure FDA0003057794260000044
在进行梯度下降操作时,先利用均方向量RMSt-1、梯度向量
Figure FDA0003057794260000045
和均方向量更新率δ更新均方向量RMSt,然后将梯度向量除以均方向量的平方根再乘以全局更新步长α得到对应的梯度下降量,更新待更新向量θt-1为θt并输出;重复此过程,直至待更新向量收敛。
19.根据权利要求18所述的方法,其特征在于,所述初始化一个均方向量RMS0,并从指定存储单元中获取待更新参数向量θt和对应的梯度向量
Figure FDA0003057794260000046
包括:
在指令缓存单元的首地址处预先存入一条指令预取指令INSTRUCTION_IO,该INSTRUCTION_IO指令用于驱动直接内存单元1从外部地址空间读取与RMSprop梯度下降计算有关的所有指令;
运算开始,控制器单元从指令缓存单元的首地址读取该INSTRUCTION_IO指令,根据译出的微指令,驱动直接内存访问单元从外部地址空间读取与RMSprop梯度下降计算有关的所有指令,并将这些指令缓存入指令缓存单元中;
控制器单元从指令缓存单元读入一条超参量读取指令HYPERPARAMETER_IO,根据译出的微指令,驱动直接内存访问单元从外部空间读取全局更新步长α,均方向量更新率δ、收敛阈值ct,然后送入数据处理模块中;
控制器单元从指令缓存单元读入赋值指令,根据译出的微指令,驱动数据缓存单元中的均方向量RMSt-1初始化,并驱动数据处理单元中的迭代次数t被设置为1;
控制器单元从指令缓存单元读入一条参数读取指令,根据译出的微指令,驱动直接内存访问单元从外部指定空间读取待更新参数向量θt-1和对应的梯度向量
Figure FDA0003057794260000051
然后送入到数据处理模块中;
控制器单元从指令缓存单元读入一条数据传输指令,根据译出的微指令,将数据缓存单元中的均方向量RMSt-1传输到数据处理单元中。
20.根据权利要求18所述的方法,其特征在于,所述利用均方向量RMSt-1、梯度向量
Figure FDA0003057794260000052
和均方向量更新率δ更新均方向量RMSt,是根据公式
Figure FDA0003057794260000053
实现的,具体包括:
控制器单元从指令缓存单元中读取一条均方向量更新指令,根据译出的微指令,驱动数据缓存单元进行均方向量RMSt-1的更新操作;在该更新操作中,均方向量更新指令被送至运算控制子模块,运算控制子模块发送相应的指令进行以下操作:发送运算指令1至基本运算子模块,驱动基本运算子模块运算(1-δ),发送运算指令2至向量乘法并行运行子模块,驱动向量乘法并行运行子模块分别计算(1-δ)RMSt-1
Figure FDA0003057794260000061
Figure FDA0003057794260000062
其中
Figure FDA0003057794260000063
Figure FDA0003057794260000064
向量对应位置的元素的计算存在先后顺序,不同位置之间并行计算;然后,发送运算指令3至向量加法并行运算子模块,驱动向量加法并行运算子模块计算
Figure FDA0003057794260000065
得到更新后的均方向量RMSt
21.根据权利要求20所述的方法,其特征在于,所述利用均方向量RMSt-1、梯度向量
Figure FDA0003057794260000066
和均方向量更新率δ更新均方向量RMSt后,还包括:
控制器单元从指令缓存单元读取一条数据传输指令,根据译出的微指令,将更新后的均方向量RMSt从数据处理单元传送到数据缓存单元中。
22.根据权利要求18所述的方法,其特征在于,所述将梯度向量除以均方向量的平方根再乘以全局更新步长α得到对应的梯度下降量,更新待更新向量θt-1为θt,是根据公式
Figure FDA0003057794260000067
实现的,具体包括:
控制器单元从指令缓存单元读取一条参数向量更新指令,根据译出的微指令,进行参数向量的更新操作;在该更新操作中,参数向量更新指令被送至运算控制子模块,运算控制子模块控制相关运算模块进行如下操作:发送运算指令4至基本运算单元子模块,驱动基本运算单元子模块计算出-α,迭代次数t加1;发送运算指令5至向量平方根并行运算子模块,驱动向量平方根并行运算子模块计算得到
Figure FDA0003057794260000068
发送运算指令6至向量乘法并行运行子模块,驱动向量乘法并行运行子模块计算得到
Figure FDA0003057794260000069
待两个操作完成后,发送运算指令7至向量除法并行运行子模块,驱动向量除法并行运行子模块计算得到
Figure FDA00030577942600000610
然后,发送运算指令8至向量加法并行运行子模块,驱动向量加法并行运行子模块计算
Figure FDA00030577942600000611
Figure FDA00030577942600000612
得到θt;其中,θt-1是θ0在第t次循环时未更新前的值,第t次循环将θt-1更新为θt;运算控制子模块发送运算指令9至向量除法并行运算子模块,驱动向量除法并行运算子模块运算得到向量
Figure FDA00030577942600000613
运算控制子模块分别发送运算指令10、运算指令11向量加法并行运算子模块和基本运算子模块,计算得到sum=∑itempi、temp2=sum/n,temp2为梯度的移动加权平均值。
23.根据权利要求22所述的方法,其特征在于,所述更新待更新向量θt-1为θt之后,还包括:
控制器单元从指令缓存单元读取一条DATABACK_IO指令,根据译出的微指令,将更新后的参数向量θt从数据处理单元通过直接内存访问单元传送至外部指定空间。
24.根据权利要求18所述的方法,其特征在于,所述重复此过程直至待更新向量收敛的步骤中,包括判断待更新向量是否收敛,具体判断过程如下:
控制器单元从指令缓存单元读取一条收敛判断指令,根据译出的微指令,数据处理模块判断更新后的参数向量是否收敛,若temp2<ct,则收敛,运算结束;其中,temp2为梯度的移动加权平均值,ct为收敛阈值。
CN201610269674.0A 2016-04-27 2016-04-27 一种用于执行RMSprop梯度下降算法的装置及方法 Active CN107315569B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610269674.0A CN107315569B (zh) 2016-04-27 2016-04-27 一种用于执行RMSprop梯度下降算法的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610269674.0A CN107315569B (zh) 2016-04-27 2016-04-27 一种用于执行RMSprop梯度下降算法的装置及方法

Publications (2)

Publication Number Publication Date
CN107315569A CN107315569A (zh) 2017-11-03
CN107315569B true CN107315569B (zh) 2021-06-18

Family

ID=60185669

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610269674.0A Active CN107315569B (zh) 2016-04-27 2016-04-27 一种用于执行RMSprop梯度下降算法的装置及方法

Country Status (1)

Country Link
CN (1) CN107315569B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506522B (zh) * 2019-01-31 2023-04-18 阿里巴巴集团控股有限公司 数据处理设备及方法
CN116755779B (zh) * 2023-08-18 2023-12-05 腾讯科技(深圳)有限公司 循环间隔的确定方法、装置、设备、存储介质及芯片

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101253493A (zh) * 2005-08-31 2008-08-27 微软公司 在图形处理单元上训练卷积神经网络
CN101931416A (zh) * 2009-06-24 2010-12-29 中国科学院微电子研究所 移动数字多媒体广播系统中的ldpc码的并行分层译码器
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
CN103765400A (zh) * 2011-04-07 2014-04-30 威盛电子股份有限公司 一种乱序执行微处理器中的有条件存储指令
CN104200224A (zh) * 2014-08-28 2014-12-10 西北工业大学 基于深度卷积神经网络的无价值图像去除方法
CN104503973A (zh) * 2014-11-14 2015-04-08 浙江大学软件学院(宁波)管理中心(宁波软件教育中心) 一种基于奇异值分解与分类器融合推荐的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9679258B2 (en) * 2013-10-08 2017-06-13 Google Inc. Methods and apparatus for reinforcement learning

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101253493A (zh) * 2005-08-31 2008-08-27 微软公司 在图形处理单元上训练卷积神经网络
CN101931416A (zh) * 2009-06-24 2010-12-29 中国科学院微电子研究所 移动数字多媒体广播系统中的ldpc码的并行分层译码器
CN103765400A (zh) * 2011-04-07 2014-04-30 威盛电子股份有限公司 一种乱序执行微处理器中的有条件存储指令
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
CN104200224A (zh) * 2014-08-28 2014-12-10 西北工业大学 基于深度卷积神经网络的无价值图像去除方法
CN104503973A (zh) * 2014-11-14 2015-04-08 浙江大学软件学院(宁波)管理中心(宁波软件教育中心) 一种基于奇异值分解与分类器融合推荐的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于差异合并的分布式随机梯度下降算法;陈振宏;《计算机学报》;20151015;全文 *

Also Published As

Publication number Publication date
CN107315569A (zh) 2017-11-03

Similar Documents

Publication Publication Date Title
CN111353589B (zh) 用于执行人工神经网络正向运算的装置和方法
CN111310904B (zh) 一种用于执行卷积神经网络训练的装置和方法
KR102258414B1 (ko) 처리 장치 및 처리 방법
CN106991477B (zh) 一种人工神经网络压缩编码装置和方法
CN111353588B (zh) 用于执行人工神经网络反向训练的装置和方法
WO2017185389A1 (zh) 一种用于执行矩阵乘运算的装置和方法
JP6340097B2 (ja) リードマスク及びライトマスクにより制御されるベクトル移動命令
WO2017124648A1 (zh) 一种向量计算装置
JP5987233B2 (ja) 装置、方法、およびシステム
EP3832499A1 (en) Matrix computing device
WO2017185257A1 (zh) 一种用于执行Adam梯度下降训练算法的装置及方法
CN111260025A (zh) 用于执行lstm神经网络运算的装置和运算方法
EP3451238A1 (en) Apparatus and method for executing pooling operation
WO2018120016A1 (zh) 用于执行lstm神经网络运算的装置和运算方法
WO2017185393A1 (zh) 一种用于执行向量内积运算的装置和方法
WO2017185411A1 (zh) 一种用于执行AdaGrad梯度下降训练算法的装置和方法
WO2017185392A1 (zh) 一种用于执行向量四则运算的装置和方法
CN107341540B (zh) 一种用于执行Hessian-Free训练算法的装置和方法
US12046028B1 (en) Compiler system for deploying CNN models to FPGA-based high-performance accelerators
CN107315569B (zh) 一种用于执行RMSprop梯度下降算法的装置及方法
CN107315570B (zh) 一种用于执行Adam梯度下降训练算法的装置及方法
WO2017185256A1 (zh) 一种用于执行RMSprop梯度下降算法的装置及方法
CN111860814B (zh) 一种用于执行batch normalization运算的装置和方法
CN111860772B (zh) 一种用于执行人工神经网络pooling运算的装置和方法
CN113254078B (zh) 一种在gpdpu模拟器上高效执行矩阵加法的数据流处理方法

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