FINN(三)BNN在FPGA上的准确性和峰值性能

3.1 使用Roofline估算性能

为了估计和比较BNN性能与固定点CNN,咱们使用了一个roofline模型[29],它考虑了存储器带宽,峰值计算性能和算术强度(读取或写入的off-chip存储器的每一个字节执行的数学运算的数量)。 对于特定算术强度,roofline曲线与垂直线的交点给出理论峰值性能点,其能够是计算约束,也能够是存储器约束。 咱们考虑流行的AlexNet [14]的二值化和8位固定点[25]实现,二者都须要14亿次操做(GOPS)来对一个图像进行分类。web

使用[17]描述的方法,咱们为Xilinx Zynq Ultra Scale + ZU19EG FPGA开发了一个roofline模型。结果如Figure 1所示。咱们首先观察到FPGA的二进制运算的计算限制性能为66 TOPS,比8位高出约16倍,与16位固定点操做相比高出53倍。可是,只有在应用程序不受内存限制的状况下才能达到计算限制峰值。BNN的紧凑模型大小提供了一个关键优点。因为二值化的AlexNet仅须要7.4 MB的参数(与8位的50 MB相比),整个神经网络模型能够保存在片上存储器中,二值化和8位固定点AlexNet变体的算术强度用垂直线表示,所以,BNN几乎可以达到计算峰值,而固定点CNN的峰值性能受到存储器带宽的限制。基于这些观察,设计达到峰值的75%,大概能达到每秒0.75 ·(66 TOPS/1.4 GOPS)≈ 35000张图片的吞吐量。
在这里插入图片描述网络

使用相同的模型,在CPU和GPU上作扩展比较,因为BNN相对较新,所以峰值二进制突触操做性能的数据不多。 例如,[5]在最近的NVIDIA GPU上提到了每6个周期进行32个突触处理(64个二进制运算),这将在2880个核以875 MHz运行的Tesla K40上达到大约26 TOPS的计算峰值,每秒16666个图像用二进制化的AlexNet。svg

3.2 计算过程当中的权衡

网络规模、精确度和准确率之间相互牺牲交换[26],所以,若是有人但愿针对特定问题达到某种分类准确度,哪一种方法能够提供最有效的解决方案?
1)具备浮点精度的常规ANN?
2)更大的网络,可是BNN?性能

为了更深刻地了解这个问题,咱们在MNIST数据集上进行了一组实验,比较同一拓扑结构的浮点和二进制精度的准确性。如Courbariaux等人所述[5],二值网络经过用二值等价物替换规则层来得到。咱们还对BNN的输入图像进行二值化,实验代表,输入二值化数据也对MNIST适用。因为能够训练的可能网络拓扑的空间是有限的,咱们采用了简化问题的方法[26]。将网络拓扑结构化为3个隐藏层、彻底链接的网络,同时缩放每一个层中的神经元数量,并绘制Table 1中的结果准确度以及每帧的参数和操做数。对于这个问题和网络配置空间,一些趋势是明显的:
1)相似于Sung等人的发现 [26]。随着网络规模的增长,低精度网络和浮点网络之间精度的差别减少;
2)为了达到与浮点网络相同的精度,BNN须要2-11倍以上的参数和操做。设计

值得注意的是:咱们显示的是使用32位浮点数训练的网络的准确性,可是下降到8位固定点,而精度没有显着变化[10]。xml

从以前进行的BNN性能估计能够得出:BNN速度是8位固定点上的16倍,这大于参数和操做大小的2-11倍增长。所以得出结论,具备可比较精确度的BNN将比8位固定点速度更快,尽管它们可能须要更多的参数和操做。blog

在这里插入图片描述