一文读懂分布式计算现状与未来

自 1990 年代以来,人们一直试图建立分布式计算网络;1996 年,因特网梅森素数大搜索计划 GIMPS 使用分布式计算搜索素数,1999 年,Seti@Home 利用志愿者的计算能力搜寻地外生命。

25 年后的今天,拼图上最后的几个小碎片似乎已经就位。

加密货币一个令我们始终雀跃不已的应用是分布式计算。

在加密货币出现之前,如果有陌生人用闲置的服务器运行了一个机器学习程序,我是没法用自己的笔记本电脑转给对方一点钱聊表谢意的。加密货币最终使我们能够进行机器对机器的支付,以补偿运行任务的参与节点。

加密货币使机器对机器的支付成为可能,而这使得贡献 CPU 的参与者能获得补偿。机器学习、三维仿真和生物计算等领域对计算资源的需求越来越大。

我们一直在关注分布式计算项目,并希望分享不同的项目如何处理连接到网络的计算机数量不断增加的问题,以及如何将任务从它们运行的计算节点中隔离开来的解决方案。

以下是我们的初步发现,分享给大家,供指正。

发展网络的方法

梅特卡夫定律 Metcalfe’s law 适用于计算网络:网络上的机器越多,机器在需要时接受新任务的可能性就越大。

发展计算网络非常困难,在空间越来越拥挤的情况下尤其如此。我得澄清一下,问题不在于人们已经安装了什么,不希望再安装些什么,而是一个项目想要取得突破,自然会面临许多噪音。

以下是我们看到的四种有趣的方法:

方法 1让任何人都能轻松地加入网络。一个例子是 KingsDS pre-beta。想要加入,只要访问浏览器中的 URL 并让选项卡在后台运行即可。

方法 2:帮助其他应用程序因共享用户的资源而获得补偿。其中一个例子是FREEDcoin pre-beta。他们为游戏开发者提供一套软件开发工具包 SDK。当玩家启动运行 FREEDcoin SDK 的游戏时,他们有机会通过贡献自己的 CPU 来换取游戏中的奖励。这会带来三赢的局面:FREEDcoin 可以吸引高性能的游戏 PC 加入其网络,游戏开发者可以在不显示广告的情况下将游戏货币化,而玩家也有机会获得虚拟奖励。

方法 3:构建客户机,以使每个节点都可以提交和完成任务。比如 Golem beta 可以在客户端提交任务并进行计算,这意味着他们的每个最终用户都可以简简单单地成为计算节点。这有助于他们在网络的两端均衡成长。

方法 4:最后一种方法是为其他计算项目提供计算资源。一个例子是 SONM beta,这是一个试图帮助其他计算网络快速扩展的项目。有了SONM 的开放市场,机器可以通过标准化的格式显示它们可提供多少 RAM、CPU 和 GPU。然后,任何使用 SONM 的项目都可以在整个 SONM 网络中搜索拥有可用资源的机器。

将任务与主机相隔离的方法

一个挑战是确保任务不能读取或修改主机的内存,反之亦然。如果多个任务同时在一台机器上运行,那么它们之间彼此隔离也很重要。

保持数据私密性是一个艰巨的挑战;尽管 SONM 是在 Docker 容器中运行所有任务,但它们也需要运行节点的合作伙伴签署保密协议。大多数项目都依靠像 Docker 这样的现有容器运行时来满足这一需求。这完全说得通——有了现成的轮子后,谁还想再重新发明一个?

不过,在这个领域,有两个项目正在做一些独特的事情,值得单独拎出来说。

Enigma pre-beta 正在设计他们所谓的「秘密合约」——这些是计算节点,很像智能合约,但是因为每一块数据被拆散分配到在同一个计算任务上工作的多个节点,单个节点无法读取任何数据。他们使用 1980 年代开发的一种称为「多方计算 MPC」的加密方法来实现该想法。Enigma 正在搭建自己的链来进行存储和计算。

