中文 英语
18lickc新利
的意见

最大化边缘AI性能

简单的步骤,以确保你得到最快的推论。

受欢迎程度

卷积神经网络模型的推理算法简单,但要获得最快的性能为您的应用程序有几个陷阱部署时要牢记。很多因素使高效的推理困难,我们将第一步通过之前进入特定的解决和解决。通过本文的结尾,您将拥有四个工具使用前构建系统。

为什么加速卷积层?

一般来说,运算都是关于滑动一个函数在别的东西。在图像数据的背景下,我们滑动窗口在像素三个频道(RGB)和应用相同的功能在每个窗口。


图1:在图像卷积窗。

在CNN的卷积层,每个窗口的函数执行实际上以聪明元素与一个矩阵乘法(不一定相等的大小)的固定值称为滤波器。一组多个过滤器也被称为一个回旋的内核。过滤器在这个内核的数量最终将通道层将输出的数量。


图2:在一个回旋的层,实际我们卷积函数是一系列element-wise矩阵乘法与不同的过滤器。注意:每一个数学运算实际上是一个融合乘、加(FMA)操作,也称为“张量运算”。

使用快速矩阵乘法算法

第一个和最大的挑战与CNN推理是每一层需要大量的矩阵乘法,如上所述。操作的数量规模的大小与图像,以及过滤器的数量在每一层。虽然没有办法避免这些计算,专门的推理解决方案硬件快速矩阵乘法算法如Winograd转换。转换等常见的3×3回旋的内核,可以减少操作所需要的数量的影响2.25倍!因此,首先和最一般的优化可以使是确保您的部署解决方案是能够利用优势快速矩阵乘法算法Winograd可以提供。例如,专用soc像Flex Logix InferX X1电路建在,可以动态地执行所需转换Winograd乘法。

数字转换低精度的数据类型

就像乘法的数量可能显著不同层之间,也并不需要层之间传递的数据量。这些数据被称为激活能量,或激活。内在神经网络近似,一旦一个函数被训练FP32或FP16,额外的精度,这些数据类型为推理提供是不必要的。改变数据类型的CNN的过程称为量化。共同的框架PyTorch和TensorflowLite,量化INT8训练后可以实现培训所需数据的一小部分,而且只有几行代码。量化的好处为推理可能导致立即在延迟2 x改进推理即使在FP16 !

选择硬件的灵活性

接下来,通过CNN推理所得,每一层不同的卷积从前面的层。无论是改变窗口大小的内核或使用不同数量的过滤器,模具和形状激活的操作有不同比例的内存访问计算。早期层可能有更多的计算相对于它需要的内存量,而中间层将操作在一个非常大的激活数据只有执行计算的一小部分。本质上,一个架构,可以适应这些变化的内存和计算访问模式将在一个不具有优势。例如,InferX X1利用Flex Logix eFPGA技术动态重新配置层之间维持一个最佳的datapath公司整个推理。所以,当部署看,选择一个架构,可以适应。

流数据

最后,当训练模型,这一过程称为向后传播,信息更新模型的权重生成基于每一块训练数据。一种减少所需的内存带宽是“批处理”数据和总结这些权重的不同变化的数据集。上下文的推理,批处理的方法和并行计算多个推断,要一层一层地还可以提高吞吐量,但代价的延迟。例如,在实时应用程序中,您将不得不等待足够的数据来开始之前,一些硬件,而不是使用所有处理元素在一个工作,你最终分裂并行处理多个推论的资源。如果最快的推论是关心您的应用程序,记得来推断批大小的1。

结论

更快的推理对实时应用程序的设计开辟了新的可能性,可以最终为你和你的客户不仅节省时间,而且还钱。正如本文亮点的,现在你有一个模板可以应用在结束应用程序提高推理性能,不管是医疗成像、工厂自动化、ADAS,或完全不同的东西!只要记住这四个关键工具:1)确保你利用矩阵乘法算法快,2)量化INT8, 3)部署在灵活的硬件和4)对实时应用程序使用批处理= 1。利用这些工具将确保你得到最快的推论可能的应用程序。



留下一个回复


(注意:这个名字会显示公开)

Baidu