尊敬的各位領導、各位專家、各位線上的朋友,大家好!我是來自上海交通大學的吳晨濤。

接下來由我給大家帶來報告《分布式學習過程中硬盤故障恢復加速的研究》,報告分為四個部分。
首先介紹分布式學習的故障場景。
在云計算系統中,分布式機器學習的數據集通常部署在云上,一般來說,數據集規模很大,它通常存儲在多個節點上面,從數百GB、數TB甚至到多個EB不等。但在存儲的系統中,存儲節點會面臨著故障頻繁的問題:
一方面,計算層會從數據層的每個節點讀取數據,向前和向后傳遞到神經網絡;
另一方面,訓練結果進行有效的聚合,形成最終的結果。
下面是常見的分布式的深度學習的訓練框架。

其實向分布式機器學習,向聯邦學習等相關的機器學習的方法都采用類似的學習框架。
當前云存儲系統中面臨著嚴重的數據丟失隱患。
現在的存儲陣列(如閃存陣列)等都廣泛的應用于云存儲系統中,據一些論文報告以及全世界各大互聯網廠商的調研,傳統的Flash、硬盤都面臨著嚴重的數據丟失的隱患。傳統的3D Flash,其故障率一般來說在1%左右。

谷歌2007年的調研也表明,兩年以上的硬盤的故障率都在3%-5%之間。Facebook的調研也表明,節點也面臨著大量的故障情況。所以我們的研究主要面向著在大規模的分布式學習場景下,特別是面臨著嚴重的數據丟失隱患的情況下,硬盤發生故障后該如何進行數據的快速恢復。
在當前的云計算系統當中,糾刪碼技術成本很低,易于實現,是目前實現大規模硬盤或者大規模存儲系統容錯的一種通常的技術手段。一方面它能夠去適應不同的應用場景,另外一方面,它也面臨著很多的問題,比如說延時很高,需要占用大量的恢復帶寬。因此,如何在分布式機器學習的故障場景下保證學習效率,同時去挖掘分布式機器學習相關的數據關系來提高恢復速度。我們在這方面做了相關的工作,論文發表在IWQoS 2022會議上面,還有一些后續的工作。
現有的恢復方案主要基于兩大類。
一大類是傳統的基于糾刪碼的數據恢復方法。這些恢復方法通常來說是采用數據并行的方式來進行恢復的加速。主要問題在于糾刪碼的恢復方法主要是集中在分布式存儲系統的底層,無法感知上層機器學習應用的特征,只能支持傳統的恢復流程,恢復時間也比較長。

另外一類是基于機器學習的機器模擬的恢復方法。通過一些插幀、干的網絡或者機器學習的方法實現對圖像、視頻等相關應用的數據恢復。但是它們的恢復實際上都是一些近似恢復,無法獲得精確的數據,還需要消耗大量的GPU等算力資源。所以也存在恢復速度很慢的問題。
在這樣的場景下面,如何來做到快速而精準的恢復,是當前面臨的一個很大的問題。
二、部分恢復策略PRM

傳統的糾刪碼的一種典型的恢復方式是PPR算法,它的核心思想是將糾刪碼編碼過程當中的矩陣運算分解成幾個部分,將部分的解碼進行流水線編排,從而能實現訓練的加速。但是在整個分布式系統當中,對于丟失的數據它只能進行完全恢復,而不能進行部分恢復,而且它的恢復方式是隨機化的,它沒有考慮丟失數據對上層的機器學習模型訓練的影響。

另外一類是在PPR的基礎上進行改進的RP的算法,主要是在PPR的基礎上進行數據的細粒度編排,達到更高的流水線的并行恢復。但是它對于丟失的數據也只能進行完全恢復,而不能進行部分恢復,而且恢復也是隨機的,不能感知上層機器學習的應用信息。

機器學習的方法,比如說基于GAN的一些網絡方法,主要是根據機器學習的訓練模型生成丟失數據的近似恢復的方法方式。它也面臨著一些問題,如有比較高的一些計算開銷,需要消耗大量的GPU的算力資源,它的恢復方式主要是近似恢復,不能恢復原始的數據,存在著圖像、視頻等失真現象。
對比現有傳統的基于糾刪碼的恢復方式和基于AI的一些近似恢復的方式,我們會發現它們在流水線的并行程度、數據的恢復速度、訓練精度、恢復代價等方面各有優劣。
如何采用一種能夠融合現有糾刪碼和基于AI恢復的一些方法的優點,來達到更好的效果的方式?
我們提出了一種部分恢復(PRM)的方法,也就是采用糾刪碼部分恢復、同時也采用AI的方式來做部分的恢復,達到最好的恢復效率,最終這種恢復方法我們把它叫做PRM。
三、部分恢復策略PRM
這個恢復框架主要是分成四個部分。

