1. 程式人生 > >Tensor Flow 深度框架的學習(第三天)

Tensor Flow 深度框架的學習(第三天)

第三天的學習內容(6-9):

       1.Tensor Flow 通過元件client(客戶端)->與master和多個worker相連,而每個worker可以和多個硬體裝置相連(如CPU和GPU)並負責管理硬體,同時master負責指導所有的worker按流程執行計算圖。

       2、TensorFlow有單機模式和分散式模式,單機是指client、master、worker都在一臺機器上的同一個程序當中,而分散式的版本允許client、master、worker在不同機器的不同程序中,由叢集排程系統統一管理各項任務。

      3.TensorFlow中的一個worker可以管理多個裝置,每一個裝置的name包括硬體類別、編號、任務號(單機版本沒有)

例如:單機:/job:localhost/device:cpu:0

          分散式模式:/job:worker/task:17/device:gpu:3

      4.Tensor Flow為CPU和GPU提供了管理裝置的物件介面,每一個物件負責分配、釋放裝置的記憶體,以及執行節點的運算核(

       5.Tensor Flow中的tensor是多位陣列,支援8-64位的int,IEEE標準的float、double和複數型,以及任意的字串

       6.每一個裝置有單獨的allocator負責儲存各種型別的tensor,同時記錄tensor的引用次數,引用數為0時,記憶體將被釋放。

       7.只有一個硬體裝置時,計算圖按照依賴關係被順序執行,當一個節點的上游依賴都被執行完後,節點被加入ready queue以等待執行,同時,節點下游的所有節點的依賴數見一。

       當有多個硬體裝置是,採用簡單的貪婪策略,不確定找到全域性最優解,但是可以用較快的速度找到一個不錯的節點運算分配方案(具體的演算法還在不斷的研究更新中)。

      8.TensorFlow允許使用者對節點的分配設定限制條件,Tensor Flow會先計算每個節點可以使用的裝置,再使用並查集(union-find)演算法找到必須使用同一個裝置的節點。

      9.當節點的分配裝置的方案被確定,整個計算圖就會被劃分為多個子圖,使用同一個裝置並且相鄰的節點劃分為同一個子圖。則之後兩個點之間的邊,可以被髮送端的傳送節點、接收端的接收節點以及從傳送節點到接收節點的邊取代。

      10、由上->資料通訊問題轉化為傳送節點和接收節點之間的實現問題。兩個子圖之間若有多個接收節點接收同一個tensor則所有的接收節點自動合併為同一個->同一套程式碼,自動擴充套件到不同硬體環境並處理複雜的通訊流程。同時,從單機單裝置改造為單機多裝置的版本會變得非常容易。