Keep pre-beta 是另一个采用类似方法的项目。他们还使用多方计算来分割加密数据以执行计算,而计算节点不能读取任何输入的数据。通过 Keep,私有数据在集群中进行存储和计算,输出数据则被发布在区块链上。

最后的想法:窄用例 Vs. 宽用例

对于分布式计算项目,可以采用两种手段:构建一个通用的计算工具,它既可以接受任何工作负载,也可只接受少量范围的任务。

Union Square Ventures 所投的大多数公司都是从专心做一件事开始的,专注做一件事使它们得以成长,并围绕着这一件事构建起一个网络和平台。比如我们投资的Cloudflare、Stash、Carta 等,都是这种情况。

我认为同样的模式对计算网络也很有效:从一个狭窄的用例开始,例如训练机器学习模型、渲染 3D 图形和蛋白质折叠灯,这将帮助项目快速运作,并随着时间的推移扩展到其他计算领域。

我们的一位合伙人 Albert Wenger 曾经以微信的增长来说明这个理论:微信是从聊天开始,聊天应用取得成功,使他们能够扩展其网络,这样就可以构建像支付、电子商务和游戏这类应用程序,现在微信发展成为一个集成式的应用工具。

有人要问,从什么用例开始起步最恰当?

似乎有两条路径:一条是从训练机器学习任务开始,因为机器学习是增加计算资源需求的驱动因素之一。另一条路径则是从像 3D 渲染或学术/科学计算这种用例开始,在这方面不存在保护私有数据的开销。

总体而言这个领域尚处在早期,但前景令人兴奋。计算供应商之间出现更大的竞争不仅会压低价格并推动创新,而且可能会出现一种新的应用,比如 VR 和自动驾驶汽车,这种应用只有在分布式计算距离终端设备的速度比 us-west-2 区域还要快几百毫秒时,才有可能实现。

以上是我在 6 月份我写的一些总结,概述了我们所看到的计算项目类型。仅仅过去两个月时间,在这个领域里又出现了诸多快速发展,以下是我继续分享的一些观察。

隔离网络 vs 开放协议

分布式计算有两种方式。在其中一种模型中,有一个占主导地位的分布式计算协议,它创建了一个共享的计算机网络,任何人都可以在此基础上构建接口和客户机。就像 Heroku 和 EC2 一样:它们都运行在 AWS 服务器上,但是它们提供的接口有着截然不同的体验,可以满足不同的用户。

而在另一种模型中,有一些占主导地位的计算项目,每个项目都有其自己的计算机网络。

这两种模式都允许共存的项目,服务于不同的受众,但其中一种,项目是位于相同共享资源池之上的客户,而另一种,它们都运行各自独立的网络。这两种模式有共存的可能性,但我认为考虑到网络效应,共存实际上并不可行。只要有机会,项目就可能会选择接入现有的计算机网络,而不是构建自己的计算机网络,因为与从头开始相比,在起初就能访问更多的 CPU 可以为客户提供更好的服务质量。

我们看到二者都有尝试的用例。SONM 是一个试图构建共享资源层的项目。此外则是由 Distributed Compute Labs 构建的「分布式计算协议」DCP。大多数其他项目目前都在构建自己的网络,不过有了开放协议,没有什么能阻止任何人为这些项目构建替代接口。我们可能会看到有些项目在开始时是其自身的系统,然后有机地发展成为在它们现在共享的资源层之上的客户之一。我对共享计算层的可能性以及试图构建它的团队和项目感到非常兴奋。

代币的问题

我们一直在考虑的一个问题是,开发人员将使用哪些代币,最终用户又将使用哪些代币。也就是说:如果用户与在分布式计算网络上运行代码的 DApp 进行交互,那么用户向 DApp 支付的费用,是否与 DApp 支付计算服务的费用相当?

现在,计算服务中的占主流的答案是否定的。Akash、Render、Perlin、Enigma 和 SONM 是一些拥有自己交易代币的计算项目。这与 IPFS/Filecoin 的模式相同,用户可能会以任何面向消费者的主要货币 目前看来是 ETH 或 BTC 向 DApp 付费,而 DApp 则在背后换取它们提供服务所需的代币。

