干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!

Posted 全球人工智能

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!相关的知识,希望对你有一定的参考价值。

全球人工智能



前言


最近因為懶得把自己的 laptop 背來背去,所以常需要在不同的機器上工作,所以會遇到需要重建環境的問題,每次建環境也都需要花時間和 effort。雖然熟能生巧愈裝愈快,但還是在思考,要如何快速建立一個完整的 Deep Learning 和 Python 的開發環境,節省時間及 effort,也希望能夠提高 reusability。


使用 Virtualenv


Virtualenv: https://virtualenv.pypa.io/en/stable/


在 Python 的開發中,通常會遇到 Python 2 和 3 並存在同一個 OS 上的問題,另外也需要對 library 及版本的管理有比較好的機制,所以很多人會用 Virtualenv 來做。但是 Virtualenv 的問題是,像我常在不同的機器上工作,Virtualenv 在每一台上面也需要重建,所以還是有點麻煩。


使用 VirtualBox VM





干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!

网址:https://www.virtualbox.org/




後來試試看用 VirtualBox VM 來做,裝好一個 VM 後匯出,再複製然後匯入到不同機器的 VirtualBox。這個方式有幾個缺點:


  1. 複製 / 匯入 / 匯出 VM 蠻耗時的,VM size 也不小。

  2. 不同的 VM 狀態不容易同步。若在 VM 中有更新,要再做匯出、複製、匯入的動作,要不然就是要在每個 VM 分別做更新,這樣子的話又有可能有狀態不一致的情況產生。

  3. 曾經嘗試過使用 Vagrant + Puppet 自動化建立 VM,不過後來沒有繼續用。

  4. 最重要的是,要在 VirtualBox VM 裡面使用 GPU 加速限制很大(例如:只能用到 128MB RAM),從網路上看起來成功的人也不多。

  5. VirtualBox VM 的效能不好。


使用 Docker



干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!

网址:https://www.docker.com/



我之前沒有機會使用 Docker,但是看到像 Docker、Kubernetes 這些 container 都可以支援 NVIDIA GPU 加速運算,所以就來嘗試看看用 Docker 是否可以達到自己的需求 — "快速建立一個完整的 Deep Learning 和 Python 的開發環境,節省時間及 effort,也希望能夠提高 reusability。"


System specifications


我的開發環境主要配備如下:

  • CPU: Intel Core i7 6700HQ

  • 32GB RAM

  • 480 GB SATA3 SSD

  • Display card: MSI GeForce GTX 1060 GAMING X 6G (1280 cores; DDR5 6GB RAM)

  • OS: Ububtu 16.04 (64-bit)


Prerequisites


在開始安裝及設定之前,Docker, NVIDIA driver, CUDA, and cuDNN 必須先安裝成功。在我的環境裡面,我安裝的版本如下:

  • Docker 17

  • NVIDIA driver: 367.57

  • CUDA: 8.0

  • cuDNN: v5


Step 1: Install nvidia-docker



干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!

nvidia-docker Architecture



執行下列指令,下載及安裝 nvidia-docker。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


成功安裝 nvidia-docker 1.0.1。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!



啟動並使用 nvidia-smi 測試。第一次執行時,pull nvidia/cuda image 可能需要花幾分鐘時間。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


成功啟動並顯示顯示卡資訊。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


Step 2: Pull TensorFlow (with GPU Support) Image


執行下列指令,pull 最新的 TensorFlow with GPU support image。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


若需要取得特定版本的 TensorFlow image,或是只需要 CPU support 版本,可以參考官網 Installing TensorFlow 文件。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!

Pull TensorFlow image in progress.


列出已下載的 image






干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!



TensorFlow with GPU support image pulled.




Step 3: Start TensorFlow on Docker


執行下列指令,啟動 TensorFlow with GPU support on Docker,並會開啟使用 bash shell。


Host / container port 8888 將給 Jupyter Notebook 使用,port 6006 會給 TensorBoard 使用。



干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


進入 bash 後,啟動 Jupyter Notebook。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


Step 4: Open jupyter notebook from Host OS and Start Coding


成功啟動後,在上圖最後一行的 URL 就是用來開啟 Jupyter Notebook 的網址,複製下來貼到 host OS (e.g. Ubuntu) 的瀏覽器上,就可以從本地端進行開發。



干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


從 host OS 的 Google Chrome 打開 jupyter notebook。開啟後可以看到 image 中內建的 TensorFlow 範例程式。




干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!




Step 5: Start and Open TensorBoard on Docker


在 bash 裡也可以啟動 TensorBoard,提供 Deep Learning 訓練過程的視覺化介面。執行下列指令啟動。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


成功啟動後,複製在最下面一行的網址,可以在 host OS 的瀏覽器中打開 TensorBoard。




干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!




下圖就是從 Google Chrome 打開 TensorBoard。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!

Open TensorBoard from host OS.


“Hello TensorFlow” Test


除了在 jupyter notebook 上進行開發 TensorFlow Deep Learning 程式外,也可以在 Docker 裡面執行 Python。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


從執行過程和結果可以看到,GPU 資源的確是有被啟動的。




干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!

Hello, TensorFlow!



Python Libraries Installed in the Image


檢查一下從官網 pull 的 image,已經安裝了哪些 Python library。當然自己也可以安裝其他的 library。


干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!

干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!

干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!

干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!


大功告成







透過 5 個簡單的步驟,就可以運用現有的資源,建置一個完整的 Docker + Python + TensorFlow + GPU support + jupyter notebook + Deep Learning 開發環境。如果朋友們有其他更好的方法及建議,也歡迎讓我知道。


Reference


  • Installing TensorFlow: https://www.tensorflow.org/install/

  • Build and run Docker containers leveraging NVIDIA GPUs: https://github.com/NVIDIA/nvidia-docker

  • Another good tutorial: https://medium.com/@gooshan/for-those-who-had-trouble-in-past-months-of-getting-google-s-tensorflow-to-work-inside-a-docker-9ec7a4df945b#.4rbhfkdc6


热门文章推荐








以上是关于干货|10分钟搭建TensorFlow|Python|Docker等6大深度学习开发环境!的主要内容,如果未能解决你的问题,请参考以下文章

3分钟搭建图像识别系统|一份TensorFlow速成教程

Tensorflow object detection API 搭建属于自己的物体识别模型——环境搭建与测试

3分钟就能完成的Redis主从复制搭建,纯干货

干货 | 浅析程序开机自启动

干货零基础30分钟让你拥有一个完整属于自己的短视频APP系统

干货|10大深度学习框架实验对比:Caffe2最优,TensorFlow排第6