当前位置:首页 > 智能硬件 > 人工智能AI
[导读] 基于FPGA的通用CNN加速设计,可以大大缩短FPGA开发周期,支持业务深度学习算法快速迭代;提供与GPU相媲美的计算性能,但拥有相较于GPU数量级的延时优势,为业务构建最强劲的实时AI服务能力

基于FPGA的通用CNN加速设计,可以大大缩短FPGA开发周期,支持业务深度学习算法快速迭代;提供与GPU相媲美的计算性能,但拥有相较于GPU数量级的延时优势,为业务构建最强劲的实时AI服务能力。

WHEN?深度学习异构计算现状

随着互联网用户的快速增长,数据体量的急剧膨胀,数据中心对计算的需求也在迅猛上涨。同时,人工智能、高性能数据分析和金融分析等计算密集型领域的兴起,对计算能力的需求已远远超出了传统CPU处理器的能力所及。

异构计算被认为是现阶段解决此计算沟壑的关键技术,目前 “CPU+GPU”以及“CPU+FPGA” 是最受业界关注的异构计算平台。它们具有比传统CPU并行计算更高效率和更低延迟的计算性能优势。面对如此巨大的市场,科技行业大量企业投入了大量的资金和人力,异构编程的开发标准也在逐渐成熟,而主流的云服务商更是在积极布局。

WHY?通用CNN FPGA加速

业界可以看到诸如微软等巨头公司已经部署大批量的FPGA来做AI inference加速,FPGA相较于其他器件的优势是什么呢?

Flexibility:可编程性天然适配正在快速演进的ML算法

DNN、CNN、LSTM、MLP、reinforcement learning以及决策树等等

任意精度动态支持

模型压缩、稀疏网络、更快更好的网络

Performance:构建实时性AI服务能力

相较于GPU/CPU数量级提升的低延时预测能力

相较于GPU/CPU数量级提升的单瓦特性能能力

Scale

板卡间高速互联IO

Intel CPU-FPGA构架

与此同时,FPGA的短板也非常的明显,FPGA使用HDL硬件描述语言来进行开发,开发周期长,入门门槛高。以单独的经典模型如Alexnet以及Googlenet为例,针对一个模型进行定制的加速开发,往往需要数月的时间。业务方以及FPGA加速团队需要兼顾算法迭代以及适配FPGA硬件加速,十分痛苦。

一方面需要FPGA提供相较于CPU/GPU有足够竞争力的低延时高性能服务,一方面需要FPGA的开发周期跟上深度学习算法的迭代周期,基于这两点我们设计开发了一款通用的CNN加速器。兼顾主流模型算子的通用设计,以编译器产生指令的方式来驱动模型加速,可以短时间内支持模型切换;同时,对于新兴的深度学习算法,在此通用基础版本上进行相关算子的快速开发迭代,模型加速开发时间从之前的数月降低到现在的一到两周之内。

HOW?通用CNN FPGA架构

基于FPGA的通用CNN加速器整体框架如下,通过Caffe/Tensorflow/Mxnet等框架训练出来的CNN模型,通过编译器的一系列优化生成模型对应的指令;同时,图片数据和模型权重数据按照优化规则进行预处理以及压缩后通过PCIe下发到FPGA加速器中。FPGA加速器完全按照指令缓冲区中的指令集驱动工作,加速器执行一遍完整指令缓冲区中的指令则完成一张图片深度模型的计算加速工作。每个功能模块各自相对独立,只对每一次单独的模块计算请求负责。加速器与深度学习模型相抽离,各个layer的数据依赖以及前后执行关系均在指令集中进行控制。

简单而言,编译器的主要工作就是对模型结构进行分析优化,然后生成FPGA高效执行的指令集。编译器优化的指导思想是:更高的MAC dsp计算效率以及更少的内存访问需求。

接下来我们以Googlenet V1模型为例,对加速器的设计优化思路做简单的分析。IncepTIon v1的网络,将1x1、3x3、5x5的conv和3x3的pooling stack在一起,一方面增加了网络的width,另一方面增加了网络对尺度的适应性。下图为模型中IncepTIon的基本结构。

