分布式向量計算框架的制作方法
【技術領域】
[0001] 本發明涉及一種計算框架,尤其是一種分布式向量計算框架,屬于分布式計算的
技術領域。
【背景技術】
[0002] 當前在實現大規模、高性能的機器學習算法的解決方案中普遍采用MPI直接實 現,但是需要研宄人員熟悉MPI編程,MPI程序設計更加偏向于底層,在程序設計的過程中 所需要關注的底層知識過于復雜。而且在研宄過程中還需要考慮,不同節點之間數據的劃 分,節點之間通信的控制,還有節點之間同步機制與計算過程中的容錯機制等等。因此開發 周期較長,代碼復用度低,利用MPI進行開發,對于算法的并行化會存在一定的復雜性。
[0003] 機器學習算法解決方案中缺少類似MapReduce(由Google提出的數據并行模型) 的框架,MapReduce框架在分布式計算領域應用非常廣泛,用戶只是需要關注數據處理中上 層邏輯,可以像開發單機程序那樣開發分布式計算,底層的數據劃分,節點數據同步等機制 都對上層用戶透明,而且代碼的可重用性很高,但對于分布式向量的計算支持不夠,且對于 分布式高性能計算的開發會過于復雜。
【發明內容】
[0004] 本發明的目的是克服現有技術中存在的不足,提供一種分布式向量計算框架,其 結構緊湊,提升代碼的可重用性,降低分布式計算的開發復雜度,適應范圍廣。
[0005] 按照本發明提供的技術方案,所述分布式向量計算框架,包括MPI框架以及用于 與所述MPI框架連接的MPI接口層;在所述MPI接口層上設置面向用戶的計算向量層;所述 計算向量層包括分布式向量接口層以及MapReduce接口層。
[0006] 所述容錯模塊通過將運行的任務的內存映像寫入磁盤中,當出現程序故障或系統 故障時,通過讀取存入磁盤中的任務進度來對任務進行重現。
[0007] 所述MPI接口層中,通過異步實現對數據傳輸的封裝。
[0008] 本發明的優點:提出新的分布式向量計算開發框架,有效的結合了MapReduce模 型和MPI并行模型的靈活、高效的特點,提升框架的靈活性和可擴展性;基于分布式向量 計算框架優化PageRank算法,抽象算法計算過程中的矩陣與向量數據結構特點,利用分布 式向量接口,有效的提升分布式計算效率。通過分布式向量計算框架在機器學習典型算法 PageRank中的優化應用,充分驗證了分布式向量計算框架的可用性,為進一步提高機器學 習算法的分布式計算應用服務提供支撐。
【附圖說明】
[0009] 圖1為本發明的結構框圖。
[0010] 圖2為本發明分布式相連數據結構的邏輯圖。
[0011] 圖3為本發明PageRank算法的邏輯數據結構。
[0012] 圖4為本發明PageRank算法的流程圖。
【具體實施方式】
[0013] 下面結合具體附圖和實施例對本發明作進一步說明。
[0014] 如圖1所示:為了提升代碼的可重用性,降低分布式計算的開發復雜度,本發明包 括MPI框架以及用于與所述MPI框架連接的MPI接口層;在所述MPI接口層上設置面向用 戶的計算向量層;所述計算向量層包括分布式向量接口層以及MapReduce接口層。
[0015] 具體地,MPI(MessagePassingInterface)是開發并行應用的主要編程模型。 MPI是一套消息通信接口,幾乎被所有并行計算環境和流行的多進程操作系統所支持,主 要優點是可移植性好,易于使用,支持的規模大,性能高。MPI在HPC(HighPerformance Computing高性能計算)、機器學習算法實現方面有著重要的應用。
[0016] 在MPI框架之上,設置了MPI接口層,MPI接口層為上層的計算向量層提供簡單的 接口,能夠較為方便的從計算向量層的數據轉化為MPI框架能夠計算的數據。通過異步實 現對數據的傳輸的封裝,實現內存中對數據的接收和發送的封裝。MPI接口層通過異步實現 數據的傳輸封裝的具體實現是通過循環隊列的形式在內存中開辟緩沖區來實現數據的異 步傳輸。從緩沖區接收的數據隊列中取出需要下一步計算的數據,節點之間的數據傳輸和 同步控制。
[0017] 容錯模塊是對MPI框架的一個非常重要的補充,防止MPI平臺中的服務器故障。 目前的容錯機制中能夠做到盡量減少對用戶程序的影響,方便的設置開啟和關閉。對用戶 保持透明,降低系統復雜度。在程序出現錯誤或者服務器故障或者程序Bug的情況下都保 持系統可用。容錯機制借助于HDFS的checkpoint方式,通過將系統中運行的任務的內存 映像寫入到磁盤中,當程序出現問題或者系統出現故障的時候,通過讀取磁盤中任務的進 度來對任務進行重現。進而保證數據能夠恢復進而繼續完成。本發明實施例中,容錯模塊、 MPI框架以及MPI接口層形成一個底層。
[0018] MapReduce接口層是借助MapReduce模型中的兩個過程函數對數據的處理流程思 想,以完成對Map接口和Reduce接口抽象封裝,再引入用戶自己定義的計算邏輯方法,用戶 定義的計算邏輯方法可以根據需要進行設置,具體定義過程為本技術領域人員所熟知,此 處不再贅述。其中,Map接口按照用戶制定的方式,將需要計算的Vector數據包裝成統一的 對象,傳遞給自定義計算邏輯方法接口,由用戶自定義的方法接口去執行下面的計算流程。 而在Reduce階段,同MapReduce模型中的作用一致,該階段要完成對相同key的value值 進行數據的歸納匯總,如圖2所示。
[0019] 分布式向量接口層,通過對常用的矩陣和向量數據結構進行研宄,從面向對象設 計中抽象出Vector對象。抽象出Vector對象可以用于大規模的key-value數據存儲,提 供本地的數據輸入接口,還可以在多節點數據分布中自定義Partition(劃分)方法來控制 數據的劃分。主要完成對分布式系統中數據的格式轉化,從普通的Key-value數據轉化為 Vector對象。為了更加充分的利用分布式系統的資源,將數據進一步切分,進而充分的利用 當前節點中的多核多線程處理機制,更加高效的利用分布式系統的資源。對現有計算過程 的基本抽象,對比現有算法計算中的異同點,提取出算法本身的相似基本模型,有針對性解 決現有開發過程中遇到的擴展性問題。
[0020] 下面將以實例來分析說明本發明的框架設計,基于實例對分布式向量計算的框架 進行可用性分析,選取了PageRank算法來作為分析實例,PageRank算法是排名運算法則 (排名公式)的一部分,是用來標識網頁的等級/重要性的一種方法。在揉合了諸如Title 標識和Keywords標識等所有其它因素之后,通過PageRank來調整結果,使那些更具"等級 /重要性"的網頁在搜索結果中另網站排名獲得提升,從而提高搜索結果的相關性和質量, 該技術最早是由Google創始人提出的,當前該算法廣泛應用在各大搜索引擎中。
[0021] 下面將本發明對PageRank算法的過程進行詳細說明。
[0022] PageRank算法的模型描述為: 首先求完整的公式:
【主權項】
1. 一種分布式向量計算框架,包括MPI框架以及用于與所述MPI框架連接的MPI接口 層;其特征是:在所述MPI接口層上設置面向用戶的計算向量層;所述計算向量層包括分布 式向量接口層以及MapReduce接口層。
2. 根據權利要求1所述的分布式向量計算框架,其特征是:還包括容錯模塊,所述容錯 模塊通過將運行的任務的內存映像寫入磁盤中,當出現程序故障或系統故障時,通過讀取 存入磁盤中的任務進度來對任務進行重現。
3. 根據權利要求1所述的分布式向量計算框架,其特征是:所述MPI接口層中,通過異 步實現對數據傳輸的封裝。
【專利摘要】本發明涉及一種分布式向量計算框架,其包括MPI框架以及用于與所述MPI框架連接的MPI接口層;在所述MPI接口層上設置面向用戶的計算向量層;所述計算向量層包括分布式向量接口層以及MapReduce接口層。本發明提出新的分布式向量計算開發框架,有效的結合了MapReduce模型和MPI并行模型的靈活、高效的特點,提升框架的靈活性和可擴展性;基于分布式向量計算框架優化PageRank算法,抽象算法計算過程中的矩陣與向量數據結構特點,利用分布式向量接口,有效的提升分布式計算效率。通過分布式向量計算框架在機器學習典型算法PageRank中的優化應用,充分驗證了分布式向量計算框架的可用性,為進一步提高機器學習算法的分布式計算應用服務提供支撐。
【IPC分類】G06F9-46, G06F11-07, G06F9-44
【公開號】CN104793955
【申請號】CN201510213490
【發明人】賈明岳, 劉斌, 臺憲青
【申請人】江蘇物聯網研究發展中心, 北京科電高技術公司
【公開日】2015年7月22日
【申請日】2015年4月29日