如何使用FPGA加速机器学习算法

作者:haoxingheng

当前,AI因为其CNN(卷积神经网络)算法出色的表现在图像识别领域占有举足轻重的地位。基本的CNN算法需要大量的计算和数据重用,非常适合使用FPGA来实现。上个月,Ralph Wittig(Xilinx CTO Office的卓越工程师) 在2016年OpenPower峰会上发表了约20分钟时长的演讲并讨论了包括清华大学在内的中国各大学研究CNN的一些成果。

在这项研究中出现了一些和CNN算法实现能耗相关的几个有趣的结论:
①限定使用片上Memory;
②使用更小的乘法器;
③进行定点匹配:相对于32位定点或浮点计算,将定点计算结果精度降为16位。如果使用动态量化,8位计算同样能够产生很好的结果。

在演讲中Wittig还提到了CNN相关的两款产品:CAPI-compatible Alpha DataADM-PCIE-8K5 PCIe加速卡和Auviz Systems提供的AuvizDNN(深度神经网络)开发库。

ADM-PCIE-8K5 PCIe加速卡
Alpha DataADM-PCIE-8K5 PCIe加速卡用于X86和IBM Power8/9数据中心和云服务,加速卡基于Xilinx Kintex UltraScale KU115 FPGA,支持Xilinx SDAcess基于OpenCL、C/C++的开发和基于Vivado HLx的HDL、HLS设计流程。

图1  Alpha DataADM-PCIE-8K5 PCIe加速卡

图1 Alpha DataADM-PCIE-8K5 PCIe加速卡

Alpha DataADM-PCIE-8K5 PCIe加速卡片上带32GB DDR4-2400内存(其中16GB含ECC),双通道SFP+支持双通道10G以太网接入。提供包括高性能PCIe/DMA在内的板级支持包(BSP) 、OpenPOWER架构的CAPI、FPGA参考设计、即插即用的O/S驱动和成熟的API等设计资源。

AuvizDNN开发库
深度学习技术使用大量的已知数据来找出一组权重和偏置值来匹配预期结果。处理被称之为训练,训练的结果是大量的模型,这一事实促使工程师们寻求使用GPU之类的专用硬件来进行训练和分类计算。

随着未来数据量的巨幅增长,机器学习将会搬到云端完成。这样就急需一种既可以加速算法,又不会大规模增加功耗的处理平台,在这种情况下,FPGA开始登场。

随着一些列的先进开发环境投入使用,软件开发工程师将他们的设计在Xilinx FPGA上实现变得更加容易。Auviz Systems开发的AuvizDNN库为用户提供优化的函数接口,用户可以针对不同的应用创建自定义的CNN。这些函数可以方便的通过Xilinx SDAcess这样的集成开发环境调用。在创建对象和数据池后,就会调用函数创建每一个卷积层、然后是致密层,最后是 softmax层,如下图2所示。

图2 实现CNN的函数调用顺序

图2 实现CNN的函数调用顺序

声明:本文为原创文章,转载需注明作者、出处及原文链接