为什么要处理的图像大小会改变加速器的评估方式。
客户正在考虑AI推理的应用程序,并希望评估多个推理加速器。
当我们上个月讨论过, TOPS与推理吞吐量无关,您应该使用真正的神经网络模型来对加速器进行基准测试。
那么ResNet-50是评估推理加速器相对性能的一个很好的基准吗?
如果您的应用程序将处理小图像(300 x 300像素或更小),那么ResNet-50 batch=1吞吐量可能是评估您的选项的一个好方法,尽管实际上没有人在实际应用程序中使用它。它确实使用了一系列操作,这些操作会对计算造成压力,即使小图像大小并不会对内存子系统造成压力,但如果你的模型是针对小图像的,这是可以的。
但是如果你计划处理大图像(608×608高达百万像素),那么ResNet-50 batch=1吞吐量不一定能预测神经网络模型处理更大图像的性能。(记住,608×608比300×300大四倍;1440×1440 = 200万像素的图像大约大25倍。)
为什么?
神经网络模型包括:
因此,更大、更复杂的模型更难以处理,这不仅是因为更高的计算量,还因为更大的内存需求。
权重占用大量空间:ResNet-50 INT8占用22.7MB, YOLOv3 INT8占用62MB。我们的期望是,未来更好的模型将是更大的模型,有更多的权重。
中间激活存储:ResNet-50最大激活0.8MB,次之0.4MB;这是为224×224图像。因此,对于批处理大小=1,1.5-2MB的缓冲内存就足够了。
YOLOv3的中间激活存储可以大得多,具体取决于映像的大小。YOLOv3对于608×608图像需要18MB的中间激活存储,对于200万像素图像需要>100MB的中间激活存储。
一些只有SRAM的边缘推断加速器在某个时候会耗尽存储所有内容的空间。ResNet-50可能运行得很快,因为它适合SRAM,但YOLOv3可能不会,除非片上SRAM很大,这使得芯片非常昂贵。
代码大小很重要,但还没有人透露他们的芯片的这一信息。
下图显示了ResNet-50和YOLOv3在不同图像尺寸下的权重和激活所需的推理芯片的总兆字节。
AI推理芯片的内存系统实现有3种选择。大多数芯片会有2或3种不同比例的选择组合:
当内存需求超过片上SRAM时,基准测试将决定芯片架构/软件处理DRAM流量的情况:它是否会降低性能,还是被流水线化并“隐藏”在其他事务后面,以最大限度地减少对计算的影响。
ResNet-50是一个流行的基准测试,如果你打算处理小图像,它可以用来比较推断加速器。
但它不会像YOLOv3这样的百万像素模型那样对内存子系统造成压力。
所以,如果你想处理近百万像素和百万像素的图像,就不要使用ResNet-50来比较加速器。YOLOv3是一个可以考虑的很好的替代方案。
我们需要更多的经验测量来描绘原始模型的行为以及集成应用程序的性能。太多的模型、参数和计算引擎供个别研究/产品团队评估。