当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]请注意,对于单一输入流,增加AIPU核心并不会提高吞吐量,而只会降低每帧的延迟。当只有一个流提供数据时,这些核心是通过降低延迟来工作的,而不是提升带宽。

安装 Axelera Voyager SDK

Axelera 提供了关于安装其 Voyager SDK 的详细说明:

•Axelera Voyager SDK 安装

这可以通过 Docker 容器或 Python 虚拟环境来实现。我建议使用 Python 虚拟环境。

我在一台 AMD Ryzen AI MAX+ 395 电脑上运行基准测试。当我尝试执行推理时,出现以下错误:

这是 AMD 显卡的一个已知问题,可以通过指定 –disable-opencl 来避免。此外,我们将在本文后续部分介绍针对 AMD 显卡支持的修复方案。

重现Axelera基准测试

在测量功耗之前,我想先复现Axelera基准测试。与之前的几篇文章一致,我选择了ResNet50,因为它是分类模型中后处理阶段最轻的结构。

各种模型的基准测试结果可在其 axelera-ai-hub/voyager-sdk 仓库中找到:

•Axelera Model Zoo

•ResNet-50 v1.5 在 Metis(M.2 尺寸)上:1756 FPS

•ResNet-50 v1.5 在 Metis(PCIe 尺寸)上:1946 FPS

我们的目标当然是达到1756帧每秒的M.2基准性能。

下载 ImageNet 数据集

显然,输入数据的逻辑选择应与用于训练模型的数据集相同。Axelera 的 Voyager SDK 支持这些训练数据集,并通常会为我们自动下载它们……

对于在ImageNet上训练的ResNet-50,他们不提供下载功能,而是提供了相关操作说明:

我在ImageNet网站上创建了一个账户,提交了申请,但从未收到任何回复……

与此同时,我将继续使用另一个模型所用的数据集进行探索:data/coco。

首次吞吐量结果

我的第一次尝试没有成功,但可能反映了你对Axelera气流的初步体验,因此我已将其记录下来。

请注意,对于单一输入流,增加AIPU核心并不会提高吞吐量,而只会降低每帧的延迟。当只有一个流提供数据时,这些核心是通过降低延迟来工作的,而不是提升带宽。

随着核心数量增加,延迟有所恶化。我猜测,使用多个AIPU核心时,可能会产生额外的数据传输,从而导致更高的延迟。

供参考,以下是会话日志:

通过多个输入源提高吞吐量

与AI加速器的典型情况一样,通过多线程可以实现更高的吞吐量。这可以通过使用Axelera Voyager SDK结合多个输入源来实现。

我无法让多个输入源与图像数据集一起工作,如下所示的日志:

为了应对这些问题,我重新使用视频作为输入源,这种方法似乎对多个输入源都有效:

通过多个输入源,我们的吞吐量得到了提升,尤其是在使用多个AIPU核心时。

我不理解本次会话的延迟指标,尤其是3个AIPU核心的情况,这似乎是个异常现象。这不是打字错误,我已经多次重新运行了该会话,结果保持一致。我无法解释这一异常现象。

作为参考,以下是使用多路流的会话日志:

通过OpenCL支持提升吞吐量

如果您的系统没有显卡,将不支持此功能,所有预处理和后处理操作都将由CPU执行。

如果你的系统配备了NVIDIA GPU,这应该可以原样使用。

如果你和我一样使用的是AMD显卡,那么这无法直接使用。

不过,有一个解决办法,并且已确认将在下一个Voyager SDK版本中修复此问题:

未找到 OpenCL 平台,推理渲染效果差

通过这个绕过方法,我得以使用 –enable-opencl 参数运行推理:

启用 OpenCL 后,使用更多 AIPU 核时,我们能获得显著更高的吞吐量。

延迟与核心数量成反比。

作为参考,以下是使用多条流、并启用了OpenCL支持的4核会话日志:

超越Axelera基准测试

我不仅达到了Axelera发布的M.2基准测试1756 FPS的水平,还以约17%的差距超越了这一成绩,达到了2050 FPS。

ResNet-50 v1.5 在 Metis(M.2 尺寸)上:2050 FPS

这还高于已公布的PCIe接口形式因子结果1946 FPS,这并不正常,因为PCIe通常比M.2拥有更大的带宽余量。

最可能的解释是主机平台:Axelera公布的数据显然是在Intel 9硬件上运行的,而我使用的是更新得多的AMD Ryzen AI MAX+ 395。Metis芯片本身并不是导致公布数据瓶颈的原因,真正的问题在于主机的预处理和后处理能力。

新主机 = 更高的AIPU利用率。

对于较老的主机或资源受限的主机(例如树莓派),我预计情况会相反。

既然我们对吞吐量结果感到满意,接下来就来测量实现这一结果所消耗的功耗。

使用 mb-powermon.py 测量 Axelera Metis 功率

我们将采用在第3部分中建立的方法,使用基于INA228的定制电源测量工具。

因此,我们将使用整个系列中一直使用的同一个 mb-powermon.py 工具:

•AlbertaBeef/mb-powermon

第一步是克隆我开源电源监控工具的代码仓库。

在 voyager-sdk 虚拟环境中,安装“pyftdi”、“adafruit-blinka” 和“adafruit-circuitpython-ina228” 这三个 Python 包。

请确保您有权访问所列的 FTDI USB 设备。我已附上一个可使用的脚本,名为 fix-ft232h-permissions.sh(使用时需谨慎):

接下来,我们可以按照以下方式启动 mb-powermon 工具:

如果我们在Axelera虚拟环境中的另一个控制台中重新运行推断:

