边缘人工智能加速器只是没有未来准备的软件的沙子

文章作者:Rehan Hameed

与已经建立了编程模型和软件工具链的gpu不同,人工智能处理器面临着缺乏软件支持的问题。

虽然人工智能(AI)的进步通常是由数据中心的大规模gpu驱动的,但在边缘设备上部署人工智能算法需要新一代功率和成本效益高的人工智能芯片。近年来,一些供应商开发了创新的人工智能芯片架构来满足这一需求。然而,与gpu不同的是,gpu有完善的编程模型和软件工具链,目前的人工智能处理器往往关注性能基准,缺乏软件支持。

一个人工智能处理器不能用每秒的tera操作数(TOPS)或每秒可以处理的ResNet50推断来描述。人工智能算法比ResNet50广泛得多,部署人工智能的软件应用和系统配置非常多样化,并不断变化。支持这些用例需要一个类似于gpu的全面和成熟的软件堆栈。

神经算子,拓扑和模型大小

人工智能芯片通常会加速卷积和矩阵乘法运算。然而,TensorFlow这样的现代AI框架拥有400多个推理算子,包括循环单元、转置卷积、可变形卷积和3D算子。当开发人员尝试人工智能加速器时,他们经常发现编译器堆栈不支持他们的网络运营商。如果可以的话,添加这种支持可能会非常痛苦和昂贵。

不仅人工智能研究人员不断炮制新的操作员,模型架构也在不断发展。例如,transformer架构最初是为自然语言处理而构建的。现在它们被用于视觉处理。此外,无监督学习甚至设备上的训练也变得越来越普遍。最终,这意味着加速器的架构及其编译器堆栈必须灵活,以支持当前所有工作负载,同时也理解未来的工作负载。

另一个需求是支持不同的模型拓扑。典型的分类网络如VGGs或ResNet遵循一个简单的前馈结构,其中每一层连接到一个单独的后续层(图1一个).大多数加速器擅长于这些类型的架构。然而,真实世界的应用程序,如语义分割、目标检测、姿态估计和活动识别,通常使用更不规则的拓扑模型,使用层之间复杂的空间连接模式(图1 b).

图1典型的分类网络遵循简单的前馈结构(上图1a),而真实世界的应用程序通常使用更不规则的拓扑模型(下图1b)。来源:深刻的视觉

具有递归性的模型在时空上具有不同的连通性模式。因此,人工智能处理器体系结构的定义必须摆脱对数据流和控制流的严格假设。此外,编译器必须无缝地、自动地将任意神经拓扑映射到硬件。这通常是一个在能力上存在巨大差距的领域。

边缘人工智能模型的大小也各不相同,从几十万到数亿个参数,因此加速器必须有效地支持所有模型的大小而不受限制。这种限制通常是存在的,通常是由于加速器的片上内存大小。这在需要多个模型的应用程序中变得更加重要,这通常是边缘AI应用程序的情况。

人工智能软件使用模型

与数据中心的人工智能相比,边缘人工智能应用采用了一种非常不同的使用模式。后者的任务通常是并行处理数百或数千个数据流,以高吞吐量为关键指标。边缘人工智能系统只处理一个或几个数据流,主要关注的是以最低延迟完成每个推断,以实现实时操作。了解加速器的设计是否适合应用程序的使用模型是很重要的。

以加速器X为例图2,每秒可处理200条推论(IPS)。让我们来看看它是如何在现实世界的应用程序中运行的,它被嵌入到相机中,以30 fps的速度处理帧——每33毫秒就会有一帧新的帧到达。想象一下,AI应用程序有一个由三个模型组成的流水线,每一帧都必须顺序执行。这个应用程序的总推理要求是每帧90个IPS-3推理x 30 FPS。根据基准测试的结果,该加速器显然应该支持两倍于预期的性能。错了!

图2这就是加速器X在实际应用中的运行方式。来源:深度视觉

研究这个加速器的基准过程揭示了重要的假设。首先,它假设加速器在重复地对单个模型进行推断。其次,它假设该模型的多个推论同时在硬件中运行。因此,虽然每次推断需要较长的时间(50毫秒),但达到的平均吞吐量在200 IPS时仍然相对较高。注意,尽管有这个并发执行的假设,但仍然声明为一个批处理,因为推论每次提交给加速器一个。

对于这个现实世界的应用程序,这两个假设都不成立。它不是运行一个单一的模型,而是在每个推断时切换模型,并在一个单一的摄像机流上运行。此外,这个加速器会在切换模型中引起开销,这在面向吞吐量的架构中是典型的。在真实环境下,该加速器的有效推理速率小于20 IPS。每帧大约需要200毫秒来处理,而不是33毫秒的目标,导致性能比基于基准测试的预期差一个数量级。

人工智能芯片工具的期望

优化边缘部署的神经网络涉及到最高可能的精度和加速器的计算资源之间的权衡。这需要迭代模型大小、架构和输入分辨率。开发人员可以评估硬件上的多个候选架构,确定性能和准确性,确定需要改进的地方,更新模型设计,并重复这个循环。

由于大多数应用程序需要多个模型,您不能为每个模型单独执行此过程,因为您必须确保整个模型管道符合可用的计算预算。此外,在此细化过程的同时,还会不断收集额外的数据,以在更多的场景中测试这些模型,这通常会促使进一步的模型设计更改。

这个迭代设计过程需要快速原型,开发人员可以快速编译模型。在这里,这些工具提供了广泛的仿真功能,以验证软件中推断结果的保真度,而不需要部署硬件。这些工具可以准确估计模型实现的延迟、IPS和功耗。此外,在性能或准确性方面存在瓶颈时,工具必须快速定位并缓解瓶颈。

AI Accelerator不是MAC和内存单元的数组

考虑到人工智能应用和工具链需求的多样性,构建硬连线人工智能解决方案并不是一种可行的方法。人工智能加速器设计应该提供高效的原语,编译器可以利用这些原语为每个神经图创建最佳的执行计划。这就要求硬件设计的每一个层面都具有灵活性,包括高效但完全可编程的计算单元、灵活的存储系统和数据路由框架,该框架允许编译器创建通过芯片的任何数据流。

同样需要的是一种任务管理方法,它将这个负担从软件中卸下,但仍然使编译器能够精确地在非常细的粒度上管理所有芯片活动。虽然这种灵活性对于支持不断变化的AI工作负载来说是必不可少的,但开发者应该获得一种“黑盒”体验,在这种体验中,编译器会抽象出所有实现的复杂性。

这些功能和考虑与Deep Vision如何构建其人工智能加速器和软件解决方案直接相关。在与客户的互动中,我们发现这些都是正确的功能。我们为现实世界设计了硬件和编译器堆栈,边缘机器学习用例几乎总是需要最低的延迟和多模型支持与零开销切换。我们的架构和编译器可以处理任何大小、复杂性或拓扑结构的模型,并支持快速模型评估和原型化。一个重要的教训是,无论人工智能加速器看起来有多好,客户总是需要更好的软件工具。

这篇文章最初发表于经济日报

Rehan Hameed是Deep Vision公司的首席技术官(CTO)。

留下你的评论