树莓派集群真的可以顶上一台高性能计算机吗

参考:

树莓派集群计算机之集群管理篇

【转载】一起做一个树莓派集群阵列吧-生肉

 

 

 
测速工具:
 
 
 
=================================================
 
 
 
 
本人是个玩心很重的人,平时总是喜欢搞些奇奇怪怪的东西,最近看到有人在用树莓派集群来做计算并与高性能计算机做对比的视频,这样的视频前些年也是总会看到,虽然感到好奇但也总没时间好好研究一下,今天也是一时兴起准备好好说下这个问题。
给出一个典型的使用树莓派集群与高性能计算机性能对比的视频:
从网上的各种树莓派集群与单台高性能PC的性能对比的视频可以知道,树莓派集群的主要优势为三个方面:

1. 价格。当然现在这个已经不是树莓派的优势了,2022年的树莓派价格基本涨价了2到3倍,如果按照没有涨价钱的时候来看这个问题还是有优势的,比如一个树莓派计算模块250RMB,一个高性能计算机如Altra Max CPU平台要2.5w的RMB以上,也就是说一个高性能计算平台的价格可以顶上没涨价之前的树莓派计算模块100个左右的价格,而一个树莓派计算模块按照有4个计算核心来算,那么30个树莓派的核心数和单核心性能就可以和高性能服务器计算平台的造价相当了。也就是说使用树莓派集群的话,如果保证相似的单核性能和核心数,那么选择使用树莓派集群会比使用单个高性能服务器要便宜70%左右,从这可以看到在树莓派涨价之前使用树莓派集群会有多吗大的优势,不过现在就要另当别论了,在树莓派普遍涨价2到3倍情况下树莓派集群已经不具备价格优势了。

2. 噪音。这个方面玩过服务器的人就都会懂,一个服务器开机就是好多个3000转的工业风扇在那嗡嗡的,那声音绝对在70分贝左右了,而树莓派的散热使用的都是下面这个类型的:

 

 

树莓派的这种风扇,即使是几十台树莓派的集群运行,其声音也都能控制在50分贝左右,在这方面树莓派绝对是有优势的。

3. 用电。这个方面可以说是用电功率,也可以说是电费使用方面,一般服务器的满载功率为2000w以上,一个树莓派计算模块最高功率不超过10w,,三十个树莓派也不超300w,也就是说服务器的用电量会是树莓派集群的6到7倍,而用电功率就是电费,可以说树莓派计算在使用电费的方面是有绝对优势的。

 
有了上面的这几点优势是不是就可以断言使用树莓派集群要比使用单台高性能服务器好呢,其实不然。稍微了解集群运行的人都是知道的,服务器集群计算可以分为两个类别,一种是以函数计算拆分为驱动的,另一种是以数据分割为驱动的,比较学术的说法是分为任务并行和数据并行,当然也有叫做消息传递数据并行和数据并行的,具体解释呢这里就不说了,毕竟这个概念本身就有些乱糟糟的,不过说一下比较典型的代表的计算框架:
1. 数据并行的。主要为近十多年刚兴起的计算模式,其框架主要有Hadoop、Spark等,其通信协议主要为rpc协议;
2. 任务并行的(消息传递数据并行)。该类型为传统并行计算,或者说在数据并行计算兴起之前并行计算指的就是该种计算模式,比较典型的应用场景为nuclear武器设计、导弹设计、飞机仿真设计、空气动力学设计、流体动力学设计、生物模型设计、药品模型设计、化学模型设计、天气预备模型设计等等,比较有名的计算机形式就是传说中的“超算”,使用的软件就是神奇的“MPI”。这个MPI这东西就是用它的人整天用,不用它的人基本就没听说过,关于这东西的使用课程比较有名的有陈国良院士的讲课视频。
可以看到,以数据并行为主的场景基本都是互联网领域,而以任务并行(使用MPI)的一般都是各种神秘的科研机构,而且很多都是国之大器所在的机构,或许也正是这种原因导致的即使是搞计算机的人也很大比例的没听说过这东西的存在。
 
