深度學習TensorFlow如何使用多GPU並行模式?
TensorFlow可以用單個GPU,加速深度學習模型的訓練過程,但要利用更多的GPU或者機器,需要了解如何並行化地訓練深度學習模型。
常用的並行化深度學習模型訓練方式有兩種:同步模式和非同步模式。
下面將介紹這兩種模式的工作方式及其優劣。
如下圖,深度學習模型的訓練是一個迭代的過程。
在每一輪迭代中,前向傳播演算法會根據當前引數的取值,計算出在一小部分訓練資料上的預測值,然後反向傳播演算法,再根據損失函式計算引數的梯度並更新引數。
非同步模式的訓練流程圖
在並行化地訓練深度學習模型時,不同裝置(GPU或CPU),可以在不同訓練資料上,執行這個迭代的過程,而不同並行模式的區別在於,不同的引數更新方式。
非同步模式的訓練流程
從非同步模式的訓練流程圖中可以看到,在每一輪迭代時,不同裝置會讀取引數最新的取值。
–但因為不同裝置,讀取引數取值的時間不一樣,所以得到的值也有可能不一樣。
根據當前引數的取值,和隨機獲取的一小部分訓練資料,不同裝置各自執行反向傳播的過程,並獨立地更新引數。
–可以認為非同步模式,就是單機模式複製了多份,每一份使用不同的訓練資料進行訓練。
同步模式深度學習訓練
在同步模式下,所有的裝置同時讀取引數的取值,並且當反向傳播演算法完成之後同步更新引數的取值。
單個裝置不會單獨對引數進行更新,而會等待所有裝置都完成反向傳播之後再統一更新引數。
分析
圖中在每一輪迭代時,不同裝置首先統一讀取當前引數的取值,並隨機獲取一小部分資料。
然後在不同裝置上執行反向傳播過程得到在各自訓練資料上引數的梯度。
當所有裝置完成反向傳播的計算之後,需要計算出不同裝置上引數梯度的平均值,最後再根據平均值對引數進行更新。
3多GPU並行
下面將給出具體的TensorFlow程式碼,在一臺機器的多個GPU上並行訓練深度學習模型。
–因為一般來說一臺機器上的多個GPU效能相似,所以在這種設定下,會更多地採用同步模式,訓練深度學習模型。
下面將給出具體的程式碼,在多GPU上訓練深度學習模型解決MNIST問題。
–樣例程式碼將沿用mnist_inference.py程式,來完成神經網路的前向傳播過程。
–新的神經網路訓練程式是mnist_multi_ gpu_train.py
執行樣例
執行MNIST樣例程式時GPU的使用情況
–因為定義的神經網路規模比較小,所以在圖中顯示的GPU使用率不高。
常用的並行化深度學習模型訓練方式有兩種:同步模式和非同步模式。
下面將介紹這兩種模式的工作方式及其優劣。
如下圖,深度學習模型的訓練是一個迭代的過程。
在每一輪迭代中,前向傳播演算法會根據當前引數的取值,計算出在一小部分訓練資料上的預測值,然後反向傳播演算法,再根據損失函式計算引數的梯度並更新引數。
非同步模式的訓練流程圖
在並行化地訓練深度學習模型時,不同裝置(GPU或CPU),可以在不同訓練資料上,執行這個迭代的過程,而不同並行模式的區別在於,不同的引數更新方式。
非同步模式的訓練流程
從非同步模式的訓練流程圖中可以看到,在每一輪迭代時,不同裝置會讀取引數最新的取值。
–但因為不同裝置,讀取引數取值的時間不一樣,所以得到的值也有可能不一樣。
根據當前引數的取值,和隨機獲取的一小部分訓練資料,不同裝置各自執行反向傳播的過程,並獨立地更新引數。
–可以認為非同步模式,就是單機模式複製了多份,每一份使用不同的訓練資料進行訓練。
同步模式深度學習訓練
在同步模式下,所有的裝置同時讀取引數的取值,並且當反向傳播演算法完成之後同步更新引數的取值。
單個裝置不會單獨對引數進行更新,而會等待所有裝置都完成反向傳播之後再統一更新引數。
分析
圖中在每一輪迭代時,不同裝置首先統一讀取當前引數的取值,並隨機獲取一小部分資料。
然後在不同裝置上執行反向傳播過程得到在各自訓練資料上引數的梯度。
當所有裝置完成反向傳播的計算之後,需要計算出不同裝置上引數梯度的平均值,最後再根據平均值對引數進行更新。
3多GPU並行
下面將給出具體的TensorFlow程式碼,在一臺機器的多個GPU上並行訓練深度學習模型。
–因為一般來說一臺機器上的多個GPU效能相似,所以在這種設定下,會更多地採用同步模式,訓練深度學習模型。
下面將給出具體的程式碼,在多GPU上訓練深度學習模型解決MNIST問題。
–樣例程式碼將沿用mnist_inference.py程式,來完成神經網路的前向傳播過程。
–新的神經網路訓練程式是mnist_multi_ gpu_train.py
執行樣例
執行MNIST樣例程式時GPU的使用情況
–因為定義的神經網路規模比較小,所以在圖中顯示的GPU使用率不高。
–如果訓練大型的神經網路模型,TensorFlow將會佔滿所有用到的GPU。
相關文章
- Tensorflow多GPU使用詳解GPU
- AMD的GPU現在可以加速TensorFlow深度學習了GPU深度學習
- 用TensorFlow進行深度學習深度學習
- [AI開發]深度學習如何選擇GPU?AI深度學習GPU
- 日本黃瓜農場主如何使用深度學習和TensorFlow深度學習
- 【深度學習篇】--Windows 64下tensorflow-gpu安裝到應用深度學習WindowsGPU
- 【騰訊深度學習系列】深度學習及並行化實現概述深度學習並行
- 在騰訊雲上搭建 Tensorflow for GPU 深度學習環境 —— Jinkey 原創GPU深度學習
- Titan XP值不值?教你如何挑選深度學習GPU深度學習GPU
- 如何在 GPU 深度學習雲服務裡,使用自己的資料集?GPU深度學習
- 《深度學習之TensorFlow》pdf深度學習
- 深度學習之Tensorflow框架深度學習框架
- 深度學習中tensorflow框架的學習深度學習框架
- 多流向演算法GPU並行化演算法GPU並行
- vSphere Bitfusion執行TensorFlow深度學習任務深度學習
- 深度學習Tensorflow實戰,新課進行曲!深度學習
- TensorFlow.NET機器學習入門【8】採用GPU進行學習機器學習GPU
- 如何使用Kubernetes GPU叢集自動訓練和加速深度學習?GPU深度學習
- 如何用雲端 GPU 為你的 Python 深度學習加速?GPUPython深度學習
- 深度學習之tensorflow2實戰:多輸出模型深度學習模型
- 私有云如何執行深度學習?看ZStack+Docker支撐GPU業務實踐深度學習DockerGPU
- Tensorflow 深度學習簡介(自用)深度學習
- 深度學習--Tensorflow初體驗深度學習
- 深度學習的TensorFlow實現深度學習
- 深度學習與 Spark 和 TensorFlow深度學習Spark
- Python-深度學習-學習筆記(9):在win7環境下的 TensorFlow GPU版安裝Python深度學習筆記Win7GPU
- 深度學習:TensorFlow入門實戰深度學習
- 深度學習tensorflow 之 distorted_inputs深度學習
- 深度學習利器:TensorFlow與NLP模型深度學習模型
- 深度學習,機器學習神器,白嫖免費GPU深度學習機器學習GPU
- 並行多工學習論文閱讀(一):多工學習速覽並行
- 使用 NVIDIA Container Toolkit 和 Docker 配置 GPU 深度學習環境AIDockerGPU深度學習
- 行業專家分享:深度學習筆記之Tensorflow入門!行業深度學習筆記
- Tensorflow2 深度學習十必知深度學習
- 基於TensorFlow的深度學習實戰深度學習
- Titan XP值不值?一文教你如何挑選深度學習GPU深度學習GPU
- OpenGL 學習 05 花托(剔除 深度測試 多邊形模式)模式
- 教你在R中使用Keras和TensorFlow構建深度學習模型Keras深度學習模型