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

云中的机器学习:FPGA 上的深度神经网络(2)

云中的机器学习:FPGA 上的深度神经网络(2)

因此,很有必要采用并行计算。有很多方法可将实现过程并行化。图 6 给出了其中一种。在这里,将 11x11 的权值矩阵与一个 11x11 的输入特征图并行求卷积,以产生一个输出值。这个过程涉及 121 个并行的乘法-累加运算。根据 FPGA 的可用资源,我们可以并行对 512 抑或 768 个值求卷积。

为了进一步提升吞吐量,我们可以将实现过程进行流水线化。流水线能为需要一个周期以上才能完成的运算实现更高的吞吐量,例如浮点数乘法和加法。通过流水线处理,第一个输出的时延略有增加,但每个周期我们都可获得一个输出。
使用 AuvizDNN 在 FPGA 上实现的完整 CNN 就像从 C/C++ 程序中调用一连串函数。在建立对象和数据容器后,首先通过函数调用来创建每个卷积层,然后创建致密层,最后是创建 softmax 层,如图 4 所示。


图 4 - 实现 CNN 时的函数调用顺序。


AuvizDNN 是 Auviz Systems 公司提供的一种函数库,用于在 FPGA 上实现 CNN。该函数库提供轻松实现 CNN 所需的所有对象、类和函数。用户只需要提供所需的参数来创建不同的层。例如,图 5 中的代码片段显示了如何创建 AlexNet 中的第一层。


图 5 – 使用 AuvizDNN 创建 AlexNet 的 L1 的代码片段


AuvizDNN 提供配置函数,用以创建 CNN 的任何类型和配置参数。AlexNet 仅用于演示说明。CNN 实现内容作为完整比特流载入 FPGA 并从 C/C++ 程序中调用,这使开发人员无需运行实现软件即可使用 AuvizDNN。
FPGA 具有大量的查找表 (LUT)、DSP 模块和片上存储器,因此是实现深度 CNN 的最佳选择。在数据中心,单位功耗性能比原始性能更为重要。数据中心需要高性能,但功耗要在数据中心服务器要求限值之内。  
像赛灵思 Kintex® UltraScale™ 这样的 FPGA 器件可提供高于 14 张图像/秒/瓦特的性能,使其成为数据中心应用的理想选择。图 6 介绍了使用不同类型的 FPGA 所能实现的性能。


图 6 – AlexNets 的性能因 FPGA 类型不同而不同。


一切始于 C/C++
卷积神经网络备受青睐,并大规模部署用于处理图像识别、自然语言处理等众多任务。随着 CNN 从高性能计算应用 (HPC) 向数据中心迁移,需要采用高效方法来实现它们。
FPGA 可高效实现 CNN。FPGA 的具有出色的单位功耗性能,因此非常适用于数据中心。
AuvizDNN 函数库可用来在 FPGA 上实现 CNN。AuvizDNN 能降低 FPGA 的使用复杂性,并提供用户可从其 C/C++ 程序中调用的简单函数,用以在 FPGA 上实现加速。使用 AuvizDNN 时,可在 AuvizDNN 库中调用函数,因此实现 FPGA 加速与编写 C/C++ 程序没有太大区别。
返回列表