另一方面,Hypernet 和 Truebit 是两个有双代币模型的计算项目。

在 Truebit 中,购买者可以用 ETH 为服务付费,而 Truebit TRU 代币仅用于协议特定的下注和争议解决功能。这与我们今年在 The Graph 和 Augur 等基础设施项目中看到的模式相匹配,这些项目使用主流消费货币进行交易,而它们自己的代币仅用于治理、下注和争端解决。

我预计,未来将有更多的项目转移为双代币模型,因为它允许随着网络的增长而增加治理的价格,但不会增加使用其服务的价格。

EC2 模型 vs. Lambda 模型

在现有的 web2 世界中,存在两种主要类型的计算服务:在 EC2 模型中,开发人员得到的是一个运行和托管服务的环境,在 Lambda 模型中,开发人员编写可根据需要调用的函数。

分布式计算项目也可以分为两类:一类以 lambda 或 Cloudflare Workers 😉 为代表,用户编写脚本,项目在参与计算机上运行。另一种方法是 EC2 ,也就是「别人的计算机」:用户与网络上的某人匹配,并可以在对方的计算机上运行容器。

注意,Lambda 方法还不完全是 Lambda 在类 Lambda 分布式网络中的机器,不会存储所有曾经推送给它们的函数,并根据需要调用它们。相反,这些网络用来离线运行和异步脚本,以用于科学计算或绘制图形等用例。我预计,随着延迟的问题得到改善,它们会变得更像是无服务器计算。

生态系统同时需要这两种模型:托管 DApp 前端需要持久的主机,而运行一次性计算更适合在类似于服务器的平台上作业。

在托管平台上运作的两个项目是 Akash 和 DADI。从终端用户的角度来看,Akash 实际上很像传统的计算服务,开发人员在 Kubernetes 集群中 Akash 部署的机器上管理容器,这些容器可以在 Akash 网络上的机器之间进行联合。Akash 是由 Greg Osuri 创立的,他也是 Federated Kubernetes 的贡献者,这一点并非巧合。如果你想试试 Akash,他们最近刚推出了一个测试网。

在无服务器平台上运作的两个项目是 Ankr 和 DCP。

如何利用硬件设备

对于基于加密货币的分布式计算网络来说,分布式无服务器计算项目的独特之处在于,它们可以在陌生人的手机和笔记本电脑上运行代码,因为除了一次运行一个小脚本之外,它们不需要持久占用计算环境。

这里的理念是,这些项目可以联合所有未使用的终端用户 CPU,形成一个巨大的超级计算机,而且费用比目前云计算市场上的价格更便宜。

关于定价,我多说两句:目前主流的看法是,分布式网络将更便宜,因为它们不必为物理空间付费,并且硬件资本支出成本已经算进去了。然而,正如风险投资机构 Placeholder 的研究员 Mario Laul 向我指出的那样,云计算定价已经趋近谷底,如果分布式服务出现并削弱主要参与者,那么云服务供应商可能会把价格压到刚刚维持成本,以便保持竞争力。

目前一些项目能够通过将终端用户设备上的可用 CPU 集合起来,提供高性能计算环境,我对这些项目非常感兴趣。

在终端用户的设备上运行代码有三大挑战。第一个,是说服足够多的人参与。前文已经有过讨论。

第二个挑战是,终端用户设备的性能相对较低。为了解决这个问题,我们看到一些项目正在以并行化方式构建,以便同时在多台机器上同时运行代码。Ankr 让用户将其代码打包成块,并分别提交给网络,再由作业调度程序,将其分配给不同的机器。DCP 以在「Web Workers」 中执行的 JavaScript 对象的形式,自动将应用程序的子任务分配到各个机器上。此外,DCP 还有一点同样很聪明:它使用 WebGL 访问终端用户设备的图像处理器,从而进一步提升效率。