第一部分是做參數選擇,主要是收集有關糾刪碼和機器學習訓練的模型參數以及相關的數據分布的信息。第二個是應用監控,主要是構建應用層監控模型,來監控當前機器學習訓練的實時狀態。第三個是計算恢復優先級,通過計算恢復優先級獲取到恢復數據的一些權重。最后是設計一個并行恢復策略,基于丟失數據的權重設計一種并行恢復機制,能夠達到更快的恢復速度。
首先介紹一下參數選擇和應用監控這兩個模塊。
在參數選擇方面,主要需要收集糾刪碼的參數、條帶的數據塊參數、條帶檢查塊參數以及編碼矩陣的參數信息。與此同時,也需要去收集機器學習模型的訓練參數,包括它的批次、批次大小以及更新權重等信息。

在應用監控方面,需要計算每個數據塊和校驗塊的權重。主要是依據下面給出的公式來進行相應的計算。

在優先級方面,主要是考慮了兩個不均衡參數,一個是局部不均衡參數,一個是全局不均衡參數。通過丟失的數據量和丟失的數據對整個樣本的影響,從而算出來對于整體的數據集的不均衡的影響。影響越大,那意味著這個數據的權重也就越高,需要恢復的優先級也就越高。
在基于不均衡參數的基礎上,我們計算了每一個數據塊加權優先級,也就是把前面的這些參數融合起來,形成下面的公式。

這里我們給了一個恢復優先級的計算例子。

假設這個三角形、五邊形和圓形分別代表著不同類型的數據。三角形的數據實際上主要是全局不平衡的參數,比如說根據條帶和節點的信息來計算,最后算出來的結果就是(1-0)÷3,局部不平衡也是(1-0)÷3,最后算出來它的條帶優先級就是0.86。

最后我們給出來一個并行恢復的例子。根據每個節點輸入輸出的情況,分別算出每種類型的恢復優先級,最后通過恢復優先級的疊加規劃出最優的一種并行路徑。
測試結果及相關的數據分析。
試驗環境是基于4塊GeForce RTX 3090 GPU卡來模擬整個分布式學習存儲節點和計算節點,同時把不同的糾刪碼將訓練數據存儲在不同的存儲節點當中。
我們使用4個訓練數據集,并且基于RS編碼來構建模擬的真實節點。整個試驗的環境的架構如下面的左圖所示,每個服務器的配制如下面的右表所示。

對比的方法主要包括傳統的基于糾刪碼的一些恢復方法,比如說像RS、PPR、RP等傳統的基于糾刪碼的并行恢復的加速算法,還有一類是基于AI的算法,包括GAN生成網絡、CPR等等相關的一些機器學習的方法。數據集主要選取了現有的基于圖像、視頻這一類的為代表的數據集,比如ImageNet、COCO等等相關的數據集。

這個表當中還顯示出了訓練集的大小,以及測試的相關圖片的數量,規模都是比較大的,一般來說是在數百萬張圖片的規模。
四、測試結果
第一個方面展示的是平均的訓練精度。我們采用RS(6,3)的糾刪碼,也就是6個數據塊+3個校驗塊的配制。當恢復相同比例的數據時,我們與典型的PPR、PRM、GAN方法相比,訓練精度明顯要更高一些,而且與下界的網絡相比,精度大約分別提高了10%和7%左右。

第二個方面,主要測試F1 Score。F1 Score其實跟我們的訓練精度也是正相關的。前面說我們的訓練精度提高了,實際上F1 Score值也大幅提升了,值分別提高了0.58%、5%、1.18%和2.01%。

第三個方面介紹的是平均恢復時間。與傳統的糾刪碼相比,PPR、RP和傳統PRM的恢復方法恢復時間分別減少57.4%、55.7%以及55.98%。與傳統的方法相比,我們應用在傳統的恢復方法方面減少33.5%的恢復開銷,效果是非常明顯的。

第四個方面主要介紹平均的網絡傳輸時間。與傳統的方法相比,分別可以減少63.4%、54.32%和53.89%的網絡傳輸帶寬。與AI的CPR相比,傳輸帶寬也能節省32.2%,效果非常明顯的。
平均的I/O吞吐率也是能得到大幅度的提升。在這4個數據集下面吞吐率分別提高了1.258倍、1.325倍、1.36倍和1.327倍,效果也是非常明顯的。
總結
此次主要介紹面臨故障場景高效保障分布式機器學習任務的正常運行。
與當前的訓練數據相關的一些數據,我們實際上會實現優先恢復,從而能夠達到訓練過程當中更好的精度的保障。與數據集相關的廣度相關的一些數據集,我們也會去做一些優先恢復,從而提高它的恢復速度。在這兩方面我們分別去做部分恢復并且把它進行融合,能夠達到更好的恢復速度,并且實現更好的支撐上層分布式機器學習的訓練效果。
以上就是我這邊的主要匯報,其他的部分我們后面再進行詳細的交流。
謝謝大家!