【干货】腾讯云FPGA的深度学习算法
(1) Layer并行模式:如图3.2所示,按照每个layer的计算量分配不同的硬件资源,在FPGA内同时完成所有layer的计算,计算完成之后将计算结果返回CPU。优点是所有的计算在FPGA中一次完成,不需要再FPGA和DDR DRAM直接来回读写中间结果,节省了的DDR带宽。缺点就是不同layer使用的资源比较难平衡,且layer之间的数据在FPGA内部进行缓冲和格式调整也比较难。另外,这种模式当模型参数稍微调整一下(比如说层数增加)就能重新设计,灵活性较差。 图3.2 layer并行模式下资源和时间分配示意图 (2) Layer串行模式:如图3.3所示,在FPGA中只实现完成单个layer的实现,不同layer通过时间上的复用来完成。优点是在实现时只要考虑一层的实现,数据都是从DDR读出,计算结果都写回DDR,数据控制比较简单。缺点就是因为中间结果需要存储在DDR中,提高了对DDR带宽的要求。 图3.3 layer并行模式下资源和时间分配示意图 我们的设计采用了是Layer串行的模式,数据在CPU、FPGA和DDR直接的交互过程如图3.4所示。 图3.4 计算流程图 3.2.3 计算单个Layer的PM(Processing Module)设计 如图3.5所示,数据处理过程如下,所有过程都流水线进行: (1) Kernel和Data通过两个独立通道加载到CONV模块中; (2) CONV完成计算,并将结果存在Reduce RAM中; (3) (可选)如果当前layer需要做ReLU/Norm,将ReLU/Norm做完之后写回Reduce RAM中; (4) (可选)如果当前layer需要做Max Pooling,将Max做完之后写回Reduce RAM中; (5) 将计算结果进行格式重排之后写回DDR中。 图3.5 Processing Module的结构框图 3.2.4 CONV模块的设计 在整个PM模块中,最主要的模块是CONV模块,CONV模块完成数据的卷积。 由图3.6所示,卷积计算可以分解成两个过程:kernel及Data的展开和矩阵乘法。 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |