去中心化计算:BONIC

作者: 沛文沛语 | 来源:发表于2019-04-09 10:29 被阅读8次

    boinc

    ,这个客户端本身并不进行实际的计算工作,只是提供了管理功能,在志愿者加入了 BOINC 平台上的计算项目后,客户端程序将自动下载新的任务单元,并调用相应项目的计算程序进行计算,如果参加了多个项目,它将自动在各个项目间按用户的设定来调配计算资源,在计算完成时,它还将自动地将计算结果上传,并同时取得新的计算单元。  通过多年时间、多个项目的测试,该平台已经较为成熟。伯克利方面之前曾成功运行SETI@home 项目6年多,取得巨大成功,吸引了五百多万用户的参加,完成了两百万CPU小时的计算量。BOINC平台的开发,很重要的一个原因是为了吸引更多用户加入更多的其他由实际意义的分布式计算项目,比如气候变化,药物开发等。 BOINC 的前景非常可观,有可能发展成一种业界标准,有了 BOINC 平台,分布式计算的开发和推广工作变得更加容易简便。而统一的界面,统一的方式将会大大方便新加入分布式计算的用户,而不必研究每个不同项目的参与方法、积分算法等。

    平台应用

    加入者需要向客户端提供的信息包括:项目网站的URL(告诉客户端要添加哪个已注册的项目)、用户名、电子邮箱地址(告诉客户端在这个项目的用户名,即用来注册项目的邮箱地址)及加入者在这个项目设置的密码。


    积分系统

    积分主要用来衡量用户贡献的多少,大多数分布式计算项目或平台均提供了特定的积分系统,比如 SETI@home 项目在迁移至 BOINC 前的积分方式是记录完成的任务单元的数量。

    BOINC 平台也有自己独特的积分系统,因为在 BOINC 平台上可以运行的项目千差万别,比如项目 A 的任务单元在某台机器里需要 3 个小时完成,而项目 B 的计算包在这台机器里需要 30 个小时才能完成,或者项目 A 本身的任务包的完成时间就有一定的浮动范围,显然,用任务单元的数目来衡量用户贡献的计算量不再可行;类似的,机器性能也有差别,用完成任务单元所需的 CPU 时间来衡量工作量也是不行的。

    作为一个通用的计算平台,BOINC 平台的积分系统必须通过一定的算法才能较为准确地记录用户实际完成的计算量。

    原始的

    BOINC 平台在发展前期采用的积分系统是综合下面几方面来完成的:

    ● 对计算机性能的基准测试

    ● 完成任务单元所耗费的 CPU 时间

    ● 不同用户完成同一任务单元的情况

    具体地说,BOINC 客户端会定期地(一般是一周左右)在所运行的计算机上运行基准测试程序,对该计算机的整数及浮点计算能力做出一个评估。然后,客户端在完成分布式计算项目的任务单元后,也会记录下完成该任务单元所耗费的 CPU 时间。依据基准测试的结果和计算任务单元所用的时间,算出一个申请积分(Claimed Credit,具体算法见本站论坛中的这个主题),并在向项目的服务器上报计算结果的同时提交该申请积分的数值。

    在大部分分布式计算项目中,项目服务端会将同一个任务包分发给多个用户进行计算,以保证计算结果的可靠性,BOINC 平台同样如此。对于同一个任务包,不同用户返回的计算结果中附带的申请积分一般都会各不相同,此时,项目的服务端一般会选取中间位置的申请积分做为最终的授予得分(Granted Credit)分别授予给完成这个任务单元的所有用户。

    比如,对于 任务单元 X,用户甲、乙、丙都成功完成了该任务单元的计算,且申请积分分别是 9、11、12,则最终各个用户的得分都是 11 分。

    但仍有部分分布式计算项目并不适用于这种冗余计算方式(比如一些蛋白质结构预测的项目),也就是说同一个任务单元只会分发给一位用户进行计算,在这种情况下,用户的申请积分就等于最终的授予积分了。

    改进后

    原始的 BOINC 积分系统主要存在以下几方面的问题:

    基准测试不准,尤其是跨操作系统平台时,比如同一台计算机分别安装 Windows 版本客户端和 Linux 版本的客户端,做出的基准测试结果可能就相差比较大。

    容易导致作弊,从发展之初,BOINC 平台就开放了服务端和客户端的全部源代码,如果用户下载了客户端的源代码,自行编译的过程中修改或优化原有的基准测试代码,就可能导致他自制的 BOINC 客户端的基准测试成绩大幅偏高。

    由上述对积分系统计算申请积分的说明,基准测试成绩的变化,就会导致任务单元申请积分的相应变化。对于有冗余计算的项目,这将导致平均授予积分的小量增加,而对于没有冗余计算的项目,这将直接导致授予积分的相应提高。

    针对原始 BOINC 积分系统存在的问题,BOINC 平台上的大部分主流计算项目(如 SETI@homeEinstein@Home 等)均采取了另外一种积分策略,在计算这些项目的任务单元时,客户端将不再根据自身基准测试的结果和完成任务单元所用的计算时间来计算申请积分的值,而是根据服务端预先指定的一个值作为申请积分,换句话说,也就是完成任务单元的计算所能得到的积分是由项目的服务端预先就决定好的。

    仍有部分主流项目和大部分非主流项目,或是由于其计算的特性(如涉及到蛋白质结构预测的项目 Rosetta@home),或是由于所需的工作量暂时超出项目方的能力范围,导致了还无法采用这种在服务端预先指定任务单元积分的方式,而仍采用了原始或是进行了小幅改良(此处不再详述)的 BOINC 积分系统。


    以上内容来自百度百科。

    假如我们把BONIC的积分系统进行区块链化的改造,对于算力进行定价。

    然后算力可以进行期货交易,也就是说,我花20美元,可以购买一个小时的超级计算机的100T算力。这样也许就会改写目前的云计算的生态结构。

    相对经济性,便利性,接近性的价值会越来越高。现在伴随着带宽的增加,即便是在美国,也仿佛就在眼前,接近性的体验和在隔壁没有太大区别。但是伴随着更高性能,更短时延计算需求的爆发和诞生,云计算的这个通信物理瓶颈是无法得到有效解决的。

    比如自动驾驶对于计算反馈的时延要求就很高,所以计算必须在最近的有足够计算能力的设备上完成。

    而最近的设备有哪些是可以共享算力的呢?

    这个里面就必须引入计算机间的经济交易系统,而不只是过去的信息交换系统。

    因为维护设备运行都是有经济成本的,而这个经济成本是由背后的所有人来承担的,本质上,还是人类的经济活动之一,只是通过机器来承载。

    那么计算机之间的经济系统的构造,就不能用人类的谈判方式来进行了。这种数据,算力之间的交换,需要用符合计算机的语言体系来进行交换。而区块链从更宏观的意义上来讲是一个脱离于特定设备的冯诺依曼计算机。恰好符合这种需求。

    一个无人驾驶的汽车,要进行计算,通过路由器找到最近的有足够算力的计算机,返回原酸结果。根据行驶路线的规划,提前准备后后续的计算机进行接力。现在业内比较流行的说法叫边缘计算。

    但是边缘计算中,还是中心化的思想,没有加入经济系统的设计,没有定价系统,没有价格发现机制,也就是缺乏一套自适应的底层操作系统。

    去中心化计算+区块链,在架构上是同构的,在算法上有一些差异。一个是完成算力的分配,一个是完成经济的分配。两者融合起来,会有很多有趣的场景出现。

    相关文章

      网友评论

        本文标题:去中心化计算:BONIC

        本文链接:https://www.haomeiwen.com/subject/wpdnyqtx.html