干货|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
後來試試看用 VirtualBox VM 來做,裝好一個 VM 後匯出,再複製然後匯入到不同機器的 VirtualBox。這個方式有幾個缺點:
複製 / 匯入 / 匯出 VM 蠻耗時的,VM size 也不小。
不同的 VM 狀態不容易同步。若在 VM 中有更新,要再做匯出、複製、匯入的動作,要不然就是要在每個 VM 分別做更新,這樣子的話又有可能有狀態不一致的情況產生。
曾經嘗試過使用 Vagrant + Puppet 自動化建立 VM,不過後來沒有繼續用。
最重要的是,要在 VirtualBox VM 裡面使用 GPU 加速限制很大(例如:只能用到 128MB RAM),從網路上看起來成功的人也不多。
VirtualBox VM 的效能不好。
使用 Docker
我之前沒有機會使用 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
執行下列指令,下載及安裝 nvidia-docker。
成功安裝 nvidia-docker 1.0.1。
啟動並使用 nvidia-smi 測試。第一次執行時,pull nvidia/cuda image 可能需要花幾分鐘時間。
成功啟動並顯示顯示卡資訊。
Step 2: Pull TensorFlow (with GPU Support) Image
執行下列指令,pull 最新的 TensorFlow with GPU support image。
若需要取得特定版本的 TensorFlow image,或是只需要 CPU support 版本,可以參考官網 Installing TensorFlow 文件。
Pull TensorFlow image in progress.
列出已下載的 image
Step 3: Start TensorFlow on Docker
執行下列指令,啟動 TensorFlow with GPU support on Docker,並會開啟使用 bash shell。
Host / container port 8888 將給 Jupyter Notebook 使用,port 6006 會給 TensorBoard 使用。
進入 bash 後,啟動 Jupyter Notebook。
Step 4: Open jupyter notebook from Host OS and Start Coding
成功啟動後,在上圖最後一行的 URL 就是用來開啟 Jupyter Notebook 的網址,複製下來貼到 host OS (e.g. Ubuntu) 的瀏覽器上,就可以從本地端進行開發。
從 host OS 的 Google Chrome 打開 jupyter notebook。開啟後可以看到 image 中內建的 TensorFlow 範例程式。
Step 5: Start and Open TensorBoard on Docker
在 bash 裡也可以啟動 TensorBoard,提供 Deep Learning 訓練過程的視覺化介面。執行下列指令啟動。
成功啟動後,複製在最下面一行的網址,可以在 host OS 的瀏覽器中打開 TensorBoard。
下圖就是從 Google Chrome 打開 TensorBoard。
Open TensorBoard from host OS.
“Hello TensorFlow” Test
除了在 jupyter notebook 上進行開發 TensorFlow Deep Learning 程式外,也可以在 Docker 裡面執行 Python。
從執行過程和結果可以看到,GPU 資源的確是有被啟動的。
Python Libraries Installed in the Image
檢查一下從官網 pull 的 image,已經安裝了哪些 Python library。當然自己也可以安裝其他的 library。
大功告成
透過 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大深度学习开发环境!的主要内容,如果未能解决你的问题,请参考以下文章
Tensorflow object detection API 搭建属于自己的物体识别模型——环境搭建与测试