ubuntu16.04 docker tensorflow-gpu鏡像使用


docker基礎教程:https://legacy.gitbook.com/book/yeasy/docker_practice/details,通過這個教程可以了解docker基本概念

docker安裝:參見我的另一篇博客:http://www.cnblogs.com/deepllz/p/8933073.html 

 

為什么使用docker?

  原因是:通過docker運行tensorflow-gpu容器可以避免復雜的環境的配置,比如cuda。具體環境配置有多復雜參考:本機安裝gpu版本的tf安裝參見我的另一篇博客:http://www.cnblogs.com/deepllz/p/8920420.html.

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

 

1.下載鏡像

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源碼。執行:

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

下載成功后執行:

docker images

可以查看下載的鏡像,如下圖所示:

 

可以看到有一個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重新連接進容器

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM