使用TensorFlow,GPU和Docker容器进行深度学习
摘要:?數據科學家使用GPU來提高TensorFlow的計算速度,但GPU價格昂貴,也需要對其所占用的資源進行認真的管理。本文將帶你來一起解決這一問題。
在過去的幾個月中,我和多個企業的數據科學團隊進行了多次合作,也看到越來越多的機器學習和深度學習框架被廣泛應用到實際生活中。
與大數據分析和數據科學中的其他用例一樣,這些團隊希望在BlueData EPIC軟件平臺上的Docker容器中運行他們最喜歡的深度學習框架和工具。因此,我的一部分工作就是嘗試使用這些新工具,確保在我們的平臺上能夠運行,并且能夠幫助這些團隊開發出可以解決一些問題的新的功能。
TensorFlow是深度學習和機器學習最流行的開源框架之一。TensorFlow最初是由Google研究團隊開發的并致力于解決深度神經網絡的機器學習研究。另外,TensorFlow也適用于許多其他應用場景:圖像識別,自由文本數據的自然語言處理以及威脅檢測和監視等。
“TensorFlow是一個用于對一系列任務進行機器學習的開源軟件庫,它是一個構建和訓練神經網絡來檢測、解讀模式和相關性的系統,它與人類學習和推理相似(但不一樣)。”——維基百科
TensorFlow可以在各種異構系統(包括CPU和GPU)上對計算資源進行合理分配。與我合作過的幾個數據科學團隊使用GPU來提高TensorFlow的計算速度,但GPU價格昂貴,他們需要對TensorFlow所占用的資源進行認真的管理。
部署TensorFlow的注意事項
以下是部署數據科學應用程序和TensorFlow時的一些注意事項(尤其是在企業大規模部署時更應該注意):
1.如何對部署的復雜性進行管理,例如在OS,內核庫和TensorFlow不同版本之間進行部署。
2.如何在作業期間支持創建臨時集群。
3.如何隔離正在使用的資源并阻止同時隊同一資源的訪問請求。
4.如何在共享的多租戶環境中對GPU和CPU資源進行管理和分配。
BlueData EPIC軟件平臺就可以解決這些問題,它能夠按照數據科學團隊的需要訪問各種不同的大數據分析、數據科學、機器學習和深度學習工具。在一個靈活、彈性和安全的多租戶架構中使用Docker容器,BDaaS(Big-Data-as-a-Service)軟件平臺可以支持大規模分布式數據科學和深度學習用例。
BlueData的最新版本可以支持啟動采用GPU加速的集群,并且支持TensorFlow在GPU或Intel架構的CPU上進行深度學習。數據科學家可以在BlueData EPIC軟件平臺上啟動即時TensorFlow集群在Docker容器上進行深度學習。BlueData支持在Intel Xeon硬件和Intel MKL上運行基于CPU的TensorFlow,也支持采用NVIDIA CUDA庫、CUDA擴展以及用于Docker容器的字符設備映射的基于GPU的TensorFlow。
BlueData EPIC軟件平臺可以為TensorFlow提供自助服務、彈性和安全環境,無論是在本地、公共云還是在二者的混合結構中都擁有同樣的界面,不管其底層架構多么不同,用戶都會有相同的用戶體驗。
如下圖所示,用戶可以像用于其他大數據分析、數據科學和機器學習環境一樣,能夠很容易地將帶有BigDL的即時TensorFlow集群在BlueData軟件平臺上進行深度學習。并且,用戶可以指定在TensorFlow運行的Docker容器放置在有GPU還是CPU配置的基礎架構,以及在公共云還是在本地。
?
按需創建TensorFlow集群
在BlueData EPIC軟件平臺上,用戶只需點擊幾下鼠標即可根據自己的需求創建TensorFlow群集。BlueData的最新版本引入主機標簽,用戶可以創建具有主機標記的基于GPU或CPU的TensorFlow集群,這些主機標記為特定工作負載指定所需要的硬件,如下圖所示。
一旦創建完成,TensorFlow集群將擁有一個或多個Docker容器節點,這些Docker容器使用TensorFlow軟件和相應的GPU和/或CPU加速庫進行部署。例如,基于GPU的TensorFlow群集將在Docker容器內具有NVIDIA CUDA和CUDA擴展;而基于CPU的TensorFlow群集則在Docker容器中具有Intel MKL和Jupyter Notebook擴展。
高效的GPU資源管理
GPU和特定的CPU通常不會作為Docker容器的獨立資源。BlueData EPIC軟件平臺通過在所有主機上管理GPU的共享池并在群集創建期間將GPU所請求的數量分配給群集來處理此問題。這種排他性(或隔離性)保證了對深度學習作業的服務質量,并防止多個處理作業嘗試同時訪問同一資源。
對于今天的大多數企業來說,GPU是一種需要有效利用的高端資源。當一個集群沒有在使用或完成一項作業時,BlueData EPIC軟件平臺可以停止該集群使用并將GPU分配給其他正在使用的集群。 這允許用戶在不同的租戶環境中創建多個集群,并且僅僅在集群需要時才使用GPU,而不需要刪除或重新創建群集群。還有一種機制,即在作業期間創建一個群集作為暫時性集群。
提高用戶生產力
一旦TensorFlow集群創建完成,用戶可以使用AD / LDAP控制的SSH啟用容器并保護Jupyter Notebook。
為了進行驗證和測試,TensorFlow集群默認包含Jupyter Notebook,用例如下圖所示。
上圖來自于GitHub回購。這些源碼和教程可供用戶使用,并可以立即投入應用中去。
在BlueData EPIC軟件平臺上使用TensorFlow庫和圖表繪制的MNIST數據集的輸入數字圖像的重建示例如下圖所示。
根據輸入圖像和模型(使用TensorFlow GradientDescentOptimizer訓練)提取數據集和模型預測如下圖所示:
對輸入圖像和輸出預測結果的對比如下圖所示:
對運行的TensorFlow集群更新
隨著新的庫和軟件包不斷被推出,數據科學團隊的需求也在不斷的變化,因此BlueData EPIC軟件平臺提供了一種稱為“操作腳本”的機制,該機制允許用戶使用新的庫和軟件包對正在運行集群的所有節點進行更新。在長時間運行的交互或批處理作業中,用戶還可以使用基于Web的UI或RESTful API將Python作業提交。
作者:【方向】
點此查看原文: http://click.aliyun.com/m/43284/
識別以下二維碼,干貨:
總結
以上是生活随笔為你收集整理的使用TensorFlow,GPU和Docker容器进行深度学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 历史回顾——NLP问题解决方案的演变史
- 下一篇: 年轻人,你为什么来阿里做技术?