Sipeed的NanoCluster是一款小巧的计算模块集群板,最多可容纳7台微型计算机。
每个插槽设有两个直列式M.2(NGFF)插槽,可插入定制设计的SoM(系统级模块),或使用适配器板将标准计算模块规格的板卡接入插槽(如上图所示)。
NanoCluster一端配备大型风扇用于散热,另一端设有电源和输入输出接口。用户可通过PoE++(60瓦)或USB-C PD(65瓦)为板卡供电,也可同时使用两种方式实现冗余电源故障转移。
由于功耗预算有限且板卡间距狭窄(尤其是安装NVMe固态硬盘时,转接卡可容纳2242规格的NVMe固态硬盘和/或MicroSD卡),建议仅运行4台,最多5台CM5计算模块。CM4计算模块可能能在功耗预算内安装更多,但若想获得最佳性能,4台可能是最佳选择。
插槽1通过通用输入输出接口(GPIO)控制其他插槽的电源,并可选支持至少部分其他插槽的通用异步收发传输器(UART)功能。此外,插槽1还连接了USB和高清多媒体接口(HDMI)端口,用于外接显示器和键盘/配件。
所有节点通过1Gbps链路连接至板卡背面的RISC-V交换芯片。该交换芯片为管理型交换机,配备网页用户界面,可控制端口状态、虚拟局域网(VLAN)等(目前大部分基础控制功能仅提供中文界面)。
外部通过单个支持PoE++的1Gbps以太网链路与外界连接。因此,对于存储或高带宽应用,该板卡与图灵派2(Turing Pi 2)和Super6c等板卡面临同样的挑战。
我制作了一段视频,详细介绍了完整的启动和测试过程,重点阐述了在如此狭小的空间内安装众多节点时面临的电源和散热挑战:
我为视频和本博客文章收集的大部分测试数据汇总于树莓派PCIe项目中的NanoCluster GitHub问题页面。
https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/739
Sipeed还在其维基上提供了NanoCluster文档和规格说明。
https://wiki.sipeed.com/hardware/en/cluster/NanoCluster/index.html
电源与散热
Sipeed建议仅运行4台计算模块5,尤其是当在CM4/CM5载板的背面添加M.2 NVMe固态硬盘时(每块载板均配备2242规格插槽)。
根据我的所有测试,我认为这一建议十分明智。我最初尝试运行6台CM5,但即使未安装任何NVMe固态硬盘(全部使用内置嵌入式多媒体卡(eMMC)存储),在运行压力测试时,系统仍会偶尔出现连接中断,功耗超过60瓦(PoE++的最大功率输入额定值——USB-C电力传输(PD)为65瓦),且由于无法在节点上安装薄型散热器,系统会因过热而降频。
运行5台CM5时,集群稳定性显著提高,但个别节点仍会不时降频。若减少至4个节点,则有更多功耗余量(运行5个节点时,负载下仍会耗尽全部60瓦功率),且每个节点之间有足够空间安装薄型散热器。
配备的风扇默认全速运转(在距离集群6英寸范围内产生58分贝的噪音——对于大多数桌面环境来说不够安静),但用户可通过插槽1的GPIO控制风扇转速。
即使风扇全速运转,直接向计算机集群吹风,若不安装散热器将热量从主系统级芯片(SoC)上导出,在满负荷运行(如使用大语言模型(LLMs)、分布式编译工具(distcc)或消息传递接口(MPI))时,计算机仍会过热。
然而,对于更实际的工作负载,如在K3s集群上运行我的网站,则未出现任何降频现象,因此具体使用效果可能因人而异。
不同场景下的总功耗如下图所示:
性能与使用案例
我运行了四个不同的应用程序来测试集群性能:在K3s集群上运行Drupal网站、使用分布式大语言模型推理测试工具(distributed-llama)进行分布式大语言模型推理测试、使用distcc进行分布式Linux内核编译,以及使用高性能林帕克基准测试工具(HPL)测试集群原始计算性能(中央处理器(CPU)上的双精度浮点运算(FP64))。
在所有四种情况下,均未出现连接问题或运行障碍。
K3s Kubernetes集群
使用我的树莓派集群Ansible剧本安装K3s并部署Drupal、普罗米修斯(Prometheus)和格拉法纳(Grafana)后,我在Kubernetes内运行一些实际应用程序时未遇到任何问题。
https://github.com/geerlingguy/pi-cluster
与图灵派2和DeskPi Super6c一样,存在一些瓶颈,最显著的是与外界的单一1Gbps连接。但对于许多在Kubernetes中运行的集群应用程序来说,这并非大问题。过去,我曾在这个树莓派集群上运行过我的网站,同样也可以在NanoCluster上运行。
https://www.jeffgeerling.com/blog/2022/hosting-website-on-farm-or-anywhere
分布式Llama
在多人询问我能否在树莓派集群上运行Exo后,我发现将其移植到树莓派上仍在进行中。
https://github.com/exo-explore/exo/issues/290
因此,我转而尝试分布式Llama,其自述文件中恰好包含了树莓派集群安装说明!
https://github.com/b4rtaz/distributed-llama
https://github.com/b4rtaz/distributed-llama?tab=readme-ov-file#-setup
使用该工具,由于我手头只有较小的4GB计算模块5,我运行了自述文件中推荐的Llama 3.2 1B Instruct Q40模型,速度约为每秒17个令牌。
对于聊天机器人来说,这一速度足够快,但使用更大模型时,速度肯定会降低。
若仅追求高性能大语言模型,单台机器配备强大的图形处理器(GPU)将比这个集群表现更佳。若想学习如何横向分发大语言模型等工作负载,这个集群则是一个便捷的工具。
distcc分布式Linux内核编译
distcc是一款快速、免费的分布式Linux C/C++编译器,使用它可以加快Linux内核等项目的编译速度。https://www.distcc.org/
相较于购买安培(Ampere)Arm工作站来加速arm64 Linux编译(可在2分钟内完成),我能否改进标准树莓派5长达45分钟的编译时间?
事实证明,使用四个节点,我成功将编译时间缩短至略超过22分钟。我注意到树莓派并未全部满负荷运行,因此可能存在网络层瓶颈。我认为,经过更多调整,我可以进一步缩短编译时间。
高性能林帕克基准测试工具(HPL)(全球500强)
我使用4台4GB计算模块5对NanoCluster进行了全球超算500强榜单基准测试,获得FP64结果为112.25Gflops,功耗为62瓦。这大约是单台计算模块5性能(32.152Gflops)的3.5倍,但考虑到PoE++电源注入器和板卡开销,其效率不到一半。
https://github.com/geerlingguy/top500-benchmark/issues/63
https://github.com/geerlingguy/top500-benchmark/issues/48
(单台计算模块5使用的是更高效的27瓦USB-C氮化镓(GaN)适配器以及更轻便的计算模块5输入输出板。)
NanoCluster的总性能略超我的基础款M2 MacBook Air,但就效率而言,这个小集群仅比测试过的英特尔系统略高效一些。
https://github.com/geerlingguy/top500-benchmark?tab=readme-ov-file#results
再次强调,这并不会让你手握一台高性能计算(HPC)强机——但与使用一堆耗电超过150瓦的二手迷你个人计算机(PC),且后面挂着一堆电源相比,在这样的迷你集群上测试高性能计算/分布式应用程序要有趣得多!
结论
本博客文章未涵盖的许多细节,我在视频结尾部分进行了简要介绍——因此请观看视频了解更多细节。
但是,我认为你会落入两个阵营之一:
1.这是一款有趣的小型集群板,虽有明显局限,但价格不贵,这些局限可以接受。
2.这是一款完全不切实际的设备,毫无使用场景,且树莓派价格过高,毫无价值。
对于后者,我不确定能否说服你相信,即使事物不完美,你仍能从中获得乐趣……但对于前者,我认为Sipeed在这款产品上很好地平衡了成本与功能。
它并不完美,你肯定需要调整设置以优化电源、性能和噪音。但我乐于这么做。它让我得以尝试一些原本不会接触的软件,如分布式llama测试工具和分布式编译工具(distcc)。
NanoCluster:https://sipeed.com/nanocluster
如果你想查看具体产品内容,可以通过原文进行了解:
https://www.jeffgeerling.com/blog/2025/sipeed-nanocluster-fits-7-node-pi-cluster-6cm
官方网站:https://edatec.cn/zh/cm0
淘宝店铺:https://edatec.taobao.com/
1212