7R原則:
提出分布式在線學(xué)習(xí)計算框架應(yīng)該具備的7個原則簡稱(7R):
Performance Requirements:性能要求
- R1: Low latency 低延遲
- R2: High throughput 高吞吐量
Execution Model Requirements: 執(zhí)行模型要求
- R3: Dynamic task creation 動態(tài)任務(wù)創(chuàng)建
- R4: Heterogeneous tasks 構(gòu)建異構(gòu)任務(wù)
- R5: Arbitrary data flow dependencies 任意數(shù)據(jù)流依賴
Practical Requirements: 實踐要求
- R6: Transparent fault tolerance 透明容錯
- R7: Dubuggability and Profiling 可調(diào)試性和性能分析
假設(shè)架構(gòu):
方案
為了支持執(zhí)行模型需求(R3-R5),設(shè)計了一種API弧械,允許將任意函數(shù)指定為可遠程執(zhí)行的任務(wù)蜕乡,并具有數(shù)據(jù)流依賴關(guān)系。
- 任務(wù)創(chuàng)建是非阻塞的设捐。創(chuàng)建任務(wù)時借浊,將立即返回表示任務(wù)的最終返回值的future,并且異步執(zhí)行任務(wù)萝招。
- 可以將任意函數(shù)調(diào)用指定為遠程任務(wù)蚂斤,從而可以支持任意執(zhí)行內(nèi)核(R4)。任務(wù)參數(shù)可以是常規(guī)值或futures槐沼。當(dāng)參數(shù)是future時曙蒸,新創(chuàng)建的任務(wù)將依賴于產(chǎn)生future的任務(wù),從而啟用任意DAG依賴關(guān)系(R5)岗钩。
- 任何任務(wù)執(zhí)行都可以創(chuàng)建新的任務(wù)而不會阻止其完成纽窟。任務(wù)吞吐量因此不受任何一個工作者(R2)的帶寬限制,并且計算圖是動態(tài)構(gòu)建的(R3)凹嘲。
- 通過在相應(yīng)的future調(diào)用get方法可以獲得任務(wù)的實際返回值师倔。這會阻塞,直到任務(wù)完成執(zhí)行周蹭。
- 等待方法有一系列future趋艘,一個超時和一些數(shù)值。當(dāng)超時或完成請求的數(shù)量時凶朗,它會返回已完成任務(wù)的futures的子集瓷胧。
等待原語允許開發(fā)者當(dāng)超時時指定時間延遲要求(R1),從而計算任意大小的任務(wù)(R4)棚愤。 這對ML應(yīng)用程序很重要搓萧,因為其中一個后續(xù)的任務(wù)可能會產(chǎn)生微不足道的算法改進,雖然會阻止整個計算宛畦。這個原語增強了我們根據(jù)執(zhí)行時間(R3)動態(tài)修改計算圖的能力瘸洛。
為了補充細粒度的編程模型,我們建議使用一個數(shù)據(jù)流執(zhí)行模型次和,在該模型中反肋,當(dāng)且僅當(dāng)它們的依賴完成執(zhí)行時,才能執(zhí)行任務(wù)踏施。