中文 英语
18lickc新利
的意见

从加速感知ML模型设计中获得更好的边缘性能和效率

理解ML模型和目标硬件,以充分利用推理加速器。

受欢迎程度

机器学习技术的出现得益于gpu、tpu和fpga等加速技术的使用。事实上,如果没有加速技术的使用,机器学习很可能仍然停留在学术界的范围内,不会产生今天在我们世界上的影响。显然,机器学习已经成为解决自动驾驶汽车导航、自动语言翻译和工业计算机视觉等具有挑战性问题的重要工具。对加速的需求和使用只会继续增长,认识到在设计机器学习模型时考虑到加速的价值是很重要的。

一旦组织决定将机器学习模型部署到生产中,无论是在云中还是在边缘,都需要在模型的平台上做出进一步的决策。关键是要确保模型能够以最优的方式运行,因为它的部署既可以是广泛的(在数百万个系统上运行),也可以是长期的(运行数年)。在这里,确保开发人员既理解ML模型,又理解它所运行的目标硬件,并确保模型的执行尽可能高效就变得非常重要。实际情况是,在使用推理加速硬件时,预先做出适当的设计决策可以显著提高性能、效率和准确性。

以下是常见AI推理加速器中使用的一些方法,其中模型的设计是为了最大限度地利用它们。这些技术将确保您的边缘AI应用程序获得最大的性能和效率。

精度

第一个也是最广泛和已知的加速技术被称为“量化”。在训练和测试模型时,模型中用于激活和权重的所有数据通常都是浮点格式的。虽然cpu和gpu都可以非常有效地处理浮点格式的数据,但与此相关的是巨大的内部硬件硅和功耗成本。因此,专用加速器通常在可能的情况下尝试使用较低精度的算法。这种方法在硅和电力方面效率更高。

目前常用的数据格式是8位和16位整数(INT8和INT16)和16位浮点格式(BF16)。涉及大矩阵乘法的计算密集型运算符,通常用于卷积层、全连接层和变压器层,从精度的降低中获得最大的好处。但是,使用INT8算法而不是浮点数会降低精度。根据应用的不同,这种准确性的损失可能是可以接受的,以换取更高的吞吐量和更低的功耗和操作成本。对于大多数常见模型,Flex Logix使用的技术可以实现不到1%的精度损失,但所有模型开发人员都应该意识到,推理处理可能会使用精度较低的数据类型,并相应地进行规划。

通道深度和映射计算资源

加速器中繁重的矩阵计算通常在具有某种架构并行性的硬件块中执行。例如,某个计算块可以执行一个32个元素的向量(int8)(这些通常是激活)乘以一个32×32大小的矩阵(这些通常是权重),结果是32个元素的向量(通常是激活函数之前的下一层激活)。然后从这些较小的块构建更大的矩阵乘法。

例如,如果我们有一个2D卷积层操作,在输入特征图中有47个输入通道,2D卷积窗口大小为3×3,输出通道为94个,在这种情况下,输入向量中的“过滤器大小”或元素数量将为3*3*47 = 423,并且需要乘以423×94矩阵。显然,将这样的矩阵乘法映射到32×32乘数块将创建一些未使用的计算能力,这将导致较低的计算资源利用率。如果输入通道和输出通道的数量可以被32整除,那么利用率可以是100%。

所描述的问题在深度卷积中变得更加明显。在深度卷积中,对窗口大小和通道的长过滤器的计算被分割为两个单独的小过滤器的计算——一个是窗口大小,另一个是通道。当这两个数字都不是固有硬件资源并行度的倍数时,硬件资源利用不足的问题就会变得更加严重。模型开发人员应该考虑加速器和相应结构模型的固有并行性,以获得最大的执行效率。

内存并行性和常规数据访问模式

在上一节中,我们描述了高计算利用率的一个条件—计算资源的良好映射。影响利用率的另一个重要条件是支持内存访问中的高并行性。

通常,加速器将包含许多具有某些固有并行性的基本计算块,在许多情况下需要在一组并行数据上并行地使用这些基本计算块。例如,在二维卷积的情况下,这样的块会在同一个卷积滤波器的小部分上执行小的矩阵乘法计算,也会在多个滤波器上执行小的矩阵乘法计算(多卷积窗口计算)。在这两种情况下,数据都需要以高度并行的方式输入到计算块中。通常,这是通过利用内部加速器小块sram来完成的,这可能具有巨大的并行带宽。问题是如何将数据从这些小的SRAM块路由到计算块。这是通过灵活的多路复用器来完成的,它将sram连接到计算块。然而,这些多路复用器不具有将任何字节路由到任何字节的绝对灵活性,因为为了节省硅面积,连接路径通常是有限的。因此,理想情况下,数据访问模式将遵循由加速器多路复用器支持的模式,否则加速器将无法为计算提供足够的并行数据,整个系统将变慢。一个很好的例子是ShuffleNet中的“Shuffle”操作符,它伪随机地将一些通道从特征映射中提取到一组通道中,以便在下一层中处理。这种方法虽然对于软件实现是可行的,但在加速器数据路径硬件中却很难有效地实现,并且在使用时会导致硬件利用率不足。 Models should avoid the use of operators that have been shown to be difficult to implement in parallelized accelerator hardware.

总结

我们坚信,除了致力于减少重量和MAC操作以及提高精度之外,模型的重要特征还应该注意模型固有的“加速器友好性”。

ML加速器可以在处理ML模型时提供显著的性能和效率优势。

ML模型的开发人员应该与ML加速器开发人员(如Flex Logix)合作,以确保他们的模型在不牺牲准确性的情况下实现最高的性能和效率。



留下回复


(注:此名称将公开显示)

Baidu