一文讀懂分佈式計算現狀與未來
星球君的朋友们
2018-08-11 03:05
本文约6052字,阅读全文需要约24分钟
不同的項目如何處理連接到網絡的計算機數量不斷增加的問題,以及如何將任務從它們運行的計算節點中隔離開來的解決方案。

本文來自:鏈聞ChainNews本文來自:

鏈聞ChainNews

鏈聞ChainNews

本文來自:

鏈聞ChainNews

鏈聞ChainNews

本文來自:鏈聞ChainNews

(ID:chainnewscom),作者:Dani Grant,UNION SQUARE VENTURES 分析師,編譯:詹涓,經授權轉發。

自1990 年代以來,人們一直試圖建立分佈式計算網絡;1996 年,因特網梅森素數大搜索計劃GIMPS 使用分佈式計算搜索素數,1999 年,Seti@Home 利用志願者的計算能力搜尋地外生命。

加密貨幣一個令我們始終雀躍不已的應用是分佈式計算。

二級標題

在加密貨幣出現之前,如果有陌生人用閒置的服務器運行了一個機器學習程序,我是沒法用自己的筆記本電腦轉給對方一點錢聊表謝意的。加密貨幣最終使我們能夠進行機器對機器的支付,以補償運行任務的參與節點。

我們一直在關注分佈式計算項目,並希望分享二級標題

不同的項目如何處理連接到網絡的計算機數量不斷增加的問題,以及如何將任務從它們運行的計算節點中隔離開來的解決方案。以下是我們的初步發現,分享給大家,供指正。

二級標題發展網絡的方法

梅特卡夫定律Metcalfe's law 適用於計算網絡:網絡上的機器越多,機器在需要時接受新任務的可能性就越大。以下是我們看到的四種有趣的方法:

方法1:讓任何人都能輕鬆地加入網絡。

方法2:幫助其他應用程序因共享用戶的資源而獲得補償。

二級標題

其中一個例子是FREEDcoin pre-beta。他們為遊戲開發者提供一套軟件開發工具包SDK。當玩家啟動運行FREEDcoin SDK 的遊戲時,他們有機會通過貢獻自己的CPU 來換取遊戲中的獎勵。這會帶來三贏的局面:FREEDcoin 可以吸引高性能的遊戲PC 加入其網絡,遊戲開發者可以在不顯示廣告的情況下將遊戲貨幣化,而玩家也有機會獲得虛擬獎勵。

比如Golem beta 可以在客戶端提交任務並進行計算,這意味著他們的每個最終用戶都可以簡簡單單地成為計算節點。這有助於他們在網絡的兩端均衡成長。

方法4:最後一種方法是為其他計算項目提供計算資源。

一個例子是SONM beta,這是一個試圖幫助其他計算網絡快速擴展的項目。有了SONM 的開放市場,機器可以通過標準化的格式顯示它們可提供多少RAM、CPU 和GPU。然後,任何使用SONM 的項目都可以在整個SONM 網絡中搜索擁有可用資源的機器。

將任務與主機相隔離的方法

二級標題

一個挑戰是確保任務不能讀取或修改主機的內存,反之亦然。如果多個任務同時在一台機器上運行,那麼它們之間彼此隔離也很重要。

不過,在這個領域,有兩個項目正在做一些獨特的事情,值得單獨拎出來說。

二級標題

Enigma pre-beta 正在設計他們所謂的「秘密合約」——這些是計算節點,很像智能合約,但是因為每一塊數據被拆散分配到在同一個計算任務上工作的多個節點,單個節點無法讀取任何數據。他們使用1980 年代開發的一種稱為「多方計算MPC」的加密方法來實現該想法。 Enigma 正在搭建自己的鏈來進行存儲和計算。

Keep pre-beta 是另一個採用類似方法的項目。他們還使用多方計算來分割加密數據以執行計算,而計算節點不能讀取任何輸入的數據。通過Keep,私有數據在集群中進行存儲和計算,輸出數據則被發佈在區塊鏈上。

最後的想法:窄用例Vs. 寬用例

對於分佈式計算項目,可以採用兩種手段:構建一個通用的計算工具,它既可以接受任何工作負載,也可只接受少量範圍的任務。

我認為同樣的模式對計算網絡也很有效:從一個狹窄的用例開始,例如訓練機器學習模型、渲染3D 圖形和蛋白質折疊燈,這將幫助項目快速運作,並隨著時間的推移擴展到其他計算領域。二級標題我們的一位合夥人Albert Wenger 曾經以微信的增長來說明這個理論:微信是從聊天開始,聊天應用取得成功,使他們能夠擴展其網絡,這樣就可以構建像支付、電子商務和遊戲這類應用程序,現在微信發展成為一個集成式的應用工具。

