广告

优化多核平台AI推理的分区策略

2024-02-07 Rami Drucker,机器学习软件架构师,Ceva公司 阅读:
应该如何对预期的AI推理工作负载进行分区,以最大限度地利用所有这些计算能力呢?

kXeednc

不久前,边缘AI推理作为一种新奇的功能,可以轻松地由边缘设备嵌入的单个神经处理单元(NPU)IP加速器支持。然而,人们对此的期望已迅速提高。现在,我们希望嵌入式AI推理能够处理多个摄像头,复杂的场景分割,带有智能噪声抑制的语音识别,多个传感器之间的融合,以及现在非常大且复杂的生成式AI模型。只有在多核AI处理器上运行,这些应用程序才能为边缘产品提供满意的吞吐量。NPU IP加速器已经可以满足这个需求,扩展到8个或更多的并行内核,并能够并行处理多个推理任务。但是,您应该如何对预期的AI推理工作负载进行分区,以最大限度地利用所有这些计算能力呢?本文讲述的就是这个主题。kXeednc

kXeednc

资料来源:CevakXeednc

利用AI推理并行性的六大路径

与所有并行性问题一样,我们首先从定义的AI推理目标的资源集开始,这些资源包括一些可用的加速器,具有本地L1缓存,共享L2缓存和DDR接口,每个缓存的缓冲区大小都已定义。接下来的任务是将应用程序要求的网络图映射到这种结构,优化总吞吐量和资源利用。kXeednc

有一种明显的策略是处理需要分割成多个瓦片的大输入图像——通过输入地图划分,其中每个引擎被分配一个瓦片。在这里,多个引擎并行搜索输入地图,寻找相同的特性。相反,您可以通过输出地图划分——将同一瓦片并行输入多个引擎,并使用相同的模型但不同的权重在同一时间检测输入图像中的不同特性。kXeednc

神经网络通常在子图中进行并行训练,如下方示例所示。资源分配时通常先优化广度,再优化深度,每次都优化到当前步骤。显然,这种方法不一定能在一次传递中找到全局最优处理方法,所以算法必须允许回溯以便探索改进之处。在这个例子中,3个引擎能够提供的性能是只有一个引擎提供的性能的230%还多。kXeednc

kXeednc

资料来源:CevakXeednc

上图中的一些AI推理模型或子图可能显得很可并行化,也有其他一些AI推理模型或子图的长线程操作并不显得很可并行化,但仍然可以进行流水线处理,这在考虑通过网络执行流操作时可能会有益。另一个例子是深度神经网络(DNN)中的逐层处理。简单地组织每个图像的层操作以最小化每个引擎的上下文切换可以提高吞吐量,同时允许后续的流水线操作稍后但仍然比纯顺序处理要早地切入。基于转型器的生成性AI网络提供了另一个好例子,注意和规范化步骤的交替使得可以对连续的识别任务进行流水线处理。kXeednc

批量分区也是一种方法,支持在多个引擎上运行同一个AI推理模型,每个引擎由一个独立的传感器“供食”。这可能支持一台监控设备的多个图像传感器。并且最后,您也可以通过让不同的引擎运行不同的模型进行分区。这个策略尤其有用于语义分割,例如,对于自动驾驶而言,部分引擎可能会检测车道标线。其他引擎可能处理开放(可驾驶)的空间分割,而另一部分可能会检测物体(行人和其他车辆)。kXeednc

规划

在优化吞吐量和利用率方面有很多选择,但是您应该如何决定最佳的AI推理应用调优方法呢?这一架构规划步骤必须在模型编译和优化之前进行。这里,您需要在分区策略之间做权衡。例如,一个子图可能先并行,然后进行一系列的操作,有时最好仅通过流水线处理,而不是并行和流水线处理的组合。每种情况下的最佳选择将取决于图、缓冲区大小,以及上下文切换中的延迟。kXeednc

kXeednc

资料来源:CevakXeednc

如果您一直努力研究如何在多核NPU AI推理子系统中尽可能好地优化您的AI工作负载,请查看我们的NeuPro-M平台,并向我们致电,交流有关边缘具有挑战性的AI推理工作负载的并行性的意见。kXeednc

责编:Franklin
文章来源及版权属于Rami Drucker,机器学习软件架构师,Ceva公司,EDN电子技术设计仅作转载分享,对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。如有疑问,请联系Demi.xia@aspencore.com
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了