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

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

Info

Publication number
CN107315569A
CN107315569A CN201610269674.0A CN201610269674A CN107315569A CN 107315569 A CN107315569 A CN 107315569A CN 201610269674 A CN201610269674 A CN 201610269674A CN 107315569 A CN107315569 A CN 107315569A
Authority
CN
China
Prior art keywords
vector
submodule
unit
instruction
updated
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.)
Granted
Application number
CN201610269674.0A
Other languages
English (en)
Other versions
CN107315569B (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
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Beijing Zhongke Cambrian Technology Co 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 Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co 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

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、梯度向量全局更新步长α和均方向量更新率δ,将均方向量RMSt-1更新为RMSt,通过RMSt更新待更新参数θt-1为θt,并将RMSt回写到数据缓存单元4中,将θt通过直接内存控制单元1回写到外部指定空间。
上述方案中,所述数据处理模块5将均方向量RMSt-1更新为RMSt是根据公式实现的,所述数据处理模块5将待更新向量θt-1更新为θt是根据公式实现的。
上述方案中,所述数据处理模块5包括运算控制子模块51、向量加法并行运算子模块52、向量乘法并行运算子模块53、向量除法并行运算子模块54、向量平方根并行运算子模块55和基本运算子模块56,其中向量加法并行运算子模块52、向量乘法并行运算子模块53、向量除法并行运算子模块54、向量平方根并行运算子模块55以及基本运算子模块56并联连接,运算控制子模块51分别与向量加法并行运算子模块52、向量乘法并行运算子模块53、向量除法并行运算子模块54、向量平方根并行运算子模块55以及基本运算子模块56串联连接。
上述方案中,该装置在对向量进行运算时,向量运算均为element-wise运算,同一向量执行某种运算时不同位置元素是并行执行运算。
为达到上述目的,本发明还提供了一种用于执行RMSprop梯度下降算法的方法,该方法包括:
初始化一个均方向量RMS0,并从指定存储单元中获取待更新参数向量θt和对应的梯度向量
在进行梯度下降操作时,先利用均方向量RMSt-1、梯度向量和均方向量更新率δ更新均方向量RMSt,然后将梯度向量除以均方向量的平方根再乘以全局更新步长α得到对应的梯度下降量,更新待更新向量θt-1为θt并输出;重复此过程,直至待更新向量收敛。
上述方案中,所述初始化一个均方向量RMS0,并从指定存储单元中获取待更新参数向量θt和对应的梯度向量包括:
步骤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和对应的梯度向量然后送入到数据处理模块5中;
步骤S6,控制器单元3从指令缓存单元2读入一条数据传输指令,根据译出的微指令,将数据缓存单元4中的均方向量RMSt-1传输到数据处理单元5中。
上述方案中,所述利用均方向量RMSt-1、梯度向量和均方向量更新率δ更新均方向量RMSt,是根据公式实现的,具体包括:控制器单元3从指令缓存单元2中读取一条均方向量更新指令,根据译出的微指令,驱动数据缓存单元4进行均方向量RMSt-1的更新操作;在该更新操作中,均方向量更新指令被送至运算控制子模块51,运算控制子模块51发送相应的指令进行以下操作:发送运算指令1(INS_1)至基本运算子模块56,驱动基本运算子模块56运算(1-δ),发送运算指令2(INS_2)至向量乘法并行运行子模块53,驱动向量乘法并行运行子模块53分别计算(1-δ)RMSt-1其中向量对应位置的元素的计算存在先后顺序,不同位置之间并行计算;然后,发送运算指令3(INS_3)至向量加法并行运算子模块52,驱动向量加法并行运算子模块52计算得到更新后的均方向量RMSt
上述方案中,所述利用均方向量RMSt-1、梯度向量和均方向量更新率δ更新均方向量RMSt后,还包括:控制器单元3从指令缓存单元2读取一条数据传输指令,根据译出的微指令,将更新后的均方向量RMSt从数据处理单元5传送到数据缓存单元4中。
上述方案中,所述将梯度向量除以均方向量的平方根再乘以全局更新步长α得到对应的梯度下降量,更新待更新向量θt-1为θt,是根据公式实现的,具体包括:控制器单元3从指令缓存单元2读取一条参数向量更新指令,根据译出的微指令,进行参数向量的更新操作;在该更新操作中,参数向量更新指令被送至运算控制子模块51,运算控制子模块51控制相关运算模块进行如下操作:发送运算指令4(INS_4)至基本运算单元子模块56,驱动基本运算单元子模块56计算出-α,迭代次数t加1;发送运算指令5(INS_5)至向量平方根并行运算子模块55,驱动向量平方根并行运算子模块55计算得到发送运算指令6(INS_6)至向量乘法并行运行子模块53,驱动向量乘法并行运行子模块53计算得到待两个操作完成后,发送运算指令7(INS_7)至向量除法并行运行子模块54,驱动向量除法并行运行子模块54计算得到然后,发送运算指令8(INS_8)至向量加法并行运行子模块52,驱动向量加法并行运行子模块52计算得到θt;其中,θt-1是θ0在第t次循环时未更新前的值,第t次循环将θt-1更新为θt;运算控制子模块51发送运算指令9(INS_9)至向量除法并行运算子模块54,驱动向量除法并行运算子模块54运算得到向量 运算控制子模块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和对应的梯度向量然后,每次迭代时,首先利用之前的均方向量RMSt-1、梯度向量和均方向量更新率δ更新均方向量RMSt,即之后,将梯度向量除以均方向量的平方根再乘以全局更新步长α得到对应的梯度下降量,更新待更新向量,即重复整个过程,直至待更新向量收敛。
图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、梯度向量全局更新步长α和均方向量更新率δ。首先将均方向量RMSt-1更新为RMSt,即 然后,通过RMSt更新待更新参数θt-1为θt,即 并将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和对应的梯度向量然后送入到数据处理模块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其中向量对应位置的元素的计算存在先后顺序,不同位置之间并行计算。然后,发送运算指令3(INS_3)至向量加法并行运算子模块52,驱动向量加法并行运算子模块52计算得到更新后的均方向量RMSt
步骤S8,控制器单元3从指令缓存单元2读取一条数据传输指令,根据译出的微指令,将更新后的均方向量RMSt从数据处理单元5传送到数据缓存单元4中。
步骤S9,控制器单元3从指令缓存单元2读取一条参数向量运算指令,根据译出的微指令,进行参数向量的更新操作。在该更新操作中,参数向量更新指令被送至运算控制子模块51,运算控制子模块51控制相关运算模块进行如下操作:发送运算指令4(INS_4)至基本运算单元子模块56,驱动基本运算单元子模块56计算出-α,迭代次数t加1;发送运算指令5(INS_5)至向量平方根并行运算子模块55,驱动向量平方根并行运算子模块55计算得到发送运算指令6(INS_6)至向量乘法并行运行子模块53,驱动向量乘法并行运行子模块53计算得到待两个操作完成后,发送运算指令7(INS_7)至向量除法并行运行子模块54,驱动向量除法并行运行子模块54计算得到然后,发送运算指令8(INS_8)至向量加法并行运行子模块52,驱动向量加法并行运行子模块52计算得到θt;其中,θt-1是θ0在第t次循环时未更新前的值,第t次循环将θt-1更新为θt;运算控制子模块51发送运算指令9(INS_9)至向量除法并行运算子模块54,驱动向量除法并行运算子模块54运算得到向量运算控制子模块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 (16)

1.一种用于执行RMSprop梯度下降算法的装置,其特征在于,该装置包括直接内存访问单元(1)、指令缓存单元(2)、控制器单元(3)、数据缓存单元(4)、数据处理模块(5),其中:
直接内存访问单元(1),用于访问外部指定空间,向指令缓存单元(2)和数据处理模块(5)读写数据,完成数据的加载和存储;
指令缓存单元(2),用于通过直接内存访问单元(1)读取指令,并缓存读取的指令;
控制器单元(3),用于从指令缓存单元(2)中读取指令,将读取的指令译码为控制直接内存访问单元(1)、数据缓存单元(4)或数据处理模块(5)行为的微指令;
数据缓存单元(4),用于在初始化及数据更新过程中缓存均方矩阵;
数据处理模块(5),用于更新均方向量和待更新参数,并将更新后的均方向量写入到数据缓存单元(4)中,将更新后的待更新参数通过直接内存访问单元(1)写入到外部指定空间中。
2.根据权利要求1所述的用于执行RMSprop梯度下降算法的装置,其特征在于,所述直接内存访问单元(1)是从外部指定空间向指令缓存单元(2)写入指令,从外部指定空间读取待更新参数和对应的梯度值到数据处理模块(5),并将更新后的参数向量从数据处理模块(5)直接写入外部指定空间。
3.根据权利要求1所述的用于执行RMSprop梯度下降算法的装置,其特征在于,所述控制器单元(3)将读取的指令译码为控制直接内存访问单元(1)、数据缓存单元(4)或数据处理模块(5)行为的微指令,用以控制直接内存访问单元(1)从外部指定地址读取数据和将数据写入外部指定地址,控制数据缓存单元(4)通过直接内存访问单元(1)从外部指定地址获取操作所需的指令,控制数据处理模块(5)进行待更新参数的更新运算,以及控制数据缓存单元(4)与数据处理模块(5)进行数据传输。
4.根据权利要求1所述的用于执行RMSprop梯度下降算法的装置,其特征在于,所述数据缓存单元(4)在初始化时初始化均方矩阵RMSt,在每次数据更新过程中将均方矩阵RMSt-1读出到数据处理模块(5)中,在数据处理模块(5)中更新为均方矩阵RMSt,然后再写入到数据缓存单元(4)中。
5.根据权利要求4所述的用于执行RMSprop梯度下降算法的装置,其特征在于,在装置运行过程中,所述数据缓存单元(4)内部始终保存着均方矩阵RMSt的副本。
6.根据权利要求1所述的用于执行RMSprop梯度下降算法的装置,其特征在于,所述数据处理模块(5)从数据缓存单元(4)中读取均方向量RMSt-1,通过直接内存访问单元(1)从外部指定空间中读取待更新参数向量θt-1、梯度向量全局更新步长α和均方向量更新率δ,将均方向量RMSt-1更新为RMSt,通过RMSt更新待更新参数θt-1为θt,并将RMSt回写到数据缓存单元(4)中,将θt通过直接内存控制单元(1)回写到外部指定空间。
7.根据权利要求6所述的用于执行RMSprop梯度下降算法的装置,其特征在于,所述数据处理模块(5)将均方向量RMSt-1更新为RMSt是根据公式实现的,所述数据处理模块(5)将待更新向量θt-1更新为θt是根据公式实现的。
8.根据权利要求1或7所述的用于执行RMSprop梯度下降算法的装置,其特征在于,所述数据处理模块(5)包括运算控制子模块(51)、向量加法并行运算子模块(52)、向量乘法并行运算子模块(53)、向量除法并行运算子模块(54)、向量平方根并行运算子模块(55)和基本运算子模块(56),其中向量加法并行运算子模块(52)、向量乘法并行运算子模块(53)、向量除法并行运算子模块(54)、向量平方根并行运算子模块(55)以及基本运算子模块(56)并联连接,运算控制子模块(51)分别与向量加法并行运算子模块(52)、向量乘法并行运算子模块(53)、向量除法并行运算子模块(54)、向量平方根并行运算子模块(55)以及基本运算子模块(56)串联连接。
9.根据权利要求8所述的用于执行RMSprop梯度下降算法的装置,其特征在于,该装置在对向量进行运算时,向量运算均为element-wise运算,同一向量执行某种运算时不同位置元素是并行执行运算。
10.一种用于执行RMSprop梯度下降算法的方法,应用于权利要求1至9中任一项所述的装置,其特征在于,该方法包括:
初始化一个均方向量RMS0,并从指定存储单元中获取待更新参数向量θt和对应的梯度向量
在进行梯度下降操作时,先利用均方向量RMSt-1、梯度向量和均方向量更新率δ更新均方向量RMSt,然后将梯度向量除以均方向量的平方根再乘以全局更新步长α得到对应的梯度下降量,更新待更新向量θt-1为θt并输出;重复此过程,直至待更新向量收敛。
11.根据权利要求10所述的用于执行RMSprop梯度下降算法的方法,其特征在于,所述初始化一个均方向量RMS0,并从指定存储单元中获取待更新参数向量θt和对应的梯度向量包括:
步骤S1,在指令缓存单元的首地址处预先存入一条指令预取指令(INSTRUCTION_IO),该INSTRUCTION_IO指令用于驱动直接内存单元1从外部地址空间读取与RMSprop梯度下降计算有关的所有指令。
步骤S2,运算开始,控制器单元从指令缓存单元的首地址读取该条INSTRUCTION_IO指令,根据译出的微指令,驱动直接内存访问单元从外部地址空间读取与RMSprop梯度下降计算有关的所有指令,并将这些指令缓存入指令缓存单元中;
步骤S3,控制器单元从指令缓存单元读入一条超参量读取指令(HYPERPARAMETER_IO),根据译出的微指令,驱动直接内存访问单元从外部空间读取全局更新步长α,均方向量更新率δ、收敛阈值ct,然后送入数据处理模块中;
步骤S4,控制器单元从指令缓存单元读入赋值指令,根据译出的微指令,驱动数据缓存单元中的均方向量RMSt-1初始化,并驱动数据处理单元中的迭代次数t被设置为1;
步骤S5,控制器单元从指令缓存单元读入一条参数读取指令(DATA_IO),根据译出的微指令,驱动直接内存访问单元从外部指定空间读取待更新参数向量θt-1和对应的梯度向量然后送入到数据处理模块中;
步骤S6,控制器单元从指令缓存单元读入一条数据传输指令,根据译出的微指令,将数据缓存单元中的均方向量RMSt-1传输到数据处理单元中。
12.根据权利要求10所述的用于执行RMSprop梯度下降算法的方法,其特征在于,所述利用均方向量RMSt-1、梯度向量和均方向量更新率δ更新均方向量RMSt,是根据公式实现的,具体包括:
控制器单元从指令缓存单元中读取一条均方向量更新指令,根据译出的微指令,驱动数据缓存单元进行均方向量RMSt-1的更新操作;在该更新操作中,均方向量更新指令被送至运算控制子模块,运算控制子模块发送相应的指令进行以下操作:发送运算指令1至基本运算子模块,驱动基本运算子模块运算(1-δ),发送运算指令2至向量乘法并行运行子模块,驱动向量乘法并行运行子模块分别计算(1-δ)RMSt-1其中向量对应位置的元素的计算存在先后顺序,不同位置之间并行计算;然后,发送运算指令3至向量加法并行运算子模块,驱动向量加法并行运算子模块计算得到更新后的均方向量RMSt
13.根据权利要求12所述的用于执行RMSprop梯度下降算法的方法,其特征在于,所述利用均方向量RMSt-1、梯度向量和均方向量更新率δ更新均方向量RMSt后,还包括:
控制器单元从指令缓存单元读取一条数据传输指令,根据译出的微指令,将更新后的均方向量RMSt从数据处理单元传送到数据缓存单元中。
14.根据权利要求10所述的用于执行RMSprop梯度下降算法的方法,其特征在于,所述将梯度向量除以均方向量的平方根再乘以全局更新步长α得到对应的梯度下降量,更新待更新向量θt-1为θt,是根据公式实现的,具体包括:
控制器单元从指令缓存单元读取一条参数向量更新指令,根据译出的微指令,进行参数向量的更新操作;在该更新操作中,参数向量更新指令被送至运算控制子模块,运算控制子模块控制相关运算模块进行如下操作:发送运算指令4至基本运算单元子模块,驱动基本运算单元子模块计算出-α,迭代次数t加1;发送运算指令5至向量平方根并行运算子模块,驱动向量平方根并行运算子模块计算得到发送运算指令6至向量乘法并行运行子模块,驱动向量乘法并行运行子模块计算得到待两个操作完成后,发送运算指令7至向量除法并行运行子模块,驱动向量除法并行运行子模块计算得到然后,发送运算指令8至向量加法并行运行子模块,驱动向量加法并行运行子模块计算 得到θt;其中,θt-1是θ0在第t次循环时未更新前的值,第t次循环将θt-1更新为θt;运算控制子模块发送运算指令9至向量除法并行运算子模块,驱动向量除法并行运算子模块运算得到向量运算控制子模块分别发送运算指令10、运算指令11向量加法并行运算子模块和基本运算子模块,计算得到sum=∑itempi、temp2=sum/n。
15.根据权利要求14所述的用于执行RMSprop梯度下降算法的方法,其特征在于,所述更新待更新向量θt-1为θt之后,还包括:
控制器单元从指令缓存单元读取一条DATABACK_IO指令,根据译出的微指令,将更新后的参数向量θt从数据处理单元通过直接内存访问单元传送至外部指定空间。
16.根据权利要求10所述的用于执行RMSprop梯度下降算法的方法,其特征在于,所述重复此过程直至待更新向量收敛的步骤中,包括判断待更新向量是否收敛,具体判断过程如下:
控制器单元从指令缓存单元读取一条收敛判断指令,根据译出的微指令,数据处理模块判断更新后的参数向量是否收敛,若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 true CN107315569A (zh) 2017-11-03
CN107315569B 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)

