一种基于FPGA的A3C深度强化学习算法加速器制造技术

技术编号:38816984 阅读:15 留言:0更新日期:2023-09-15 19:56
本发明专利技术公开了一种基于FPGA的A3C深度强化学习算法加速器,涉及人工智能的深度强化学习技术领域,包括上位机和FPGA加速器,上位机用于提供交互环境;FPGA加速器用于完成智能体推理与训练的计算加速,包括:存储模块;正向计算模块,用于完成神经网络的正向推理计算;反向计算模块,用于完成神经网络的反向传播计算;反向输入计算模块,用于完成反向输入图的计算;梯度计算模块,用于计算每一层参数的梯度;RMSProp参数更新模块,用于完成A3C算法中的RMSProp参数更新过程。本发明专利技术的加速器相对于通用处理器具有高能效的特点。通用处理器具有高能效的特点。通用处理器具有高能效的特点。

【技术实现步骤摘要】
一种基于FPGA的A3C深度强化学习算法加速器


[0001]本专利技术涉及人工智能的深度强化学习
,特别是一种基于FPGA的A3C深度强化学习算法加速器。

技术介绍

[0002]A3C(Asynchronous Advantage Actor

Critic,A3C)算法是一种典型的深度强化学习(Deep Reinforcement Learning,DRL)算法,通过采用分布式学习与异步训练的方式,能够很好的打破训练数据的相关性,提高智能体的训练效率和训练结果。A3C算法构建一个中心智能体(Central Agent)作为分布式智能体模板,并将该模板复制N份后构成N个本地智能体(Local Agent),分别放入N个独立的环境中进行交互,而每个智能体都可视作一个独立的Actor

Critic(AC)智能体,在分布式框架下,每个智能体都能在互不干扰的情况下按照AC算法流程与环境进行交互获得经验值,并完成神经网络参数梯度值计算。由于分布式异步学习框架的引入,A3C算法的算法复杂度和计算量较大,因此如何在现有的硬件平台上实现高性能且低功耗的A3C算法具有一定的研究意义和实际价值。
[0003]A3C算法的硬件实现平台主要分为四种:通用处理器CPU、图形处理器GPU、专用集成电路ASIC以及现场可编程逻辑门阵列FPGA。CPU受限于串行的执行模式和有限的数据带宽,在功耗和延时两个方面都无法满足A3C算法运算的需求,因此目前A3C算法的硬件加速一般基于GPU、ASIC和FPGA平台。由于A3C算法在训练中采用小批量的样本来进行计算,因此,在使用GPU执行该算法的计算任务时利用率较低,使得A3C算法并不容易被GPU加速。FPGA具有可编程性、可重构性、高并行性以及低功耗等优点,相比于GPU和ASIC固定的硬件结构,FPGA可以设计适应各种深度强化学习算法的硬件结构,同时,与CPU和GPU相比,FPGA在单位功耗下可以获取更高的性能,具有更加出色的能耗比和加速比。现有基于FPGA的深度强化学习算法加速器大多是针对以DQN(Deep Q Network,DQN)为代表的单智能体DRL算法,而在分布式DRL算法加速方面研究较少。因此,对分布式深度强化学习算法展开FPGA加速器研究,在实现其分布式异步学习框架的同时,提升该算法的执行速度,缩短其训练周期,是非常值得研究的一个问题。

技术实现思路