不过近些年又出现了一种新的并行场景,那就是深度学习领域。对于分布式的深度学习计算来说,很难把它简单的归于上面的两种分类之中,因为深度学习的分布式计算既可以使用数据并行模式也可以使用任务并行模式,针对这个问题我们可以分开细看。从深度学习的角度来看可以分为数据并行和模型并行两种分类,这里需要注意的是深度学习中的数据并行并不等价于分布式集群计算中的数据并行分类。
 
先说分布式深度学习中的模型并行,其实这种计算从分布式计算的角度来看应该叫做分布式串行,因为深度学习中的模型并行即使是使用集群来操作也是不能实现并行的,而是一个设备运行结束后将数据传给另个设备的方式,并且该种计算其实更多的是在单机多显卡之间进行的,其主要的目的就是为了解决显卡显存不足的问题的。
再说下分布式深度学习中的数据并行,之所以说分布式深度学习可以划归为分布式计算中的两类均可就是因为该种情况。首先从通信和同步的方式来看,如果使用同步方式的数据并行深度学习,那么我们一般使用MPI框架,也就是分布式计算中的任务并行分类;如果使用异步方式的数据并行深度学习,那么我们一般使用rpc框架,也就是分布式计算中的数据并行分类。由于深度学习的分布式计算本身难以分类,这里就不多接受了。
 
其实个人对于MPI和rpc这两种通信协议来看,个人观点其区别其实就是对通信时延的要求上的,使用MPI的计算任务往往要求通信时延较短,并且通信数据不是很大;而rpc对通信时延的要求并没有MPI那么苛刻,甚至在一定时延内并不会影响其计算性能,而对于使用MPI的任务来说时延往往就是计算性能的瓶颈。可以说使用MPI的任务往往要比使用RPC的任务对时延要求更高。
 
 
 
 =========================================
 
 
 
 
以上我们所讨论的问题都是在集群使用高速网络链接的情况下的,高速的通信网络一般是指50Gb/s以上的网络连接速率,而我们平时所使用的家用普通PC网络的网卡最高网络连接速率为1Gb/s,也就是说在低速网络下服务器集群的并行计算方式是并没有被提及的。
局域网高速通信网络的网卡:

 

 

 

 

 
 
 
手上并没有工业级的高速网卡,就拿自己笔记本上的1Gb/s的网卡来测下家用网卡的速度:
两台家用级别的PC,一台Windows10系统,一台Ubuntu系统,网卡均为1Gb/s,使用6类网线连接,两台电脑使用1Gb/s的交换机连接。
使用iperf测速,客户端为Windows10,ip:192.168.1.103;服务器端为Ubuntu,ip:192.168.1.104。
 
客户端测速表现: 

 

服务器端测速表现:

 

 

可以看到在家用1Gb/s的网络中,一般网络速度是可以到底940mb/s的,而工业高速网络则会是这个速度的x50倍,不过高速网络的硬件费用比较高昂,一般家用用户是难以接受的。

 

我们需要知道使用树莓派构建的计算集群其网速就是1Gb/s的网络,这时有人或许会说树莓派其实也是可以通过计算模块+扩展板+100Gb/s网卡实现高速互联集群的,这个确实不假,不过需要知道的是本文研究的假设是树莓派没有涨价2倍到3倍之前的树莓派价格,要知道如果按照现在树莓派的价格来看树莓派集群在价格方面与单台高性能计算机来说已经没有任何优势了,而如果通过方案:树莓派计算模块+扩展板+100Gb/s网卡,来实现树莓派集群那么必然要比同等运算核心的单台计算机价格高上几倍的,因此这个方案是根本没有任何讨论价值的(比如组个100核心的高速网络互联树莓派集群用25万RMB,你搞一个i9-13900k造价不超1万RMB,这个i9-13900k从核心数量与单核速度来看是绝对不必100核心高速互联树莓派集群性能差的,而且价格差的可以说是相当的离谱,一个高性能网卡需要5000-10000RMB,一个树莓派扩展板要1000-3000RMB,一个树莓派计算模块也要500-1000RMB,一个13900k的CPU在5500RMB以内)。也就是说树莓派集群与单台高性能的性能对比是存在两个前提的:

