首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

深度学习与FPGA更新2

深度学习与FPGA更新2

设计FPGA模块研究[10]使用的FPGA是Xilinx的Zedboard Zynq ZC7020板子。图5是它的概览

LSTM主要进行的是矩阵的乘法和非线性函数的计算(tanh,sigmoid),因此,选择了Q8.8定点。
  • 矩阵乘法由MAC单元进行(Multiply Accumulate),一共有两个数据流:向量和权重矩阵流,如图6(a)。在迭代完一次之后MAC就会重置以防止之前的数据混入下一时刻的数据。两个MAC单元的数据相加之后进行非线性函数计算。同时用一个rescale模块将32位的数据转变为16位的数据。
  • 标量计算的模块,是为了计算
    c
    t



    h
    t


    ,最终传入下一时刻的计算。如图6(b).
  • 整个模型一共用了三个图6(a)和一个图6(b)的模块,如图6(c)。数据的流入流出用了DMA(Direct Memory Access)串口控制。由于DMA串口是独立的,因此,还需要一个时钟模块对其进行时序控制。时钟模块主要是一个缓冲存储器组成并暂存了一些数据直到数据都到达。当最后的一个端口数据流入时钟模块才开始传送数据,这保证了输入跟权重矩阵是同个时刻相关的。

因此,LSTM模型的运算分为三个阶段:
  • 计算
    i
    t



    c
    ^

    t


  • 计算
    f

    t



    o
    t


  • 计算
    c
    t



    h
    t



    第一和第二阶段两个门模块(4个MAC单元)并行计算,得到了
    i
    t


    ,
    c
    ^

    t


    ,
    f

    t



    o
    t


    并且存入FIFO(First In First Out)中。最后一个阶段取出FIFO中的向量计算
    c
    t



    h
    t


    。之后,LSTM模块继续等待进行下一层或者下一时刻的数据的计算。在最后的时刻LSTM计算到最后一层之后,模型输出最终的目标值。
结果分析通过在不同平台上训练LSTM网络,我们得到了不同模型的对比。表1是平台的参数,运行结果如图7,可以发现:即使在142MHz的时钟频率下,FPGA平台下的运行时间远远小于其他平台,并行八个LSTM 记忆细胞的处理取得了比 Exynos5422 快16倍的结果。


未来展望深度学习采用包含多个隐藏层的深层神经网络(DeepNeural Networks,DNN)模型。DNN内在的并行性,使得具备大规模并行体系结构的GPU和FPGA成为加速深度学习的主流硬件平台,其突出优势是能够根据应用的特征来定制计算和存储结构,达到硬件结构与深度学习算法的最优匹配,获得更高的性能功耗比;并且,FPGA灵活的重构功能也方便了算法的微调和优化,能够大大缩短开发周期。毫无疑问,FPGA在深度学习的未来是十分值得期待的。
返回列表