[0004]本专利技术所要解决的技术问题是克服现有技术的不足而提供一种基于FPGA的A3C深度强化学习算法加速器,采用计算并行、流水线设计的加速策略,并通过多模块部署实现A3C深度强化学习智能体的所有计算步骤;通过将存储区域划分为多个独立空间,在计算单元部署多个PE实现A3C算法的分布式学习框架;通过在参数更新单元中对智能体的参数更新顺序进行控制,实现A3C算法的异步学习框架。
[0005]本专利技术为解决上述技术问题采用以下技术方案:
[0006]根据本专利技术提出的一种基于FPGA的A3C深度强化学习算法加速器,包括用于提供交互环境的上位机和用于计算加速的FPGA加速器,FPGA加速器包括存储模块、前向计算模
块、反向计算模块、反向输入计算模块、梯度计算模块和RMSProp参数更新模块,其中,
[0007]前向计算模块包括N个并行计算的FPE模块,FPE模块包括第一矩阵计算单元、ReLU激活单元和Softmax激活单元;其中,
[0008]计算共享层时:
[0009]第一矩阵计算单元,用于从存储模块中读取输入特征图x和网络参数θ、对x和网络参数θ进行矩阵乘法运算后输出运算结果A至ReLU激活单元和存储模块;
[0010]ReLU激活单元,用于对第一矩阵计算单元输出的运算结果A进行激活运算后输出特征图y至存储模块缓存;
[0011]计算输出层时:
[0012]第一矩阵计算单元,用于从存储模块中读取y和网络参数θ,对y和网络参数θ进行线性相乘求和,得出一个Critic网络输出值v输出至存储模块;
[0013]Softmax激活单元,用于对并行读入的共享层的计算结果进行处理,共享层的计算结果指y,得到一组Actor网络输出值π并将其输出至存储模块;
[0014]反向输入计算模块,用于根据存储模块中的A3C智能体网络输出层计算结果,计算反向输入特征图x

并将其输出至存储模块,A3C智能体网络输出层计算结果为Actor网络输出值π和Critic网络输出值v,x

包括Actor网络反向输入图y

π
和Critic网络的反向输入图y

v

[0015]反向计算模块包括N个并行计算的BPE模块,其中,
[0016]BPE模块,用于对正向输入节点数据X、反向输入特征图x

和网络参数θ进行处理,得到反向输出特征图y

并将其输出至存储模块;其中,正向输入节点数据X指未经Relu激活操作的第一矩阵计算单元输出的运算结果A;
[0017]梯度计算模块包括N个并行计算的GPE模块,其中,
[0018]GPE模块,从存储模块中读取正向输入节点数据X和反向输入节点数据X

,X

指反向输入特征图x

或反向输出特征图y

,GPE模块对X和X

进行处理,输出一组网络参数梯度值dθ至RMSProp参数更新模块和存储模块;
[0019]RMSProp参数更新模块包括梯度聚合单元和参数更新单元,其中,
[0020]梯度聚合单元,用于根据从存储模块中读取的历史的梯度值、对dθ聚合计算,聚合后的梯度值输出至参数更新单元;
[0021]参数更新单元,用于根据聚合后的梯度值,对从存储模块中读取的历史网络参数进行更新计算,得到新的网络参数并将其输出至存储模块。
[0022]作为本专利技术所述的一种基于FPGA的A3C深度强化学习算法加速器进一步优化方案,第一矩阵计算单元包括乘法器和加法器,ReLU激活单元包括0值比较器,Softmax激活单元包括指数运算器、除法器和加法器。
[0023]作为本专利技术所述的一种基于FPGA的A3C深度强化学习算法加速器进一步优化方案,前向计算模块的计算过程具体如下:
[0024]在计算共享层时,使用第一矩阵计算单元和ReLU计算单元,此时前向计算模块的计算过程包括以下步骤:
[0025]步骤11、从存储模块中读取输入特征图x和网络参数θ到第一矩阵计算单元;
[0026]步骤12、将读入的输入特征图x和网络参数θ送入第一矩阵计算单元的乘法

加法
树结构中,x和θ将在相乘求和后与偏置相加;
[0027]步骤13、将第一矩阵计算单元输出结果作为输入数据送入ReLU激活单元,将输入数据与0进行比较,当输入数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的A3C深度强化学习算法加速器,包括用于提供交互环境的上位机和用于计算加速的FPGA加速器,其特征在于,FPGA加速器包括存储模块、前向计算模块、反向计算模块、反向输入计算模块、梯度计算模块和RMSProp参数更新模块,其中,前向计算模块包括N个并行计算的FPE模块,FPE模块包括第一矩阵计算单元、ReLU激活单元和Softmax激活单元;其中,计算共享层时:第一矩阵计算单元,用于从存储模块中读取输入特征图x和网络参数θ、对x和网络参数θ进行矩阵乘法运算后输出运算结果A至ReLU激活单元和存储模块;ReLU激活单元,用于对第一矩阵计算单元输出的运算结果A进行激活运算后输出特征图y至存储模块缓存;计算输出层时:第一矩阵计算单元,用于从存储模块中读取y和网络参数θ,对y和网络参数θ进行线性相乘求和,得出一个Critic网络输出值v输出至存储模块;Softmax激活单元,用于对并行读入的共享层的计算结果进行处理,共享层的计算结果指y,得到一组Actor网络输出值π并将其输出至存储模块;反向输入计算模块,用于根据存储模块中的A3C智能体网络输出层计算结果,计算反向输入特征图x

