FPGA 算力芯片杂谈(续)

FPGA 算力芯片杂谈(续)
滤波器缓存
可以使用双缓冲区,其中一个缓冲区存储当前卷积的权重,而另一个缓冲区用于预取下一个卷积的权重,以提高并发性。
 
低精度
作为AI硬件设计的普遍趋势,供应商正在探索在推理中使用具有相同范围覆盖的低精度数据,例如下面的FP11将具有FP16相同的范围,但由于尾数较小,精度较低。在FPGA中用于推理的数据类型是可配置的,并且FPGA在创建不同数据大小的算术电路方面提供了很大的灵活性。
 
 

但是Winograd在40多年前解决了一个类似的问题。假设我们有两种预处理方法,将4×4数据和3×3滤波器分别转换为两个4×4矩阵(左侧下面的前两行):

 

然后我们将卷积应用于这两个转换矩阵。由于两者大小相同,卷积只需要进行16次乘法。最后,我们执行后处理转换,将其转换回2×2矩阵。结果表明,产生相同的卷积结果存在这样的预处理和后处理转换。更好的消息是,这些转换只涉及简单的加减运算,而不涉及乘法。因此,新的Winograd变换可以节省大量计算。

让我们用1-D数据和滤波器来来证明这个想法。

其中

 数据⊗滤波器的原始卷积方法涉及6次乘法。我们将合并预处理、卷积、后处理步骤,并展示它可以从上面计算m₁、m₂、m₃和m₄中推导出来。使用这个Winograd变换,我们只需要进行4次乘法。

为了完整起见,这里列出了所需的数学变换。可以使用简单的算术运算来完成预处理变换Gg、Bᵀ和后处理变换Aᵀ。

 其中,

 

 在FPGA中,可以在硬件中应用Winograd变换来加速卷积。

 

在全连接层中进行批量数据并行执行

在全连接网络中,为了增加并发性并减少权重的负载,我们可以同时处理一批图像(来自多个视频通道)。

posted @ 2024-07-25 05:44  吴建明wujianming  阅读(6)  评论(0编辑  收藏  举报