似乎有兩條路徑:一條是從訓練機器學習任務開始,因為機器學習是增加計算資源需求的驅動因素之一。另一條路徑則是從像3D 渲染或學術/科學計算這種用例開始,在這方面不存在保護私有數據的開銷。

二級標題

以上是我在6 月份我寫的一些總結,概述了我們所看到的計算項目類型。僅僅過去兩個月時間,在這個領域裡又出現了諸多快速發展,以下是我繼續分享的一些觀察。

二級標題

分佈式計算有兩種方式。

二級標題

在其中一種模型中,有一個占主導地位的分佈式計算協議,它創建了一個共享的計算機網絡,任何人都可以在此基礎上構建接口和客戶機

而在另一種模型中,有一些占主導地位的計算項目,每個項目都有其自己的計算機網絡。

這兩種模式都允許共存的項目,服務於不同的受眾,但其中一種,項目是位於相同共享資源池之上的客戶,而另一種,它們都運行各自獨立的網絡。這兩種模式有共存的可能性,但我認為考慮到網絡效應,共存實際上並不可行。只要有機會,項目就可能會選擇接入現有的計算機網絡,而不是構建自己的計算機網絡,因為與從頭開始相比,在起初就能訪問更多的CPU 可以為客戶提供更好的服務質量。

我們看到二者都有嘗試的用例。 SONM 是一個試圖構建共享資源層的項目。此外則是由Distributed Compute Labs 構建的「分佈式計算協議」DCP。大多數其他項目目前都在構建自己的網絡,不過有了開放協議,沒有什麼能阻止任何人為這些項目構建替代接口。我們可能會看到有些項目在開始時是其自身的系統,然後有機地發展成為在它們現在共享的資源層之上的客戶之一。我對共享計算層的可能性以及試圖構建它的團隊和項目感到非常興奮。

代幣的問題二級標題我們一直在考慮的一個問題是,開發人員將使用哪些代幣,最終用戶又將使用哪些代幣。也就是說:如果用戶與在分佈式計算網絡上運行代碼的DApp 進行交互,那麼用戶向DApp 支付的費用,是否與DApp 支付計算服務的費用相當?

另一方面,Hypernet 和Truebit 是兩個有雙代幣模型的計算項目。二級標題

在Truebit 中,購買者可以用ETH 為服務付費,而Truebit TRU 代幣僅用於協議特定的下注和爭議解決功能。這與我們今年在The Graph 和Augur 等基礎設施項目中看到的模式相匹配,這些項目使用主流消費貨幣進行交易,而它們自己的代幣僅用於治理、下注和爭端解決。

我預計,未來將有更多的項目轉移為雙代幣模型,因為它允許隨著網絡的增長而增加治理的價格,但不會增加使用其服務的價格。二級標題

EC2 模型vs. Lambda 模型

存在兩種主要類型的計算服務

:在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 搖旗吶喊,因為它在消費類筆記本電腦上相當安全並且容易實現。

除了SGX,分佈式計算協議可驗證計算的另一種方式是通過解決爭議。 Truebit 就是一個帶有爭議解決協議的計算項目,他們稱之為「驗證遊戲」。驗證者使用TRU 代幣來挑戰計算結果。

在Truebit 的爭議解決機制中,在運行程序的每一個時間步,「解決者」的狀態都會被計算哈希值——實際上,任何給定的指令都可能無法在以太坊的gas 上限內執行,因此TrueBit 將每條指令分解為16 個子步驟。然後,驗證程序查詢哈希狀態,以找到出錯的指令,再在以太坊上運行有爭議的步驟或子步驟以獲得最終結果。無論哪一方出錯,都會失去他們的賭注,這些代幣將被支付給獲勝方。

在堆棧上的什麼位置進行計算最合適?二級標題

一個懸而未決的問題是,計算服務最終會成為第一層還是第二層的解決方案。也就是說:

計算之所以要在鏈下完成,是因為目前可用的主要區塊鏈要么是比特幣,其腳本語言有限,要么是以太坊,其計算成本高昂且速度緩慢。而在未來,很可能會出現這樣一種局面:第1 層區塊鏈能夠以一種不需要網絡中每個節點都運行相同計算的方式進行計算,這將使計算成本更低,速度更快。 Perlin 是一個試圖構建此功能的項目。不過即使在Perlin 中,計算服務也是作為主Perlin 基鏈的側鏈來實現的。

二級標題


星球君的朋友们
作者文库