并将其输出至存储模块,A3C智能体网络输出层计算结果为Actor网络输出值π和Critic网络输出值v,x

包括Actor网络反向输入图y

π
和Critic网络的反向输入图y

v
;反向计算模块包括N个并行计算的BPE模块,其中,BPE模块,用于对正向输入节点数据X、反向输入特征图x

和网络参数θ进行处理,得到反向输出特征图y

并将其输出至存储模块;其中,正向输入节点数据X指未经Relu激活操作的第一矩阵计算单元输出的运算结果A;梯度计算模块包括N个并行计算的GPE模块,其中,GPE模块,从存储模块中读取正向输入节点数据X和反向输入节点数据X

,X

指反向输入特征图x

或反向输出特征图y

,GPE模块对X和X

进行处理,输出一组网络参数梯度值dθ至RMSProp参数更新模块和存储模块;RMSProp参数更新模块包括梯度聚合单元和参数更新单元,其中,梯度聚合单元,用于根据从存储模块中读取的历史的梯度值、对dθ聚合计算,聚合后的梯度值输出至参数更新单元;参数更新单元,用于根据聚合后的梯度值,对从存储模块中读取的历史网络参数进行更新计算,得到新的网络参数并将其输出至存储模块。2.根据权利要求1所述的一种基于FPGA的A3C深度强化学习算法加速器,其特征在于,第一矩阵计算单元包括乘法器和加法器,ReLU激活单元包括0值比较器,Softmax激活单元包括指数运算器、除法器和加法器。3.根据权利要求1所述的一种基于FPGA的A3C深度强化学习算法加速器,其特征在于,前向计算模块的计算过程具体如下:在计算共享层时,使用第一矩阵计算单元和ReLU计算单元,此时前向计算模块的计算过程包括以下步骤:步骤11、从存储模块中读取输入特征图x和网络参数θ到第一矩阵计算单元;
步骤12、将读入的输入特征图x和网络参数θ送入第一矩阵计算单元的乘法

加法树结构中,x和θ将在相乘求和后与偏置相加;步骤13、将第一矩阵计算单元输出结果作为输入数据送入ReLU激活单元,将输入数据与0进行比较,当输入数据小于0时,输出为0;当输入数据大于等于0时,输出数据并保持输入数据的大小不变,并将输出数据缓存至存储模块中,经过预设的时钟周期,完成所有输出的计算;在计算输出层时,使用第一矩阵计算单元和Softmax激活单元,此时前向计算模块的计算过程包括以下步骤:步骤21、从存储模块中读取y和网络参数θ到第一矩阵计算单元,读取y至Softmax激活单元;步骤22、第一矩阵计算单元的乘法

加法树结构通过乘加方式,完成y与网络参数θ的线性相乘求和,得出一个Critic网络输出值v;步骤23、Softmax激活单元以并行读入的共享层的计算结果作为输入数据,将输入数据转化为串行排列,得到串行序列,共享层的计算结果指y;步骤24、将步骤23得到的串行序列送入指数运算器获得指数输出,然后通过累加器和除法器求出一组Actor网络输出π。4.根据权利要求1所述的一种基于FPGA的A3C深度强化学习算法加速器,其特征在于,反向输入计算模块包括乘法器、加法器和选择器;反向输入计算模块的计算过程包括以下步骤:在计算Actor网络反向输入图时,此时反向输入计算模块的计算过程包括以下步骤:步骤31、从存储模块中读取l个Actor网络层的输出结果π到反向输入计算模块中,π记为z1~z
l
,z
i
为第i个Actor网络层的输出结果,z
j
为第j个Actor网络层的输出结果,1≤i≤l,1≤j≤l;步骤32、利用浮点数计算IP核对z1~z
l
进行取反、取对数、乘法和加法操作后得到1

lnz
i


z
i
z
j
与z
i
(1

z
i
)结果;步骤33、将步骤32得到的1

lnz
i


z
i
z
j
与z
...

【专利技术属性】
技术研发人员:葛芬张国辉周芳李梓瑜叶剑涛龚文强王浩吴淑宁
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1