无需大PC!树莓派驱动高性能GPU的实战评测

本文深入评测了将AMD、Intel和Nvidia显卡与树莓派5搭配使用的性能表现。通过对比现代桌面PC,测试了媒体转码、图形渲染、LLM/AI推理以及多GPU应用的效能,发现在多数GPU密集型任务中,树莓派能在牺牲2-5%峰值性能的情况下,展现出显著的能效优势。

Big GPUs don’t need big PCs

自从我让AMD、Intel和Nvidia显卡在树莓派上运行以来,就一直萦绕着一个问题:这有什么意义?树莓派只有1条PCIe Gen 3通道带宽可用于连接eGPU。这并不多。尤其是考虑到现代台式机至少有一个支持16条PCIe Gen 5通道的插槽。那是8 GT/s对512 GT/s。并非公平竞争。

但我曾想过,或许带宽并非总是决定一切。

我想通过在各种GPU上测试四个方面,来终结关于实用性的疑问,并比较树莓派5与现代台式PC的性能:

  1. Jellyfin和媒体转码
  2. 纯GPU绑定的图形渲染性能(通过GravityMark)
  3. LLM/AI性能(包括预填充和推理)
  4. 多GPU应用(特别是LLM,因为它们最容易运行)

是的,没错,我们今天将超越仅使用一张显卡。感谢我在超级计算25大会上遇到的Dolin ICS,我有了一个PCIe Gen 4外部交换机和3插槽背板,因此我可以轻松地同时运行两张卡:

一句话总结:在许多情况下,树莓派都能独当一面——如果你愿意牺牲仅2-5%的峰值性能,它甚至在能效上胜出(通常优势巨大)!

四个GPU,一个树莓派

最疯狂的部分是,在我完成这项测试时,GitHub用户mpsparrow将四个Nvidia RTX A5000 GPU插入了单个树莓派。在运行Llama 3 70b时,该设置生成的性能仅比他的参考Intel服务器低2%:

在树莓派上,它以每秒11.83个令牌的速度生成回复。在现代服务器上,使用完全相同的GPU设置,他得到了12个令牌。差异小于2%。

这怎么可能?因为——至少在使用多个能够通过PCIe总线共享内存访问的Nvidia GPU时——树莓派并不需要成为瓶颈。外部PCIe交换机可能允许卡以Gen 4或Gen 5速度通过总线共享内存,而不需要“南北向”地经过树莓派的PCIe Gen 3通道。

但即使没有多个GPU和PCIe技巧,树莓派仍然可以在少数情况下与现代PC匹敌,甚至超越其性能。

成本与能效

除了能效,成本也可能是一个因素(两种设置的价格均不包括显卡):

树莓派 eGPU 设置 Intel PC
总计:$350-400 总计:$1500-2000
16GB Pi CM5 + IO板
Minisforum eGPU扩展坞
M.2转Oculink适配器
USB SSD
1850W 电源
Intel Core Ultra 265K
ASUS ProArt 主板
Noctua Redux 散热器
850W 电源
测试台/机箱
M.2 NVMe SSD
64GB DDR5内存
2

如果你不追求峰值能效和性能,可以考虑一下:仅树莓派在空闲时功耗为4-5W。那台PC呢?30W。这还是没有运行显卡的情况,并且在两次测量中,唯一插着的设备是一个便宜的树莓派USB键盘和鼠标。

那么,让我们来看看硬件。

视频

欲了解更多背景信息,并查看实际硬件设置的更多细节,请查看随本博客文章附带的视频:

单GPU对比 - 树莓派 vs Intel Core Ultra

在我们进入我实际运行的基准测试之前,我先提一下我没有运行的那些,也就是游戏。在我之前树莓派+GPU设置的迭代中,我曾通过box64让Steam和Proton在Arm上运行Windows游戏。

这次,使用Pi OS 13(Debian Trixie),我在安装Steam时遇到了FeX和box64的问题,所以我暂时搁置了这部分。我将在明年围绕Valve开发Steam Frame的视频中测试更多Arm上的游戏。

今天的重点是原始的GPU性能。

我有三个测试来给每个系统施压:Jellyfin、GravityMark和LLM。

基准测试结果 - Jellyfin

让我们从最实际的事情开始:使用树莓派作为媒体转码服务器。

由于Nvidia的编码器更成熟,我先测试了它。即使是较旧的入门级显卡也应该足以支持一两路流,但我手头有一张4070 Ti,所以我测试了它。

使用encoder-benchmark,PC的表现碾压了树莓派:

观察nvtop,我找到了原因:树莓派羸弱的I/O。

