《分佈式技術原理與算法解析》學習筆記Day16

分佈式計算模式:流水線

計算機中的流水線技術是一種將每條指令拆分爲多個步驟,多條指令的不同步驟重疊操作,從而實現幾條指令並行處理的技術。

分佈式領域的流水線計算模式,參考了工業生產中的流水線作業模式,將一個任務分爲多個步驟執行,使得不同任務可以並行執行,從而提高系統效率。

輸入流水線(ETL)

TensorFlow運用了流水線模式對輸入數據進行預處理,也稱爲ETL流水線,它包括3個步驟:

  1. 提取(Extract),通過多種途徑讀取數據。
  2. 轉換(Transform),使用CPU對輸入的數據進行解析以及預處理操作。
  3. 加載(Load),將轉換後的數據加載到執行機器學習模型的加速器設備上,例如GPU或者TPU。

機器學習流水線

一個典型的機器學習訓練模型按照流水線計算模式進行拆分,可以分爲5個步驟:

  1. 數據輸入,從不同的數據源中導入數據。
  2. 數據轉換,將輸入的無結構的數據轉換成合適的格式。
  3. 特徵提取,從數據集中提取特徵數據。
  4. 模型訓練,提供一個算法,並提供一些訓練數據讓模型可以學習。
  5. 模型驗證,通過訓練得到的結果,對模型進行錯誤率驗證。

整個流水線示示意圖如下所示。

流水線模式和MapReduce中對任務劃分的區別?

首先它們劃分的粒度不同:

  • MapReduce以任務爲粒度,將大的任務劃分成多個小任務,每個任務都需要執行完整的、相同的步驟,同一任務能被並行執行,這是任務並行的一種計算模式。
  • 流水線計算模式以步驟爲粒度,一個任務拆分爲多個步驟,每個步驟執行的事不同的邏輯,多個同類型任務通過此步驟重疊來實現不同任務的並行計算,它是數據並行的一種模式。

另外,它們劃分出來的子任務之間的關係也不同:

  • MapReduce中各個子任務可以獨立執行,互不干擾,多個子任務執行完成後,進行結果合併得到整個任務的結果,因此要求子任務之間是沒有依賴關係的。
  • 流水線模式中多個子任務之間具有依賴關係,前一個子任務的輸出是下一個子任務的輸入。

流水線計算模式和流計算有什麼區別?

流水線模式把一個問題分成不同的步驟,必須按照嚴格的順序處理,它的核心是錯開了時間,提高了時間利用率,但是最終結果是相同的。

流計算模式側重數據輸入方式和流動方向,處理數據時可以多方向流動,最終輸出不同的結果,在流計算的過程中,可能會用到流水線模式,把一個大的處理流程拆分成小的流程。

流計算對數據處理是實時的,流水線模式對數據處理可以是實時的,也可以是批處理方式。

流計算關注的是計算的實時性,對數據依賴性沒有流水線計算模式那麼高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章