1. 树莓派按照两年前的价格(现在价格的30%到50%);

2. 网络互联只使用自带的1Gb/s的网卡。

换一种说法就是,在低速网络下,在树莓派在保持低价的情况下,树莓派集群是否可以和单台高性能计算机进行性能对比(价格优势是树莓派的主要优势,如果没有价格优势的话树莓派集群自然就没有存在的价值了,在总造价没有优势的情况下噪音和电费都不是那么主要了)。

 

如果存在一种计算任务,基本没有太多是数据需要通信,甚至只会在启动时通信一次并在结束前通信一次,并且每次通信的数据量都为几个字节长度的那种,那么不论使用MPI还是RPC都是可以的,并且即使是网络通信速率极低的情况也是可以的,而该种情况就是树莓派集群所使用的场景。可以说树莓派集群适用的场景就是那种,集群各个节点之间不需要太多通信的计算场景,即使是需要频繁通信也要保证每次通信的数据量都是非常小的,因为如果单次通信的数据量极小,比如像是几个字节的通信,那么高速网络和低速网络是没有太大的对总体性能影响差距的,这里举个例子,就是分布式计算质数问题:

问题:计算108之内的所有为质数的数值个数。

我们可以把这个问题分为100个子任务,每个子任务计算106内数值为质数的个数,计算结束后再加这100个子任务的结果加和;也可以把这个问题分为50个子任务,每个子任务计算2*106内数值为质数的个数,计算结束后再加这50个子任务的结果加和。如果一个树莓派计算模块为4个核心,主频为1.5Ghz;而我们使用相同架构的服务器级arm CPU,假设单机高性能arm CPU运行在3.0Ghz下并有50个计算核心;那么在这种任务下即使是低速网络的树莓派集群的运算性能也是可以达到单机高性能计算机的性能的。

可以说,使用树莓派集群的计算任务是有很多限制的,在保证之前的两个大前提的情况下,只有那种不太需要通信同步的计算任务,或者是即使频繁通信也只是较小数据量的情况下树莓派集群才有与单台高性能计算机的可比性。我们可以知道,即使树莓派恢复到几年前的低价,适用于树莓派集群的计算任务也只是小范围的,不过对于那种需要重复运行的测试工作,而且启动运行后只有在结束时才需要同步汇总的任务还是可以使用树莓派集群的,不过这也是在树莓派没涨价之前的事情,那么树莓派集群的真正意义在哪呢?其实树莓派集群的真正意义就是research,这种research其实不是学术类的,而是企业探索型的,更加形象的说这东西是属于极客玩的DIY。不过,这个东西也不是纯玩的,如果说在树莓派保持几年前低价的情况下,有一些比较对应的应用场景如软件测试等还是可以通过使用树莓派获得较低的电费和噪音好处的,不过在今天这个树莓派价格来看还是直接买个i9-13900k来的靠谱;不过使用树莓派集群也是可以做一些集群模拟任务的,就是说你有一个分布式的计算任务打算用一个高性能计算来运行,但是由于这个造价比较高昂,这个计算任务是否真的可以通过高性能计算集群得到解决也是未知的,这时候可以使用这个低速网络低配置CPU的树莓派集群来模拟一下看看效果;不过不管怎么说,这个树莓派集群的适用的任务都是极为小众的,而且在今天这个高价树莓派的情况下使用树莓派集群更加显得没有太多价值了。

 

 

总结来说,如果你不是极客,如果你不是有闲钱,就不要想着搞树莓派集群,不然吃灰是必然的下场。 

 

 

 ==================================

 

posted on 2022-12-12 20:10  Angry_Panda  阅读(1060)  评论(0编辑  收藏  举报

导航