Encoder Benchmark使用原始视频流,这些流相当大(例如,4K文件超过10 GB)。这意味着你必须从磁盘加载所有数据,然后通过PCIe总线将其复制到GPU,接着GPU吐出压缩后的视频流,再写回磁盘。

在树莓派上,PCIe总线的峰值速度约为850 MB/秒左右,而且因为只有一条通道,并且我使用USB 3.0 SSD作为启动盘,实际持续速度只有大约300 MB/秒。

PC可以通过我安装的PCIe Gen 4 x4 SSD达到2 GB/秒的吞吐量。

就原始吞吐量而言,PC无疑是赢家。

但是Jellyfin的工作方式,至少对于我自己的媒体库(我存储轻度压缩的H.264和H.265文件)来说,转码并不需要那么大的带宽。

我安装了Jellyfin并将其设置为使用NVENC硬件编码。这开箱即用。

我可以在转码期间,在1080p编码的《Sneakers》中快进而没有任何延迟。我可以切换比特率来模拟通过家庭VPN播放《Galaxy Quest》,Jellyfin也没有掉链子。在这个设置下,4K H.265文件《Apollo 11》在所有比特率下也都完全流畅。

即使同时进行两个转码,比如这里的4K《沙丘》和1080p《Sneakers》,它运行得同样流畅。在那种情况下,解码引擎似乎达到了极限,但没有造成任何卡顿。

Intel PC在原始吞吐量上获胜,如果你正在构建一个完整的视频转码服务器,这很棒,但树莓派对于大多数其他转码用例(如OBS、Plex或Jellyfin)来说已经足够。

从历史上看,AMD在转码方面不是那么出色,但他们的显卡也够用。在我测试的AI Pro上,转码可以工作,但我遇到了一些稳定性问题。

基准测试结果 - GravityMark

我想看看原始3D渲染的性能如何,所以我运行了GravityMark基准测试——目前只在AMD卡上运行,因为我还没能让显示器在树莓派上的Nvidia驱动上工作。

毫不奇怪,Intel PC更快……但只快了一点点。

渲染完全在GPU端完成,它并不真正依赖树莓派的CPU或PCIe通道,所以速度可以相当快。

让我惊讶的是,当我在一张较老的AMD卡——我的RX 460上再次运行它时发生的事情。

这张GPU按计算机的年限来说已经很古老了,但我认为这给了树莓派一个优势。RX 460运行在PCIe Gen 3上,这与树莓派能达到的速度完全一样——而树莓派实际上略微超过了PC。但让我更震惊的是每瓦得分。

这测量的是系统的整体能效,虽然Intel目前能效并不出色,但树莓派也不是Arm阵营中最好的选择。

我得到了Nvidia 3060、3080 Ti和A4000的基准测试结果,但仅限于PC端。我仍然无法在树莓派上运行桌面环境或显示输出。

基准测试结果 - AI

AMD Radeon AI Pro R9700拥有32 GB显存,应该非常适合运行大量的LLM,直到占用20 GB显存的Qwen3 300亿参数模型。

以下是结果,树莓派 vs PC:

哎呀。这不是我预期看到的结果。

我有点沮丧,所以我又回头用我信赖的RX 460:

这更符合我的预期。也许R9700那不尽人意的表现是由于驱动程序的怪癖或者缺少大BAR支持?

我不能责怪AMD的工程师没有在树莓派上测试他们的AI GPU。

这让我想知道Nvidia是否会好一些,因为他们已经优化Arm驱动程序多年了。

这是RTX 3060 12 GB,这是一张流行的卡,适合廉价的家庭推理,因为它有刚好够用的显存:

树莓派表现得不错。像tinyllama和llama 3.2 3B这样的一些模型在PC上似乎表现稍好一些,但对于中型模型,树莓派的表现非常接近。树莓派甚至在Llama 2 13B上击败了PC。

真正让我惊讶的是下一个图表:

这衡量了每个系统的效率。考虑到电源、CPU、RAM、GPU等所有因素,树莓派实际上在几乎匹配PC性能的同时,输出令牌的效率更高。

好吧……但这只是3060。那张卡也有五年历史了。也许更大更新的卡不会表现得这么好?

我用手头所有能拿到的Nvidia卡运行了我的AI测试系列,包括RTX 3080 Ti、RTX 4070 Ti、RTX A4000和RTX 4090。我会让你观看视频以查看所有结果,但在这里我将直接跳到结尾,展示RTX 4090在树莓派上的性能(这是我目前拥有的最快的GPU):

显卡的体积与树莓派相比,大得滑稽——它甚至让许多可能安装它的PC主机相形见绌!