Cited By (2)

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

Citations (7)

* 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 浙江大学软件学院(宁波)管理中心(宁波软件教育中心) 一种基于奇异值分解与分类器融合推荐的方法
US20150100530A1 (en) * 2013-10-08 2015-04-09 Google Inc. Methods and apparatus for reinforcement learning

Patent Citations (7)

* 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 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
US20150100530A1 (en) * 2013-10-08 2015-04-09 Google Inc. Methods and apparatus for reinforcement learning
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
陈振宏: "基于差异合并的分布式随机梯度下降算法", 《计算机学报》 *

Cited By (4)

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

Also Published As

Publication number Publication date
CN107315569B (zh) 2021-06-18

Similar Documents

Publication Publication Date Title
US11580386B2 (en) Convolutional layer acceleration unit, embedded system having the same, and method for operating the embedded system
KR102385349B1 (ko) 신경 네트워크 명령어 세트 아키텍처
WO2017124648A1 (zh) 一种向量计算装置
US20180121388A1 (en) Symmetric block sparse matrix-vector multiplication
CN106991476A (zh) 用于执行人工神经网络正向运算的装置和方法
WO2017185336A1 (zh) 用于执行pooling运算的装置和方法
CN107341132A (zh) 一种用于执行AdaGrad梯度下降训练算法的装置和方法
Watanabe et al. SIMD vectorization for the Lennard-Jones potential with AVX2 and AVX-512 instructions
Falch et al. Register caching for stencil computations on GPUs
JP6551751B2 (ja) マルチプロセッサ装置
Zubair et al. An optimized multicolor point-implicit solver for unstructured grid applications on graphics processing units
Jung et al. Cholesky decomposition and linear programming on a GPU
CN107315569A (zh) 一种用于执行RMSprop梯度下降算法的装置及方法
WO2017185257A1 (zh) 一种用于执行Adam梯度下降训练算法的装置及方法
CN107315570A (zh) 一种用于执行Adam梯度下降训练算法的装置及方法
Park et al. mGEMM: Low-latency convolution with minimal memory overhead optimized for mobile devices
Wiggers et al. Implementing the conjugate gradient algorithm on multi-core systems
TWI531966B (zh) 計算裝置、計算方法及非暫態機器可讀儲存媒體
Shah et al. An efficient sparse matrix multiplication for skewed matrix on gpu
CN113987414B (zh) 基于ARMv8多核处理器的小型和不规则矩阵乘优化方法
CN116301920A (zh) 一种用于部署cnn模型至基于fpga的高性能加速器的编译系统
Sun et al. Parallel active contour with lattice Boltzmann scheme on modern GPU
CN107341540B (zh) 一种用于执行Hessian-Free训练算法的装置和方法
US20190303155A1 (en) Replicate elements instruction
WO2017185256A1 (zh) 一种用于执行RMSprop梯度下降算法的装置及方法

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