CN109783412A - 一种深度强化学习加速训练的方法 - Google Patents
一种深度强化学习加速训练的方法 Download PDFInfo
- Publication number
- CN109783412A CN109783412A CN201910048075.XA CN201910048075A CN109783412A CN 109783412 A CN109783412 A CN 109783412A CN 201910048075 A CN201910048075 A CN 201910048075A CN 109783412 A CN109783412 A CN 109783412A
- Authority
- CN
- China
- Prior art keywords
- network
- training
- cpu
- fpga
- data
- 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
Links
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Advance Control (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提出一种在CPU+FPGA平台下进行深度强化学习算法训练的加速方法。本加速方法能够适用多种深度强化学习算法加速,实现了经验池和目标网络方法,方法包括如下步骤:在内存固定地址分配评价网络参数、目标网络参数和经验池,通过CPU进行初始化,在FPGA运行动作网络、评价网络和目标网络,同时运行两个进程,进程一进行数据采集,通过动作网络与运行于CPU上的强化学习环境交互,将采集到的数据存入经验池中;进程二进行神经网络的训练,CPU从经验池中抽取数据,通过目标网络产生标签,训练评价网络参数,并根据训练次数更新目标网络参数。本发明利用FPGA低功耗、可重配置的优点,对深度强化学习算法的训练进行加速和优化。
Description
技术领域
本发明属于计算机领域,特别涉及一种基于CPU+FPGA平台的深度强化学习训练加速方法。
背景技术
深度强化学习算法,是一种将深度学习的感知能力和强化学习的决策能力相结合的算法,通过端对端的学习方式实现从原始输入到输出的控制。该算法在工业制造、仿真模拟、机器人控制、优化与调度、游戏博弈等领域有广泛应用。
文献(Mnih V,Kavukcuoglu K,Silver D,et al.Playing Atari with deepreinforcement learning//Proceedings of Workshops at the 26th NeuralInformation Processing Systems 2013.Lake Tahoe,USA,2013:201-220)首次提出深度强化学习(Deep reinforcement learning)的概念,并发明了首个深度强化学习算法DQN。随着使用深度强化学习技术的AlphaGo在围棋领域大杀四方,越来越多的研究被投入到该领域中,许多优异的深度强化学习算法被陆续提出,算法的复杂度也与日俱增,需要强大的计算能力的支持。
在DQN算法中,Q网络为深度神经网络用于评价状态S下的动作Q值,Q值即评价该动作的值,通过ε-贪婪策略与环境交互产生数据放入经验池中,从中随机抽取数据进行训练,可以打破数据间的关联;设置目标网络计算TD值来训练评价网络,提升了算法的稳定性。
目前,业界普遍使用CPU+GPU的硬件架构完成深度学习和深度强化学习的训练与部署,CPU用于数据的传输控制,GPU用于大吞吐量的并行计算,但是GPU存在能耗高的缺点,且难以在终端设备中部署。越来越多的研究投入到低功耗、高效率的计算设备中。
FPGA(Field Programmable Gate Arrays),即现场可编程门阵列,是一种高性能、低功耗、可编程的数字电路芯片。FPGA既有像专用集成电路(ASIC)的高速稳定的优势,又有可重复定制电路结构的灵活性。FPGA内部含有大量可编程逻辑块(CLB)和金属互连线,此外还包含数字信号处理单元(DSP)、块随机存储器(BRAM)等模块。FPGA作为一种新兴的加速设备,拥有低功耗、可重配置等优点,特别适合用于深度强化学习的加速训练。
文献(J.Su,J.Liu,D.B.Thomas,and P.Y.Cheung.Neural Network BasedReinforcement Learning Acceleration on FPGA Platforms//ACM SIGARCH ComputerArchitecture News,vol.44,no.4,pp.68-73,2017)提出了一种用于神经网络Q学习的FPGA加速系统设计,通过神经演化算法动态地重构网络,该系统只针对FPGA平台,将网络参数和梯度存放在BRAM中,限制了网络的深度,且没有使用目标网络。文献(梁明兰,王峥,陈名松.基于可重构阵列架构的强化学习计算引擎//集成技术,vol.7,No.6,Nov.2018)提出了基于粗粒度可重构阵列架构的强化学习神经网络计算引擎,具有功耗低、处理速度快的优点,但是没有涉及对经验池的优化加速和使用目标网络。
发明内容
本发明的目的在于针对上述现有问题,提出一种深度强化学习的训练方法,能够在CPU+FPGA的异构计算平台上,完成对深度强化学习算法的训练以及验证,同时加入经验池和目标网络的方法。
本发明提供一种深度强化学习算法在CPU+FPGA平台下的训练方法,所述方法包括:
1)在CPU+FPGA平台下,CPU运行强化学习交互环境同时作为控制设备,FPGA作为计算设备,分别运行评价网络、目标网络以及为采集数据使用的动作网络,FPGA通过数据传输总线与CPU和内存进行通信。
2)分配CPU和FPGA都可以访问的共享内存,内存中包括网络参数和经验池数据,其中FPGA读写网络参数,CPU读写经验池数据。
3)其中FPGA包含三种网络,动作网络只用来做前向计算,评价网络用于前向计算和反向传播计算,评价网络的输入为batch规模的状态(S),batch规模指多个样本组成一个batch,动作网络的输入为单个状态,评价网络与动作网络共享相同的权重参数(ω),动作网络仅读取该参数,评价网络需读写该参数。目标网络与评价网络结构相同,输入为batch规模数据,用于前向计算,需要读取内存中的权重(ω-)。
4)CPU同时运行两个进程,进程一用于环境交互与数据采集,进程二用于神经网络的训练,两个进程可以完全并行执行。
5)进程一运行强化学习的交互环境,将当前状态输入至动作网络,返回动作Q值选择动作(A),输入动作至交互环境返回新状态值(S’)和奖励值(R),将数据以<S,A,R,S’>保存至内存中的经验池。
6)进程二从内存中抽取batch规模的数据,输入状态S’至目标网络返回目标Q值,通过贝尔曼方程计算目标TD值,将状态S作为输入,目标TD值作为标签去训练评价网络参数,其中目标Q值的计算和评价网络的训练均在FPGA上进行实现。
7)在FPGA上运行的神经网络可以为多种形式的神经网络,如全连接神经网络(fully-connected network,FC)、卷积神经网络(convolutional neural network,CNN)、循环神经网络(recurrent neural network,RNN),根据不同网络的前向和反向传播计算方式,通过硬件语言描述或者通过高级综合工具使用高级语言进行描述,这些描述方法不在本发明的范围内。
本发明的优点主要包括:
1.本发明方法具备通用性,能够适用多种基于DQN的深度强化学习算法的加速;
2.本发明能高效利用内存,能够运行于低功耗终端设备;
3.本发明将采集数据与训练并行执行,实现了经验池和目标网络方法。
附图说明
图1为本发明的技术方案实施流程图;
图2为FPGA中运行的网络结构示意图;
图3为CPU、FPGA、内存的数据交互示意图;
图4为内存的分配示意图;
图5为CPU与FPGA内的神经网络数据交互示意图;
具体实施方式
以下结合附图对本发明的方法做进一步说明:
图1所示为本发明实施的基于CPU+FPGA平台的深度强化学习训练方法实现流程,包括以下步骤:
1)首先,在内存中固定位置开辟空间存放参数ω、ω-以及经验池,使用CPU产生随机数对内存中的神经网络参数ω和ω-进行初始化,然后对运行在CPU中的交互环境初始化,产生初始状态S为当前状态;
2)然后,计算平台运行两个进程并行进行,图2为运行于FPGA的网络结构示意图。进程一用于强化学习中的探索与利用进行数据集的采集,将当前状态输入到运行于FPGA的动作网络,根据返回的动作Q值,使用ε-贪婪策略(ε-greedy)选取动作A输入至交互环境,交互环境返回奖励值R及下一状态S’,将数据<S,A,R,S’>的顺序为一个样本存入内存中的经验池中;
3)进程二进行对评价网络参数的训练,当经验池中的数据量大于预定的阈值时,CPU从经验池中随机抽取出batch规模数据,将状态S’输入至运行于FPGA的目标网络,返回目标Q值,根据贝尔曼方程在CPU中计算出作为训练评价网络的数据标签,将batch规模的S作为输入,进行运行于FPGA的评价网络进行训练,CPU、FPGA、内存之间的数据交互如图3所示,CPU与FPGA内的神经网络的数据交互如图5所示;
4)每训练达到预定的次数,将内存中的参数ω-更新为ω,参数ω为动作网络和评价网络所使用,目标网络使用的参数为ω-,图4所示为内存的分配方式,参数ω和ω-使用固定位置,FPGA可以直接通过数据传输总线进行参数的读写;
5)达到指定的训练次数或交互环境返回的奖励值达到预期,则任务结束。
对于一些在FPGA内部无法完成的操作,如神经网络的初始化、从经验池选取数据,均需要产生随机数,因此将这部分操作放在CPU上进行。此外,对于位于内存固定位置的参数ω-的更新,通过FPGA可编程逻辑电路完成。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (4)
1.一种深度强化学习加速训练的方法,其特征在于,包括如下步骤:
1)在CPU+FPGA平台下运行该方法,CPU作为控制设备同时运行强化学习交互环境,FPGA作为计算设备进行神经网络前向和反向的计算;
2)在内存的固定位置分配参数ω、ω-和经验池,ω为动作网络和评价网络的参数,ω-为目标网络的参数,由CPU完成初始化,FPGA和CPU可以通过数据传输总线直接访问;
3)利用CPU的多进程机制同时进行两个进程,进程一进行策略与环境的交互来完成数据采集,进程二利用采集的数据进行神经网络的训练;
4)进程一中的策略为运行与FPGA上的动作网络,输入为状态S,输出为动作Q值,CPU通过选择的Q值产生奖励值R和下一状态S’,将数据以形式为<S,A,R,S’>存入经验池中;
5)进程二通过CPU抽取batch规模的数据,放入运行于FPGA上的目标网络产生数据标签,最后放入运行于FPGA上的评价网络进行神经网络的反向传播训练;
6)根据训练的次数来更新参数ω-,系统达到指定要求后,训练完成。
2.按照权利要求1所述的一种深度强化学习加速训练的方法,其特征在于,数据采集与策略的训练通过CPU控制两个进程来并行执行。
3.按照权利要求1所述的一种深度强化学习加速训练的方法,其特征在于,在FPGA上运行动作网络、评价网络、目标网络,其中动作网络用于数据采集的策略,其输入大小为一个状态S,评价网络、目标网络用于训练,输入大小都为batch规模的状态,其中目标网络只做前向计算,评价网络做前向和反向的计算用于更新网络参数。
4.按照权利要求1所述的一种深度强化学习加速训练的方法,其特征在于,内存的固定位置分配参数,FPGA能够通过数据传输总线直接读写参数,通过CPU进行参数的初始化和读写经验池数据,并传输相应的数据输入和数据标签至FPGA中的神经网络。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910048075.XA CN109783412B (zh) | 2019-01-18 | 2019-01-18 | 一种深度强化学习加速训练的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910048075.XA CN109783412B (zh) | 2019-01-18 | 2019-01-18 | 一种深度强化学习加速训练的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783412A true CN109783412A (zh) | 2019-05-21 |
CN109783412B CN109783412B (zh) | 2022-04-22 |
Family
ID=66501769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910048075.XA Active CN109783412B (zh) | 2019-01-18 | 2019-01-18 | 一种深度强化学习加速训练的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783412B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110850877A (zh) * | 2019-11-19 | 2020-02-28 | 北方工业大学 | 基于虚拟环境和深度双q网络的自动驾驶小车训练方法 |
CN110955535A (zh) * | 2019-11-07 | 2020-04-03 | 浪潮(北京)电子信息产业有限公司 | 一种多业务请求进程调用fpga设备的方法及相关装置 |
CN111562837A (zh) * | 2020-05-02 | 2020-08-21 | 桂林理工大学 | 一种多cpu/gpu异构服务器的功耗控制方法 |
CN111652365A (zh) * | 2020-04-30 | 2020-09-11 | 哈尔滨工业大学 | 一种用于加速Deep Q-Network算法的硬件架构及其设计空间探索方法 |
CN111832720A (zh) * | 2020-09-21 | 2020-10-27 | 电子科技大学 | 一种可配置神经网络推理与在线学习融合计算电路 |
CN112060075A (zh) * | 2020-07-21 | 2020-12-11 | 深圳先进技术研究院 | 步态生成网络的训练方法、训练设备以及存储介质 |
CN112327821A (zh) * | 2020-07-08 | 2021-02-05 | 东莞市均谊视觉科技有限公司 | 一种基于深度强化学习的智能清洁机器人路径规划方法 |
CN112434755A (zh) * | 2020-12-15 | 2021-03-02 | 电子科技大学 | 一种基于异构系统的数据异常感知方法 |
CN112734048A (zh) * | 2021-01-26 | 2021-04-30 | 天津飞腾信息技术有限公司 | 一种强化学习方法 |
CN112732436A (zh) * | 2020-12-15 | 2021-04-30 | 电子科技大学 | 一种多核处理器-单图形处理器的深度强化学习加速方法 |
CN113296736A (zh) * | 2020-02-24 | 2021-08-24 | 中科寒武纪科技股份有限公司 | 基于随机数的数据处理方法、随机数生成方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150324690A1 (en) * | 2014-05-08 | 2015-11-12 | Microsoft Corporation | Deep Learning Training System |
CN106778910A (zh) * | 2017-01-12 | 2017-05-31 | 张亮 | 基于本地训练的深度学习系统和方法 |
CN108090565A (zh) * | 2018-01-16 | 2018-05-29 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
CN108446534A (zh) * | 2018-03-13 | 2018-08-24 | 腾讯科技(深圳)有限公司 | 选择神经网络超参数的方法、装置和计算机可读存储介质 |
US20180314941A1 (en) * | 2017-02-23 | 2018-11-01 | Cerebras Systems Inc. | Accelerated deep learning |
US20180322386A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Fine-grain compute communication execution for deep learning frameworks |
US20180322383A1 (en) * | 2017-05-02 | 2018-11-08 | International Business Machines Corporation | Storage controller accelaration for neural network training and inference |
-
2019
- 2019-01-18 CN CN201910048075.XA patent/CN109783412B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150324690A1 (en) * | 2014-05-08 | 2015-11-12 | Microsoft Corporation | Deep Learning Training System |
CN106778910A (zh) * | 2017-01-12 | 2017-05-31 | 张亮 | 基于本地训练的深度学习系统和方法 |
US20180314941A1 (en) * | 2017-02-23 | 2018-11-01 | Cerebras Systems Inc. | Accelerated deep learning |
US20180322383A1 (en) * | 2017-05-02 | 2018-11-08 | International Business Machines Corporation | Storage controller accelaration for neural network training and inference |
US20180322386A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Fine-grain compute communication execution for deep learning frameworks |
CN108090565A (zh) * | 2018-01-16 | 2018-05-29 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
CN108446534A (zh) * | 2018-03-13 | 2018-08-24 | 腾讯科技(深圳)有限公司 | 选择神经网络超参数的方法、装置和计算机可读存储介质 |
Non-Patent Citations (3)
Title |
---|
HUIMIN LI等: ""A high performance FPGA-based accelerator for large-scale convolutional neuralnetworks"", 《2016 26TH INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS (FPL)》 * |
ZHIQIANG LIU等: ""Throughput-Optimized FPGA Accelerator for Deep Convolutional Neural Networks"", 《ACM TRANSACTIONS ON RECONFIGURABLE TECHNOLOGY AND SYSTEMS (TRETS)》 * |
洪启飞: ""面向深度学习的FPGA硬件加速平台的研究"", 《中国优秀硕士论文全文数据库 信息科技辑》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955535A (zh) * | 2019-11-07 | 2020-04-03 | 浪潮(北京)电子信息产业有限公司 | 一种多业务请求进程调用fpga设备的方法及相关装置 |
CN110955535B (zh) * | 2019-11-07 | 2022-03-22 | 浪潮(北京)电子信息产业有限公司 | 一种多业务请求进程调用fpga设备的方法及相关装置 |
CN110850877A (zh) * | 2019-11-19 | 2020-02-28 | 北方工业大学 | 基于虚拟环境和深度双q网络的自动驾驶小车训练方法 |
CN113296736A (zh) * | 2020-02-24 | 2021-08-24 | 中科寒武纪科技股份有限公司 | 基于随机数的数据处理方法、随机数生成方法及装置 |
CN111652365A (zh) * | 2020-04-30 | 2020-09-11 | 哈尔滨工业大学 | 一种用于加速Deep Q-Network算法的硬件架构及其设计空间探索方法 |
CN111652365B (zh) * | 2020-04-30 | 2022-05-17 | 哈尔滨工业大学 | 一种用于加速Deep Q-Network算法的硬件架构及其设计空间探索方法 |
CN111562837A (zh) * | 2020-05-02 | 2020-08-21 | 桂林理工大学 | 一种多cpu/gpu异构服务器的功耗控制方法 |
CN111562837B (zh) * | 2020-05-02 | 2023-05-05 | 桂林理工大学 | 一种多cpu/gpu异构服务器的功耗控制方法 |
CN112327821A (zh) * | 2020-07-08 | 2021-02-05 | 东莞市均谊视觉科技有限公司 | 一种基于深度强化学习的智能清洁机器人路径规划方法 |
CN112060075A (zh) * | 2020-07-21 | 2020-12-11 | 深圳先进技术研究院 | 步态生成网络的训练方法、训练设备以及存储介质 |
CN111832720A (zh) * | 2020-09-21 | 2020-10-27 | 电子科技大学 | 一种可配置神经网络推理与在线学习融合计算电路 |
CN112732436A (zh) * | 2020-12-15 | 2021-04-30 | 电子科技大学 | 一种多核处理器-单图形处理器的深度强化学习加速方法 |
CN112434755A (zh) * | 2020-12-15 | 2021-03-02 | 电子科技大学 | 一种基于异构系统的数据异常感知方法 |
CN112734048A (zh) * | 2021-01-26 | 2021-04-30 | 天津飞腾信息技术有限公司 | 一种强化学习方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109783412B (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783412A (zh) | 一种深度强化学习加速训练的方法 | |
Rothmann et al. | A survey of domain-specific architectures for reinforcement learning | |
Verhelst et al. | Embedded deep neural network processing: Algorithmic and processor techniques bring deep learning to iot and edge devices | |
CN110110851B (zh) | 一种lstm神经网络的fpga加速器及其加速方法 | |
Da Silva et al. | Parallel implementation of reinforcement learning Q-learning technique for FPGA | |
Sripad et al. | SNAVA—A real-time multi-FPGA multi-model spiking neural network simulation architecture | |
CN108090565A (zh) | 一种卷积神经网络并行化训练加速方法 | |
CN109409510B (zh) | 神经元电路、芯片、系统及其方法、存储介质 | |
CN108090560A (zh) | 基于fpga的lstm递归神经网络硬件加速器的设计方法 | |
CN110352433A (zh) | 用于神经网络处理的具有矩阵-向量相乘区块的硬件节点 | |
CN109003603A (zh) | 语音识别方法及相关产品 | |
CN104765589B (zh) | 基于mpi的网格并行预处理方法 | |
CN108763159A (zh) | 一种基于fpga的lstm前向运算加速器 | |
CN107609641A (zh) | 稀疏神经网络架构及其实现方法 | |
Meng et al. | Accelerating proximal policy optimization on cpu-fpga heterogeneous platforms | |
Savich et al. | A scalable pipelined architecture for real-time computation of MLP-BP neural networks | |
Farmahini-Farahani et al. | Parallel scalable hardware implementation of asynchronous discrete particle swarm optimization | |
CN110135584A (zh) | 基于自适应并行遗传算法的大规模符号回归方法及系统 | |
CN117642721A (zh) | 机器学习加速器中的部分和累加的调度感知、动态可重新配置加法器树体系结构 | |
Mohaidat et al. | A survey on neural network hardware accelerators | |
Hassanein et al. | Parallel hardware implementation of the brain storm optimization algorithm using FPGAs | |
Geng et al. | CQNN: a CGRA-based QNN framework | |
Arlagadda et al. | Hardware-Software Co-Design for Efficient Deep Learning Acceleration | |
Bartók et al. | Design of a FPGA accelerator for the FIVE fuzzy interpolation method | |
Trensch et al. | A system-on-chip based hybrid neuromorphic compute node architecture for reproducible hyper-real-time simulations of spiking neural networks |
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 |