ubuntu16.04 docker tensorflow-gpu鏡像使用

docker基礎教程:https://legacy.gitbook.com/book/yeasy/docker_practice/details,經過這個教程能夠了解docker基本概念html

docker安裝:參見個人另外一篇博客:http://www.cnblogs.com/deepllz/p/8933073.html git

 

爲何使用docker?docker

  緣由是:經過docker運行tensorflow-gpu容器能夠避免複雜的環境的配置,好比cuda。具體環境配置有多複雜參考:本機安裝gpu版本的tf安裝參見個人另外一篇博客:http://www.cnblogs.com/deepllz/p/8920420.html.json

而在ubuntu上運行docker tensorflow-gpu鏡像,僅僅須要安裝nvidia驅動便可,幸運的是通常經過軟件更新器(software & updates→ Additional Drivers)便可順利安裝顯卡驅動,用Linux命令也能夠順利安裝.ubuntu

 

1.下載鏡像bash

docker tensorflow的鏡像官網爲https://hub.docker.com/r/tensorflow/tensorflow/,首先按照官方教程安裝nvidia-docker2,以後的tensorflow-gpu鏡像都須要nvidia-docker來啓動,或者docker run --runtime=nvidia,固然這樣就足夠用了,若是你想用docker取代nvidia-docker能夠修改/etc/docker/daemon.json爲以下所示,即在第一行加入"default-runtime": "nvidia",這樣就能夠直接用docker取代nvidia-docker了。學習

{
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

安裝配置成功以後選擇Tags標籤能夠看到不一樣tag的tensorflow鏡像,官方實例代碼選擇的tag爲latest-gpu的鏡像,能夠根據本身的須要下載鏡像,博主選擇的是1.8.0-devel-gpu-py3的鏡像,這個鏡像包含tensorflow-gpu=1.8.0版本,而且包含bazel等開發環境能夠編譯tensorflow的源代碼。即此鏡像既能夠用於訓練模型,又能夠用來學習tensorflow源碼。執行:spa

docker pull tensorflow/tensorflow:1.8.0-devel-gpu-py3

下載成功後執行:htm

docker images

能夠查看下載的鏡像,以下圖所示:blog

 

能夠看到有一個TAG名爲1.8.0-devel-gpu-py3的鏡像,證實下載成功。

2.啓動容器

若是在前面配置了"default-runtime": "nvidia",那麼執行:

docker run   --rm -it -v /home/zzh/:/root/tensorflow --name zzh tensorflow/tensorflow:1.8.0-devel-gpu-py3

沒有配置則能夠執行:

nvidia-docker run --rm -it -v /home/zzh/:/root/tensorflow --name zzh tensorflow/tensorflow:1.8.0-devel-gpu-py3

或者執行:

docker run --runtime=nvidia --rm -it -v /home/zzh/:/root/tensorflow --name zzh tensorflow/tensorflow:1.8.0-devel-gpu-py3

其中docker run的參數含義以下:

(1)--rm        退出容器清除數據

(2)-it           啓動交互式終端

(3)-v           掛在目錄

(4)--name  容器名稱

 具體細節參考官方文檔:https://docs.docker.com/engine/reference/run/

3.在容器中訓練cifar10

cifar10教程:https://www.tensorflow.org/tutorials/deep_cnn

在本機某一路徑下建立好項目,執行腳本後能夠看到訓練的速度,以下圖所示:

能夠看到,step 0到200的時間是13.52秒。

將這個目錄掛在到容器中,在容器中訓練,速度以下圖所示:

能夠看到,step 0到200的時間是12.39秒(快了的緣由是容器中的是tensorflow1.8,而本機因爲cuda版本的緣由安裝的是tensorflow1.4)

4.其餘docker經常使用命令

(1)經過[docker  commit  CONTAINER_ID   newImageName]保存對鏡像的修改,CONTAINER_ID能夠經過docker ps查看

(2)經過[docker save -o  文件名  鏡像名] 將鏡像存儲至磁盤,例如docker save -o  tensorflow.tar      tensorflow/tensorflow:1.8.0-devel-gpu-py3

(3)經過[docker load  --input  文件名] 從磁盤導入鏡像,例如docker load  --input  tensorflow.tar

(4)容器一旦退出裏面的信息就都會被清除,若不想保存修改又不想丟失信息,那麼能夠CTRL+P+Q讓容器在後臺運行,而後經過docker attach CONTAINER_ID從新鏈接進容器

相關文章
相關標籤/搜索