在此运行期间,您将看到类似以下内容(视频以10倍速播放):

在这段视频中,我使用同一个Axelera Metis模块对ResNet50进行了四次基准测试。

如果我们将 output.csv 文件转换为用户友好的.html 格式,就可以绘制所有四次运行的功率和温度:

INA228在四次运行中平均报告约7.6 W,芯片温度稳定在约43°C。

我甚至还能在开启显示的情况下运行基准测试,吞吐量一直保持在2000 FPS以上(视频以2倍速度播放)。

当然,屏幕未能跟上这种刷新率,导致画面帧数被丢弃,这是正常且可以预料的情况。

空闲功耗

对于对功耗敏感的应用,了解Axelera Metis模块在开机但未运行推理时的功耗情况非常有用。

我测得了两个不同的怠速功率水平:

•3.1 W - 带风扇运行

•2.9 W - 无风扇时

这表明风扇消耗了0.2瓦的该功率范围。

在我的支持ASPM的AMD Ryzen AI MAX+ 395电脑上,Axelera Metis模块将ASPM设置为关闭状态。在第一部分中,我们使用Hailo-8模块时发现,当该模块被关机至ASPM L1状态时,空闲功耗额外减少了300毫瓦。

对于持续运行的应用程序,这种空闲功耗本身就是一项基准:

已知问题

在第一次推断时,我收到了这些警告,但似乎并没有影响我的会话运行。这可能是我设置中的特定问题……我不确定。

结论

在本文中,我们已成功将功率测量方法应用于Axelera Metis M.2模块。

On resnet50,Axelera Metis 在约 7.6 瓦的功耗下可实现约 2050 FPS,即每瓦约 270 FPS。

如果我们将其与Hailo-8模块的结果进行比较,结果如下。

需要注意的是,Axelera Metis 模块采用 LPDDR,而 Hailo-8 模块则不采用:

还需注意的是,他们的两种基准测试方法有所不同。Axelera 的项目目前进展更多,需要安装 OpenCL 并使用多个流才能达到其发布的基准结果,而 Hailo 发布的基准测试则可以在任何电脑上轻松且可靠地复现。

对于持续运行的部署,空闲功耗也至关重要。Axelera Metis 的空闲功耗(约 3.1 瓦)大约是 Hailo-8 的 6 倍(约 0.5 瓦),当加速器在推理之间等待时,这种差距可能主导整个能效预算。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

INA228在三次运行中报告了多种数值。与其它厂商的电源大多保持稳定的情况不同,MX3的电源读数持续上升。第一次运行时达到约11.0 W,第二次约为11.4 W,第三次约为12.1 W。这种上升很可能是因为每次运行期间芯...

关键字: 边缘AI 电源 INA228

原始版本被设计为一款网络应用程序,以最大化可访问性。通过浏览器,用户可以在任何计算机上配置硬件,无需安装专用软件或管理复杂的驱动程序。这种“零安装”的体验使其成为社区内的事实标准。

关键字: 人工智能 Web 应用 Python

Soan Papdidi 改变了这种体验。它是一款紧凑、易于上手的纯FPGA开发板——无需MCU,也无隐藏式微控制器,只需掌握原始的FPGA功能即可。该板配备8个DIP开关、8个LED灯和10个I/O引脚,非常适合用于学...

关键字: FPGA 开发板 数字电路 Python

在搭建显示屏(使用Arduino和硬件)时,我常常感到沮丧:需要刷写程序、线缆可能损坏、导线松脱,或者板子突然烧坏。最终我可能只能花10到20秒(如果运气好)来测试一下,把字体向左移动三个像素是否“感觉正确”。

关键字: 显示屏 Arduino Python

工程团队日常会产生海量的测量数据。然而,现在市场上常用的数据分析工具并非专为工程工作流设计的工具,往往会拖慢从这些数据集中提炼可靠洞见的进程:

关键字: 数据分析 Python MATLAB

多色 FDM 打印通常意味着每一层都需要更换材料,并且需要一个比零件本身还要大的清理装置。而 PLA 则完全避免了这些繁琐步骤。通过将打印过程视为一个具有可变厚度的整体——先是一个深色的底色,然后是上面一层由半透明亮色材...

关键字: 3D 打印机 熔丝 Python

如今,穿孔卡片已几乎被人遗忘,使用这种卡片的最后一批机器早在 80 年代就已退役。不过也有一些例外情况,一些工业设备至今仍得以保留,并且在小范围内仍在使用这种卡片。

关键字: OpenCV 读取器 Python

对于既失明又失聪的人来说,他们对世界的感知几乎完全依赖于触觉。传统的盲文学习工具通常依靠声音提示来补充触觉反馈,这使得失聪失明的学习者处于劣势。我的项目是作为我 EDES 301 课程的一部分而开发的,旨在填补这一差距,...

关键字: 微处理器 Python 电路板

当我们想到机械臂时,脑海中通常会浮现出那种僵硬的自动化场景——即那些为生产线上的重复性、毫无情感色彩的工作而设计的机器。但当我们试图让一个四轴机械臂去捕捉人类书写所具有的那种真实重量时,情况又会怎样呢?

关键字: 机器人 机械臂 Python

在异构计算的浪潮中,FPGA凭借其可重构特性与高能效比,成为突破算力瓶颈的“利刃”。然而,当我们试图通过OpenCL将FPGA纳入统一计算平台时,一个巨大的幽灵始终盘旋在系统上方——内存带宽瓶颈。PCIe总线的有限带宽与...

关键字: OpenCL FPGA
关闭