近日,浪潮AI团队对FPGA深度学习推理加速引擎TF2进行了重大更新,开源了三大工具:编译器、基于MAC的8比特卷积计算架构和裁剪算法,项目网址https://github.com/TF2-Engine/TF2。TF2是全球首个包含从模型裁剪、压缩、量化到通用模型实现等优化算法的完整方案的FPGA上AI开源框架,可实现通用深度学习模型基于FPGA芯片的高性能低延迟部署。
编译器:实现推理计算的完全自动化
TF2编译器可将PyTorch、Caffe模型编译为FPGA自定义模型结构并进行优化,最终生成FPGA计算需要的配置参数文件,从而实现神经网络推理计算的完全自动化,避免人工理解神经网络结构和计算架构来手动编写配置文件,提高用户AI应用部署效率。
编译器由解析器(Parser)、优化器(Optimizer)、代码生成器(Generator)三个部分组成。其中解析器、优化器存在于模型优化转换工具Transform Kit中,它们可生成优化的模型参数文件。代码生成器存在于FPGA智能运行引擎Runtime Engine中,它可解析优化的模型参数文件,生成FPGA计算需要的配置参数文件。
首先,解析器将PyTorch、Caffe模型解析为自定义的统一的High-level中间模型结构,以方便优化器使用统一的接口来处理不同训练框架的模型结构;
接着,优化器对解析之后的模型进行优化,主要包括数据类型转换、算子合并和不同算子计算顺序确定等操作,生成与FPGA计算架构强相关的Low-level模型结构,并保存模型到文件中;
最后,代码生成器读取优化模型文件,解析并生成FPGA计算需要的参数配置文件,主要包括以下内容:
计算相关参数,如输入输出特征图通道数、宽度、高度,卷积核尺寸、stride,以及对应的向量化之后的值等;
流水线相关参数,如是否流水计算卷积、激活、池化等;
存储相关参数,如各层读写DDR和片上buffer的偏移地址,片上buffer容量大小等。
基于MAC的8比特卷积计算架构:提高DSP资源利用率
最初开源的FPGA计算架构,是用移位计算代替乘法计算来实现CNN的卷积计算单元。用户在使用前,需要先对模型进行训练以实现压缩。移位计算也使得片上的DSP资源使用率低,造成了浪费。
考虑到提高DSP计算能力是FPGA未来最重要的发展方向,而目前基于移位的卷积计算是使用逻辑资源来实现乘法计算,所以浪潮TF2开发团队开发了基于MAC(乘加)计算的通用CNN计算架构,此架构使用DSP资源来完成MAC计算。
此计算架构在之前架构的基础上,加入了基于8比特量化的Winograd算法,不需要对模型参数进行重新训练,可以使原始网络的MAC数量减少到1/2,并保持原始计算精度。
在使用此架构之前,也可使用通道裁剪算法DNS-CP对网络通道进行裁剪,使计算量进一步减少到1/4。目前已测试ResNet50等网络,基本无精度损失。
对于目前TF2中支持的两种计算架构,用户可根据FPGA板卡逻辑资源数量、DSP计算能力、DRAM带宽、功耗要求等实际情况具体选择。如果板卡DSP资源有限、外部DDR带宽有限,并且希望低功耗,可以选择基于SAC(移位计算)的方案;反之,DSP资源比较丰富、DDR带宽也足够的情况下,可以选择基于MAC的方案。
裁剪算法DNS-CP:速度与精度的平衡
DNS-CP算法是TF2 Transform Kit中的重要工具,能够在保证精度的前提下,大幅度压缩DNN深度神经网络模型,压缩后的模型适用于FPGA、GPU、CPU等计算设备,可帮助用户大幅降低计算量,提高开发效率。
经过对裁剪算法的深入了解,浪潮AI团队发现:非结构性裁剪算法压缩比率高,以DNS算法(文献1)为例,它可将Alexnet网络压缩17.7倍并且精度保持不变,且完成训练仅需20个epoch,但要定制硬件才可计算。而DCP算法(文献2)是目前开源算法中性能最优的的通道裁剪算法,可将某一输入通道元素全部重置为0,不需要使用特定硬件,但要先通过训练选择最优裁剪通道,会产生额外的计算量。经测试,使用DCP算法对ResNet50在ImageNet数据集上测试,将浮点数据压缩2倍时,top1下降0.34%。在选择通道时,训练时间会随着block_stage_num增加而增加,裁剪后的网络还需增加一些特定的卷积运算。最新研究(文献3)发现,原始网络的权重对裁剪后模型的性能影响很小,合理的网络裁剪结构至关重要。
基于以上结论,结合DNS算法的裁剪规则以及DCP算法通道裁剪的基本思路,浪潮AI团队开发了DNS-CP算法,该算法融合了两者的优势。具体来说,一是将基于每个权重的裁剪改为通道裁剪,降低了对特定硬件的依赖;二是提高了通道选择的效率,优化后的算法进行通道选择训练仅需2个epoch,且top1精度不变;三是通道裁剪后的模型计算量大幅减少,并无需增加额外的卷积运算。
在ImageNet2012数据集上,对ResNet50采用DNS-CP算法,裁剪结果如表1所示。实测结果显示,DNS-CP算法可将ResNet50裁剪50%,裁剪时间缩短2/3,并可保持原始模型精度,使FPGA计算性能实现翻倍。结合将32位浮点模型压缩为4位整数模型的INQ-Opt算法,模型可精简到原来的1/16,FPGA计算性能提高10倍以上。
Resnet50 |
||||
pruned |
top1 |
top5 |
top1-gap |
top5-gap |
0 |
0.727662 |
0.910144 |
|
|
0.5 |
0.728943 |
0.911824 |
0.13%↑ |
0.17%↑ |
0.6 |
0.718322 |
0.907944 |
0.93%↓ |
0.22%↓ |
表1 ResNet50在ImageNet2012数据集裁剪性能
除了此次更新的三大工具,浪潮AI团队还在继续开发更低比特量化计算、更多神经网络支持架构等,并将继续开源最新研究成果。目前TF2开源社区已吸引了快手、上海大学、华大智造、远鉴科技、睿视智觉、华展汇元等多家公司或研究机构加入,社区将共同推动基于可定制芯片FPGA的AI技术的开源开放合作发展,降低高性能AI计算技术门槛,帮助AI用户和开发者缩短开发周期,共同加速AI应用部署。
参考文献:
[1] Dynamic Network Surgery for Efficient DNNs.
[2] Discrimination-aware Channel Pruning for Deep Neural Networks.
[3] Rethinking the value of network pruning.
[4] Incremental Network Quantization: Towards Lossless CNNs with Low-precision Weights.
[5] A Deep Learning Inference Accelerator Based on Model Compression on FPGA.