第三个挑战是终端用户的设备不是可信硬件。自从我们在 6 月发表该文的上半部分以来,在利用 SGX 方面已经有了很大的进展 SGX 是英特尔芯片中内置的可信硬件环境。

此后,Enigma 发布了一个利用 SGX 进行计算的测试网,Golem 发布了 Graphene-ng 以帮助开发人员编写支持 SGX 的代码,Oasis Labs 则通过 从 a16z 等机构募集了 4,500 万美元,用于构建支持 SGX 的分布式计算平台。

三大笔记本电脑制造商:惠普、联想和戴尔都支持 SGX。MacBook 有了支持 SGX 的芯片,但 BIOS 还没有配置完成,还不能让操作系统支持该功能。等到有一天苹果也加入 SGX 阵营,全球四大笔记本电脑品牌都将内置支持 SGX 的计算。

我自己一直在为 SGX 摇旗呐喊,因为它在消费类笔记本电脑上相当安全并且容易实现。

除了 SGX,分布式计算协议可验证计算的另一种方式是通过解决争议。Truebit 就是一个带有争议解决协议的计算项目,他们称之为「验证游戏」。验证者使用 TRU 代币来挑战计算结果。

在 Truebit 的争议解决机制中,在运行程序的每一个时间步,「解决者」的状态都会被计算哈希值——实际上,任何给定的指令都可能无法在以太坊的 gas 上限内执行,因此 TrueBit 将每条指令分解为 16 个子步骤。然后,验证程序查询哈希状态,以找到出错的指令,再在以太坊上运行有争议的步骤或子步骤以获得最终结果。无论哪一方出错,都会失去他们的赌注,这些代币将被支付给获胜方。

在堆栈上的什么位置进行计算最合适?

一个悬而未决的问题是,计算服务最终会成为第一层还是第二层的解决方案。也就是说:下一个主要的区块链是否将计算包含为内置服务,或者计算总是在链下运行。

计算之所以要在链下完成,是因为目前可用的主要区块链要么是比特币,其脚本语言有限,要么是以太坊,其计算成本高昂且速度缓慢。而在未来,很可能会出现这样一种局面:第 1 层区块链能够以一种不需要网络中每个节点都运行相同计算的方式进行计算,这将使计算成本更低,速度更快。Perlin 是一个试图构建此功能的项目。不过即使在 Perlin 中,计算服务也是作为主 Perlin 基链的侧链来实现的。

大多数项目要么构建现有区块链的侧链,要么是完全独立于现有基础链的链下网络。Render 是第一种方法 即现有区块链的侧链 的一个例子,以太坊智能合约会与 Render 网络交互。Akash 则是后者 即独立存在的链下网络 的一个例子,它是一个完全独立的网络。

我比较喜欢轻型的横向协议,它们可以彼此分层,而不是形成无所不能的超级协议区块链。这就是互联网现在的工作方式:彼此叠加的小型协议 SMTP> STARTTLS> TCP> IP。它可以带来可重用的模块 QUIC 和 DNS 都可以使用 UDP 而无需对 UDP 进行更改,拥有轻松更换和升级层的能力,例如,HTTP 可以与 SPDY 交换或从 HTTP 1.1 升级到 HTTP 2.0,同时无需更改下面的层。

开拓区域市场

最后我要说的是,我们看到一些项目喜欢集中在一个区域市场上,这或许非常机智。

例如,DCP 首先向加拿大的大学和实验室提供计算,不过通过这个过程,他们也让加拿大以外的地方产生了很多兴趣。

又比如 Ankr,它正将更多的精力投入到中国的计算市场,在那里对计算的需求正在飞速增长 一个可以见的例子是,阿里云的收入同比增长了 104%,而亚马逊的云服务 AWS,却在中国没有一个强有力的据点。

我们认为,这些有针对性的开拓区域市场的举措,可以产生绝妙的效果。

来源:原创:Dani Grant 链闻:ChinaNews

微信公众号微信公众号