这将是一个略有不同的评论,因为它不是关于成品的——我已经收到了 ArmSom/BananaPi 即将推出的 AI 模块 7(将很快在 CrowdSupply 上推出)的早期样品,我想分享我对它的早期印象。
免责声明: ArmSom免费为我提供了一块AIM7和一块 AIM-IO 载板(对此我表示感谢),此外这篇文章遵循我的审核政策,我应该强调一下,这是一个众筹项目,所以不能保证最终产品与我收到的产品完全相同。
硬件
AIM7本身是一个仿照 NVIDIA Jetson 的简单模块,具有相同的 DIMM 类连接器和板载 RAM 和 eMMC 存储:
[]()
组件布局
如果您不熟悉该芯片组,这些是基本规格:
- 4xARM Cortex-A76 + 4xCortex-A55 CPU 核心
- Mali-G610 MP4 GPU
- 3 核 NPU,每秒处理能力达 6 TOPS
- 高达 32GB 的 LPDDR4 RAM
- 高达 128GB 的 eMMC 存储空间
我买了一个 8GB RAM/32GB EMMC 板,说实话,无论是 RAM 还是存储空间都非常紧张——对于我尝试过的大多数 AI 工作负载来说,这个 RAM 肯定太少了,而且考虑到没有其他方式连接高速存储,这对于开发来说相当有限。
但正如我们稍后会看到的,它可能非常适合工业应用,而不是 GenAI 的幻想。
散热和功耗
该模块没有配备散热解决方案,因此我使用我常用的一组铜垫片来保持其(安静地)冷却。在这方面(和功耗),它与我测试过的许多 RK3588 设备没有太大区别,范围从 4 到 11W(典型使用与满 CPU 负载)。
输入/输出
载板是所有 I/O 操作发生的地方 - 除了通过 12V 筒式插孔或 USB-C 供电(这次我选择了前者)之外,它还有 4 个 USB-A 端口、HDMI、DisplayPort、一个千兆以太网端口,以及一组常用的硬件端口 - 40 针 GPIO 接头、MIPI-CSI/DSI、microSD 读卡器,以及用于 Wi-Fi 的 M.2 E-key 插槽:
[]()
它几乎都是 I/O 端口,所以,您无法获得任何高速存储扩展。
除了单个载板之外,BananaPi 维基页面还暗示了一个 4 模块 AI 边缘网关,因此这里显然有构建 ARM 集群的潜力。
认识杰森一家
将 AIM7 与 Jetson Nano 进行比较,相似之处显而易见:
[]()
外形尺寸相同,热特性却截然不同。
ArmSom 的Crowdsupply 页面与 Jetson Nano 进行了快速比较并提供了一些基准信息,因此我不会在这里花费太多时间,只会说这些模块实际上是引脚兼容的。
话虽如此,由于以下几个原因,我无法运行一组比较基准测试:我为 Jetson Nano 获得的 5V 电源在去年年底的某个时候耗尽了,所以我现在无法为其供电 - 但即使我尝试更换载板,我拥有的 Nano 运行的是相当旧版本的 Ubuntu 和 CUDA,因此实际上很难进行有意义的比较。
事实上,除非你自己编写代码,否则能够在 Nano 上运行的现代代码实在太少了。
那么,AIM7会 取代NVIDIA Jetson 吗?好吧,仅从软件角度考虑,简短的答案是“如果你真的需要使用 CUDA,那就不会”,但我将在下文中讨论这个问题。
简而言之,如果您有兴趣了解 Rockchip 的各种 NPU 库,它提供了一个有趣的选择——这些库在过去几个月中实际上已经有了很大的改进。
基础操作系统
该主板附带 Debian Bullseye (11) 和内核 5.10.160,虽然感觉有点过时,但在 Rockchip 世界中却是正常现象。
由于该主板尚未支持 Armbian,我只是将语言环境设置重置为en_US.UTF-8(它带有通常的中文语言环境)并使用它:
uname -a
Linux armsom-aim7 5.10.160 #98 SMP Thu Jan 2 15:14:22 CST 2025 aarch64 GNU/Linux
locale
sudo vi /etc/locale.gen
sudo locale-gen
sudo vi /etc/default/locale
GENAI、法学硕士 (LLM) 和 RKLLM
是的,我一拿到它就立即运行了 DeepSeek。这是一个很棒的派对技巧,但除了展示 NPU 的功能外,它并没有做太多事情。
我发现更有趣的是直接在 NPU 上运行一些其他模型,例如marco-o1和gemma-2:
[]()
NPU 上的gemma-2讲解电视
但是,它们中的任何一个都非常紧凑 - 8GB 的 RAM 是主要的限制,我gemma-3:4b根本无法运行 - 尽管我能够gemma-3:1b在下面运行ollama(因为我无法转换它 - 更多信息见下文)。
因此,简而言之,如果您打算使用 LLM,请选择具有更多 eMMC 存储和 RAM 的更大 SKU——8GB/32GB 版本对于除了几个小型号之外的任何东西来说都太紧张了,即使这样一次也只能使用一个。
工具说明
我对 Rockchip 工具链的抱怨之一是,很多rkllm代码不完整且难以使用。不过,一些勇敢的人已经努力了,现在rkllm-1.1.4它实际上相当好用。
RK3588 的 NPU 还有一些其他工具可供使用,可能有助于那些想要尝试 LLM 的人更轻松地完成任务,其中包括我在上面的屏幕截图中使用的两个工具:
- rkllama为您提供ollama类似的体验(甚至可以从云端下载预先转换的模型,在本例中直接从 Huggingface 下载)
- rknputop最接近nvtopNPU 使用情况的视图(尽管仍然有点问题,并且包括 CPU、RAM 和温度)
还有(最终)记录的和可重复的方法来将模型转换为格式,并且(甚至更好的是)Huggingface 上有.rkllm令人惊讶的数量的预先转换的模型。
LLM 注意事项
转换模型实际上变得有些简单,只要你使用相对较旧的模型系列即可。例如,我无法转换或格式化phi4最新的模型,因为:gemma3.rkllm
- 我遇到了很多与phi4标记器有关的问题,因此,尽管我可以转换,但phi3相同的转换代码却不适用于phi4。
- gemma3在我完成这篇文章时刚刚发布,rkllm但该模型实际上宣称自己是不同的“家族”,因此根本不受支持。
现在,还要过一段时间rkllm才会更新,但是现在我没有时间或耐心去修改模型树,所以我还没能想出一个合适的解决方法。torchtransformers
但总体方法非常简单:
from rkllm.api import RKLLM
from os.path import basename
import torch
from transformers import AutoTokenizer, AutoModel, PreTrainedTokenizerFast
modelpath = './Phi-3-mini'
llm = RKLLM()
ret = llm.load_huggingface(model=modelpath, model_lora = None, device='cuda')
if ret != 0:
print('Load model failed!')
exit(ret)
ret = llm.build(do_quantization=True,
optimization_level=1,
quantized_dtype="W8A8",
quantized_algorithm="normal",
target_platform="RK3588",
num_npu_core=3,
extra_qparams=None,
dataset=None)
if ret != 0:
print('Build model failed!')
exit(ret)
ret = llm.export_rkllm(f"./{basename(modelpath)}_{quantized_dtype}_{target_platform}.rkllm")
if ret != 0:
print('Export model failed!')
exit(ret)
您还可以调整其他一些选项,但使用我的 3060 转换几个小模型仅花了几分钟。
视觉、语音和 RKNN
但是,我认为AIM7不会用于在现实生活中攻读 LLM。
对于大多数人来说rknn-toolkit2可能会更感兴趣,因为它允许您使用whisper各种版本的 YOLO(您可以从模型库中获取)进行语音和图像识别。
我确实知道 Jetson Nano 被广泛应用于生产线上的图像处理和缺陷检测,虽然我还没有时间在这个板上实际测试 YOLO,但我知道AIM7是一个合适的替代品,因为 许多其他 RK3588 板已经在使用它 。
这就是为什么用 RK3588 主板直接替代 Jetson(顺便说一句,Jetson 对功率要求很挑剔,而且更热、更吵)是非常有意义的。
我不确定视频帧速率,因为这总是严重依赖于模型,但早期带有原始rknn工具包的 RK3588 主板能够超过 25fps,而且我怀疑通过一些仔细的优化,这个速率至少会翻倍。
但最重要的是,找到用于对象检测的示例代码并不难rknn,现在甚至还有来自Frigate等工具的官方支持,所以它肯定不再是一条未知的道路。
结论
我喜欢AIM7 – 我无法将它与我评测过的其他 RK3588 SBC在功能方面(芯片组和基本 I/O 除外)直接进行比较,因为它是专门为替代或与 Jetson 竞争而设计的,但具有讽刺意味的是,在所有这些产品中,它最适合工业应用——在这些应用中,你并不真正需要 NVMe 存储,即使是 32GB 也足以拥有 YOLO 等视觉模型的多个副本。
我只是希望它能配备更多 RAM……