查看: 2360|回复: 0

利用 OpenCL™ 平台和英特尔® Stratix® 10 FPGA 加快深度学习发展

[复制链接]
  • TA的每日心情

    2018-8-2 13:58
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2019-8-2 09:55:29 | 显示全部楼层 |阅读模式
    分享到:

    在这个高度依赖图像的时代,英特尔® FPGA 可利用 OpenCL™ 平台满足巨大的图像处 理和分类需求

    简介
    从 2015 年到 2020 年,互联网视频流量将增长四倍。[1] 鉴于可视数据的爆炸性增长, 找到有效的图像排序、分类和识别方法变得至关重要。卷积神经网络(CNNs)是一种基 于人脑功能的机器学习方法,通常用于图像分析。软件可将图像分为多个部分(通常采 取重叠操作),然后通过分析图像形成可视空间的整体示意图。该流程需要采用多个复 杂的数学运算步骤以分析、比较和识别图像,同时保持较低的错误率。

    开发人员使用计算密集型算法创建 CNN,并在各种平台上对其进行实施。本白皮书介绍 了 CNN 在英特尔® Stratix® 10 FPGA 上的实施方案。对于大批量任务,该方案能以每瓦 每秒 70 幅图像的速度每秒处理 14,000 幅图像;对于批量大小为 1 的任务,该方案能 以每瓦每秒 18 幅图像的速度每秒处理 3,015 幅图像。† 这些数字表明,英特尔 Stratix 10 FPGA 在处理大批量任务时完全可媲美其他高性能计算(HPC)器件(如 GPU), 在处理小批量任务时则比其他器件更快。

    CNN 性能指标评测

    自 2010 年以来,Stanford Vision Lab 便开始举办 ImageNet Large Scale Visual Recognition Challenge(ILSVRC)比赛。参赛者需开发一款 CNN 算法对包含数百 万个图像或视频剪辑的数据集中的对象进行分析和分类。相比之前的算法,2012 年 的获奖算法 AlexNet* [2] 在降低分类错误率方面实现了巨大飞跃。[3] 2014 年的获奖 算法(GoogLeNet*)进行了相应改进,能够进一步降低错误率。[4] 英特尔开发了一 种新型设计来实施经过修改的性能指标评测算法,从而提升基于英特尔 FPGA 的CNN 运算性能。
    CNN 算法包括一系列运算或层级。例如,AlexNet 算法包括:

    • 卷积层,负责在 3D 数据阵列(称为特征图谱)和 3D 滤波器上实施卷积运算。该运 算将修正线性单元(ReLU)用作激活函数。
    • 跨通道局部响应归一化层,负责按一个因子对特征图谱元素进行扩展,该系数是邻近 通道中与归一化中元素处于相同位置的元素的函数。
    • 最大值池化层,负责读取 2D 窗口中的数据,并输出最大值。

    图 1. Alexnet 算法层

    • 全连接层,负责实施特殊的卷积函数,其中每个节点连接至上 一层的每个节点。借助扁平化滤波器,输出可表示为扁平化版 本(2D)输出特征图谱的矩阵点积。

    • softmax 层,负责使用 softmax 函数(归一化指数函数)对输 入特征图谱值进行归一化处理。该层可输出 1,000 个元素的矢 量,可能包含属于原始ILSVRC 图像集中 1,000 个可能类别中 的一个的概率。

    GoogLeNet 包含卷积、池化和 softmax 层,以及不同配置的 inception层组成。

    将英特尔 Stratix 10 FPGA 用于 CNN

    CNN 算法为计算密集型算法,开发人员通常可使用矩阵乘法获 取结果。该乘法需要大量外部内存带宽来回传输大型数据集。此 外,多数 FPGA CNN 设计存在各种低效问题:

    • 许多设计仅实施卷积层,致使其余层的处理成为瓶颈。
    • 在 FPGA 和外部内存之间传输大量数据成为瓶颈。
    • 许多设计未能发挥 FPGA 的最高运行性能,导致较低的算法 性能。

    借助 OpenCL§ 平台,英特尔创建了一种新型深度学习加速器 (DLA)架构,该架构为实现出色性能进行了优化。在多数 CNN 中,卷积层使用大量的浮点运算。DLA 通过实施并行计 算实现最大的卷积层吞吐量,并行使用尽可能多的 FPGA DSP 模块。DLA 构建模块被编写为可独立和同时执行的 OpenCL 内核

    利用并行计算

    使用并行性提高总体吞吐量。卷积层有四部分可利用 DLA 进行 矢量化处理:

    • 输出特征列(Q)
    • 输出特征图谱(K)
    • 输入特征图谱(C)
    • 输入特征列(W)

    DLA 使用点积对矢量进行运算。将卷积运算分解为单独的点积有 助于更高效地使用 FPGA 的 DSP 模块。此外,将输入和输出特 征列转化为矢量有助于 DLA 使用 Winograd* 转换简化算法,后 面将谈到这一点。

    图 2. DLA 架构

    图 3 . 流缓冲区

    在芯片上对数据进行高速缓存

    DLA 可在片上 RAM 中对特征数据进行高速缓存,将其流传输至 并行处理组件(PE)的菊花链,以计算卷积层和完全连接层。 为避免空转的计算周期,DLA 对数据进行了双缓冲,并同时实 施卷积与 PE 高速缓存更新。在卷积层执行时,DLA 将特征数据 流传输至 PE,同时将输出存回 RAM 缓冲区。该架构可减少不必 要的外部内存访问,以免影响带宽。此外,高速缓存有助于 DLA 再次使用输入特征图谱和滤波器权重。

    使用 Winograd* 转换简化计算

    Shmuel Winograd 开发了创新型最小滤波算法,相比传统的卷 积运算,该算法可将 CNN 的复杂性降低至 1/4。[5] 这些算法尤 其能与小型滤波器高效配合。AlexNet 和 GoogLeNet 拓扑结构 在多数卷积层中使用 3x3 小型滤波器,目前建模的其他 CNN 架 构也使用小型滤波器。通过 Winograd 转换,DLA 可减少卷积 运算中所需的乘积累加运算。例如,DLA 在每个时钟周期内仅使 用 6 次乘法和加法,而非标准卷积运算所需的 12 次。

    图 4 . 使用 Winograd 转换

    最佳架构建模

    开发人员可使用输入/输出特征图谱和列矢量化因子(Qvec、 Kvec、Cvec 和 Wvec)对 DLA 性能建模。例如,下列方程式可 用于对所需的 DSP 模块数量建模(未使用 Winograd 转换):

    NDSPblocks =(Wvec – Qvec + 1)× Qvec × Kvec × Cvec × 0.5

    同样,开发人员可对下列信息建模:

    • 为任何指定层存储最大输入和输出特征图谱所需的 M20K RAM 模块数量。
    • 处理一个卷积层的一幅图像所需的周期数。
    • 每秒图像数的吞吐量。

    该建模可帮助开发人员确定目标 FPGA(具有指定 fMAX、Wvec 和 Qvec)的最佳 Cvec 和 Kvec 值。建模和实证检验结果非常一致,如 图 5 所示

    图 5. 比较建模和实证检验

    DLA 性能结果

    图 6 - 9 提供了预测的 AlexNet 和 GoogLeNet 数据性能指标评 测结果。它比较了在英特尔 Arria® 10 和英特尔 Stratix 10 FPGA 上运行的 DLA 和使用 nVidia* Tesla* P4 与 P40 GPU(基于 nVidia Pascal* 架构[6])的 GPU 的性能。性能指标评测的实施使 用了下列软硬件:

    • 英特尔 Arria 10 GX1150 FPGA
    • 英特尔 Stratix 10 GX2800 FPGA
    • 带有 OpenCL 的英特尔 Quartus® Prime 设计套件 v16.1
    • nVidia P40 和 P4 GPU[7]
    • nVidia TensorRT* 神经网络推理引擎[8]

    nVidia P4 和 P40 性能数据发布在 nVidia 开发人员网站上,并 在 2016 年 GPU 技术大会上进行了演示,英特尔在实验中也进 行相关计算。

    如图 6-9 所示,英特尔 Arria 10 和英特尔 Stratix 10 FPGA 能 与最新一代的 nVidia GPU 一较高下。

    图 6. 比较 AlexNet 性能,大于等于 32 的大批量任务

    图 7. 比较 AlexNet 效率,大于等于 32 的大批量任务

    图 8. 比较 GoogLeNet 性能,批大小为 1




    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 23:08 , Processed in 0.105866 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.