tensorflow中主要包括了三種不同的並行策略,其分別是資料並行、模型並行、模型計算流水線並行,具體參考tenssorflow***,在接下來分別簡單介紹三種並行策略的原理
資料並行
乙個簡單的加速訓練的技術是並行地計算梯度,然後更新相應的引數。資料並行又可以根據其更新引數的方式分為同步資料並行和非同步資料並行,同步的資料並行方式如圖所示,tensorflow圖有著很多的部分圖模型計算副本,單一的客戶端執行緒驅動整個訓練圖,來自不同的裝置的資料需要進行同步更新。這種方式在實現時,主要的限制就是每一次更新都是同步的,其整體計算程式設計客棧時間取決於效能最差的那個裝置。
資料並行還有非同步的實現方式,如圖所示,與同步方式不同的是,在處理來自不同裝置的資料更新時進行非同步更新,不同裝置之間互不影響,對於每一程式設計客棧個圖副本都有乙個單獨的程式設計客棧客戶端執行緒與其對應。在這樣的實現方式下,即使有部分裝置效能特別差甚至中途退出訓練,對訓練結果和訓練效率都不會造成太大影響。但是由於裝置間互不影響,所以在更新引數時可能其他裝置已經更好的更新過了,所以會造成引數的抖動,但是整體的趨勢是向著最好的結果進行的。所以說這種方式更適用於資料量大,www.cppcns.com更新次數多的情況。
模型並行
乙個模型並行訓練的例子如圖所示,其針對的訓練物件是同一批樣本資料,但是將不同的模型計算部分分布在不同的計算裝置上同時執行。
模型計算流水線並行
此並行方式主要針對在同乙個裝置中併發實現模型的計算,如圖是其併發計算步驟,可以發現它實際上與非同步資料並行有些相似,但是唯一不同的是此方式的並行發生在同乙個裝置上,而不是在不同的裝置之間。並且在計算一批簡單的樣例時,允許進行「填充間隙」,這可以充分利用空閒的裝置資源。
本文標題: 關於tensorflow分布式並行策略
本文位址:
TensorFlow分布式計算
分布式tensorflow底層的通訊是grpc。grpc首先是乙個rpc,即遠端過程呼叫,通俗的解釋是 假設你在本機上執行一段 num add a,b 它呼叫了乙個過程call,然後返回了乙個值num,你感覺這段 只是在本機上執行的,但實際情況是,本機上的add方法是將引數打包傳送給伺服器,然後伺服...
TensorFlow分布式實踐
大資料時代,基於單機的建模很難滿足企業不斷增長的資料量級的需求,開發者需要使用分布式的開發方式,在集群上進行建模。而單機和分布式的開發 有一定的區別,本文就將為開發者們介紹,基於tensorflow進行分布式開發的兩種方式,幫助開發者在實踐的過程中,更好地選擇模組的開發方向。分布式開發會涉及到更新梯...
TensorFlow分布式實踐
大資料時代,基於單機的建模很難滿足企業不斷增長的資料量級的需求,開發者需要使用分布式的開發方式,在集群上進行建模。而單機和分布式的開發 有一定的區別,本文就將為開發者們介紹,基於tensorflow進行分布式開發的兩種方式,幫助開發者在實踐的過程中,更好地選擇模組的開發方向。基於tensorflow...