實測證實 tensorflow 在實體機與 docker 中擁有幾乎相同的效能。
移除舊版 docker:
更新 APT 的 package index:
安裝透過 HTTPS 安裝套件需要的相關工具:
將 Docker 官方的 GPG key 加入 apt-key
:
將欲使用的 repo 加入 add-apt-repository
中:
其中需注意 arch
需為 host 主機的架構。stable
為版本(另外還有 nightly
跟 test
)。
因為剛剛加入了 docker 的 repo 到 APT
中,所以我們現在要再更新一次 index:
安裝 docker:
驗證 docker 是否安裝成功:
若成功會有明顯提示出現。
注意,由於 docker 會讀寫 privileged directory,所以我們需要用 sudo
來提昇 docker 的權限,若想省去這道手續可以參考這裡。另外還需注意使用 sudo
開 docker 時,我們對共享資料夾寫入的檔案的 owner 會是 root,所以在讀寫上會比較不方便,若想避免這問題可以加入以下 option 讓 docker 的使用者改為 user:
安裝成功後我們就可以開始下載對應的 docker image,CPU 與 GPU 的 image 挑選可以參考這邊,本教學使用 CPU 的 image 作為舉例。
使用 CPU 的話我們使用以下 command 取得 image:
下載完後使用以下 command 驗證安裝是否成功:
安裝成功後即可開始正常使用 container (其中的 -it
代表 --interactive
+ --tty
,而 bash
即為開機後執行的第一個程式(非指 init
相關)):
以下介紹如何共享資料夾。以下 option 中 冒號前為 host 端的 directory,冒號後為 container 中的 directory:
以下介紹如何在 docker 中安裝 pip package。首先請確認開啟 docker 的使用者是 root (因為待會要對 image 進行寫入),接下來即可直接使用 pip command 安裝(e.g. pip install tensorflow_hub,這次教學會用到的 package),安裝完後我們要將這次安裝的套件(即對 image 做過的讀寫) commit 到 image 中(未 commit 前我們安裝的套件都會在 container 關機後消失):
如需安裝多個套件的話使用 Dockerfile 安裝會比較方便,同時也是較正規的安裝方式。
以下介紹如何指定 container 開機後的資料夾: (此為 option)
使用共享資料夾開機後即可開始使用 host 端提供的 dataset (老鼠、迷宮, etc.) 來訓練模型。訓練開始前我們要先拿到兩份來自 tensorflow 官方 GitHub 的檔案,分別是訓練用與驗證模型用,建議直接用 $ curl -O $(上面提供的網址)
下載這兩份檔案。
假設目前目錄下有 retrain.py
,並且圖片放在 image/老鼠、image/八臂
中(注意,這邊的老鼠、八臂即待會訓練程式會幫我們建立的 label 的名稱),我們使用以下 command 開始訓練模型:
注意,上述 command 中 --how_many_training_steps
為訓練次數,若不指定的話預設是 4000 次。另外,其中除了 image/
與 retrain.py
是使用者給定的資料外其餘都是訓練完成後生成的。
訓練完成後,我們使用 retrained_graph.pb
(訓練結束後生成的 model) 開始進行驗證:
執行後預期會輸出給定的圖片經過 tensorflow 判斷後各種物件的 possibility,類似如下:
如欲在自己的 python 程式中使用此 model 僅需將 label_image.py
中的部份程式碼整入自己的程式碼中即可。另外,自己的 python 程式只要放入 container 的共享資料夾後即可開始執行(需注意自己的程式用到的 package 是否 container 中有安裝,如果沒有的話照上面的教學安裝即可)。
Docker installation
Tensorflow docker installation
Tensorflow Inception
Youtube 教學(版本過時)
commit changes on docker