数据依赖关系分析

此部分主要分析挖掘模型中可流水化以及可并行化的计算。流水化的设计可以提高加速器中的计算单元利用率,并行化的计算可以在同一时刻利用尽量多的计算单元。

关于流水,分析部分包括数据从DDR加载到FPGA片上SRAM的操作与PE进行计算的流水,通过此项优化将内存访问的时间overlap;DSP计算整列的计算控制过程,保证DSP利用率的提升。

关于并行,需要重点分析PE计算阵列与激活、pooling以及归一化等“后处理”模块之间的并行关系,如何确定好数据依赖关系以及防止冲突是此处设计关键。在IncepTIon中,可以从其网络结构中看到,branch a/b/c的1x1的卷积计算与branch d中的pooling是可以并行计算的,两者之间并不存在数据依赖关系。通过此处优化,3x3 max pooling layer的计算就可以被完全overlap。

模型优化

在设计中主要考虑两个方面:寻找模型结构优化以及支持动态精度调整的定点化。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

内部集成电路音频接口(简称I2S)由飞利浦公司开发,用于通过串行接口在不同IC之间传输数字音频数据(例如从处理器到DAC)。该接口使用以下信号进行数据传输:

关键字: 集成电路 FPGA 发射器 CS4344

如果你拥有Forgix和一台笔记本电脑,只需几分钟就能完成这个项目。笔记本电脑通过麦克风采集音频信号,RP2354将采样数据传输至Efinix Trion T8,而FPGA则在真实硬件上执行频谱分析,返回八个频率带的幅度...

关键字: FPGA 音频信号 RP2354

时序报告没有违例,不等于硬件已经满足接口要求。FPGA约束若漏掉外部最早到达条件,或把真实单周期路径错误放宽,工具会给出漂亮结果,电路却可能只在部分板卡和温度下正常运行。

关键字: FPGA 时序 电路

配置位翻转被修正后,设备仍可能继续输出错误结果。针对基于静态存储配置的FPGA,软错误防护必须区分逻辑配置是否恢复与业务状态是否恢复,再判断冗余结构能否覆盖剩余故障。

关键字: FPGA 配置位 软错误

流接口最危险的时刻往往不是满速传输,而是下游突然停止接收。FPGA通路要同时守住逐拍握手的数据完整性和整包输出的可见边界,少一个寄存器或过早提交,都可能造成无法撤回的错误。

关键字: FPGA 反压 寄存器

外存引脚速率足够,采集通路仍可能周期性溢出。FPGA外存规划必须分别回答两个问题:平均能搬走多少有效数据,以及最长没有服务的时段需要多少片上空间,两项指标不能用峰值带宽代替。

关键字: FPGA 地址映射 服务空窗

高速并行采集偶尔错位,原因未必是逻辑时钟太慢。FPGA接收端要把采样位置放进每根数据线的有效窗口,还要防止邻近输出切换侵蚀这个窗口;训练通过与板级稳定必须分别成立。

关键字: FPGA 采样窗口 回流

定点滤波器通过频响仿真后,上板仍可能出现直流偏置或偶发大幅异常。FPGA实现既要控制有限字长产生的数值误差,也要保证级联运算各条路径处理同一个样本,二者不能互相替代。

关键字: FPGA 滤波器 定点滤波器

局部逻辑能够重新加载,不等于业务能够随时换模块。FPGA动态重配置的安全边界,在于旧事务是否真正结束,以及新模块是否按静态系统认可的接口和状态契约重新加入运行。

关键字: FPGA 动态重配置 边界隔离

跨时钟域故障常在长时间运行后才暴露。FPGA设计不能把两级寄存器当成通用通行证:单个事件能否被看见,与一组数据能否属于同一时刻,是两种需要分别证明的条件。

关键字: FPGA 跨时钟域 寄存器
关闭