看起来tinyllama在这里完全碾压了树莓派。但令人惊讶的是,树莓派在大多数模型上仍然表现不错——Qwen3 30B在树莓派上只慢了不到5%。

对于一张自身就能消耗数百瓦功率的显卡,能效如何?

我原以为由于系统其余部分的功耗占比会更小,PC的表现会更好——实际上,对于少数模型,PC确实更好。但在大多数这些测试中(较大的模型),树莓派仍然略微超过了更大的PC。

这……很奇怪。

老实说,我没想到会这样。我原本预计树莓派会被彻底击败,也许只能勉强取得一两个小小的奇迹般的胜利。

一个注意事项:我使用的是llama.cpp的Vulkan后端,以保持跨供应商的一致性。CUDA可能会略微改变绝对数值,但根据使用RTX 2080 Ti进行的一些CUDA测试,实际上变化不大——而且令人惊讶的是,CUDA在树莓派上运行良好。

对于那些已经在阅读本文并评论提示处理速度和上下文的r/LocalLLaMA朋友们,我已将上面的每个结果链接到一个包含所有测试数据的GitHub问题,所以在发表评论之前,请先查看那些问题。

双GPU

到目前为止,我们只在一个GPU上运行。如果尝试两个呢?

我使用了一个Dolphin PCIe互连板,搭配Dolphin的MXH932 PCIe HBA,并通过M.2转SFF-8643适配器将其连接到我的树莓派CM5,同时使用SFF-8643转SFF-8644电缆从树莓派连接到Dolphin卡。

在运行任何LLM之前,我想看看是否可以在两张卡之间共享内存。PCI Express有一个功能,允许设备直接相互通信,而不必通过CPU“南北向”传输。这将消除树莓派的Gen 3 x1瓶颈,并给卡提供完整的Gen 4 x16链接,以获得多得多的带宽。

要使其工作,你必须禁用ACS,即访问控制服务。而Dolphin显然已经在他们的交换机卡上为我设置好了。

mpsparrow运行了四个相同的Nvidia RTX A5000卡。但我只有不同型号的卡。看起来Nvidia驱动程序不支持不同显卡(比如我的4070和A4000,或者我的A4000和A400)以相同的方式进行显存池化。

但这没关系,我仍然可以使用llama.cpp和多GPU做一些事情,通过CPU进行“南北向”传输。

这是4070和A4000的性能,与直接在A4000上运行相同模型的比较。

我猜是由于树莓派和显卡之间额外的流量,当llama.cpp在两个GPU之间推送数据时,存在大量的小延迟。这对性能没有好处,但这个设置确实可以让你扩展到更大的模型,这些模型无法装入单个GPU。

比如Qwen 3 30B大约18 GB,对于这两张卡中的任何一张单独来说都太大了。使用一个具有足够显存以容纳整个模型的GPU会更快、更高效。但如果你已经有两张显卡,并且想让它们一起工作,至少这是可能的。

我还运行了我拥有的两张最大的AMD卡,RX 7900 XT(20 GB)和Radeon AI Pro R9700(32GB),这给了我总共52 GB的显存。但在那里,再次由于AMD的驱动程序问题,我无法让一些模型完成运行——而当它们完成时,速度并不快:

作为我双GPU测试的结束,我也在Intel PC上运行了所有测试,结果并不太令人意外,它更快:

但至少在Qwen3 30B上,树莓派再次表现相当。

结论:如果你有多张相同的卡,也许还可以尝试像vLLM这样的其他工具——我在树莓派上无法安装——你可能得到比我这里更好的数字。

但主要经验仍然适用:更多的GPU可以给你更大的容量,但它们肯定会比一个更大的GPU慢——而且效率更低。

总结

经过这一切,谁是赢家?

好吧,如果你在乎原始性能和易于设置,显然是PC。但对于非常特定的一小部分用户来说,树莓派更好,比如如果你不总是满负荷运行,并且工作负载几乎完全是GPU驱动的。树莓派设置的空闲功耗总是低20-30W。而使用Rockchip或Qualcomm SoC的其他Arm单板计算机甚至更高效,并且通常具有更多的I/O带宽。

最终,我这样做并不是因为它有意义,而是因为它很有趣,可以了解树莓派的局限性、GPU计算和PCI Express。而这个目标已经实现了。

我要感谢Micro Center赞助了导致撰写这篇博客文章的视频(他们提供了用于测试的AMD Ryzen AI Pro R9700以及一个850W电源),并感谢Dolphin ICS在我于超级计算25大会的展台上与他们交谈后,借给我两块他们的PCI Express板。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计