基于FPGA的通用CNN加速设计可以大大缩短FPGA开发周期,并支持业务深度学习算法的快速迭代。它提供了可与GPU媲美的计算性能,但与GPU数量级相比具有延迟优势,并为业务实时AI服务功能构建了最强大的业务。什么时候?深度学习异构计算的现状随着Internet用户的快速增长和数据量的快速增长,数据中心对计算的需求也迅速增长。同时,随着人工智能,高性能数据分析和财务分析等计算密集型领域的兴起,对计算能力的需求已远远超过了传统CPU处理器的能力。异构计算被认为是解决此阶段计算差距的关键技术。目前,“ CPU + GPU”被称为“ CPU + GPU”。和“ CPU + FPGA”;是业界最关注的异构计算平台。与传统的CPU并行计算相比,它们具有更高的效率和更低的延迟的计算性能优势。面对如此巨大的市场,技术行业的众多公司投入了大量的金钱和人力,异构编程的开发标准逐渐成熟,主流的云服务提供商也在积极部署。为什么?通用CNN FPGA加速业界可以看到,像Microsoft这样的大公司已经部署了大量的FPGA来进行AI推理加速。与其他器件相比,FPGA有何优势?灵活性:可编程性自然适应快速发展的ML算法DNN,CNN,LSTM,MLP,强化学习,决策树以及其他对模型压缩,稀疏网络,更快更好的网络的任意精度动态支持。性能:与GPU / CPU相比,构建实时性能AI服务能力,与GPU / CPU相比,低延迟预测能力与GPU / CPU更高的单瓦性能能力相比规模板之间的高速互连IOIntel CPU-FPGA架构同时,FPGA的缺点也很明显,FPGA使用HDL硬件描述语言进行开发,开发周期长,入门门槛高。以Alexnet和Googlenet等单个经典模型为例,自定义和加速模型开发通常需要几个月的时间。业务部门和FPGA加速团队需要考虑算法迭代并调整FPGA硬件加速,这是非常痛苦的。一方面,要求FPGA提供与CPU / GPU充分竞争的低延迟和高性能服务。另一方面,需要FPGA开发周期来跟上深度学习算法的迭代周期。基于这两点,我们设计并开发了通用的CNN加速器。考虑到主流模型运营商的总体设计,编译器生成指令以驱动模型加速,从而可以在短时间内支持模型切换;同时,对于新兴的深度学习算法,将在此通用基本版本上执行快速相关的运算符。开发迭代,模型加速的开发时间已从前几个月减少到现在的一到两周。如何?通用CNN FPGA架构基于FPGA的通用CNN加速器的总体框架如下。通过诸如Caffe / Tensorflow / Mxnet之类的框架训练的CNN模型通过对编译器的一系列优化来生成与模型相对应的指令。同时,图像数据和模型权重数据也遵循以下条件。优化规则经过预处理和压缩,然后通过PCIe发送到FPGA加速器。 FPGA加速器完全根据指令缓冲区中设置的指令来驱动工作,并且加速器执行完整指令缓冲区中的指令以完成图片深度模型的计算和加速。每个功能模块是相对独立的,并且仅负责每个单独的模块计算请求。加速器与深度学习模型分离,并且每一层的数据依赖性以及前后的执行关系都在指令集中进行控制。简而言之,编译器的主要工作是分析和优化模型结构,然后生成指令集以供FPGA有效执行。编译器优化的指导思想是:更高的MAC dsp计算效率和更少的内存访问要求。接下来,我们以Googlenet V1模型为例,对acc的设计优化思路进行简单分析。