深度學(xué)習(xí)環(huán)境搭建起來比較麻煩,特別是 GPU 加速版。既要安裝 Nvidia 的驅(qū)動(dòng),又要安裝 cuda 和 cuDNN 。本文通過 docker 容器技術(shù)搭建基于keras (tensorflow) 的深度學(xué)習(xí)環(huán)境。
Docker 是一種容器技術(shù),將你要運(yùn)行的任何環(huán)境只通過幾行命令就可以搭建完成。而 Docker 中除了用普通的 docker pull 方式直接拉取現(xiàn)成的深度學(xué)習(xí)鏡像來搭建深學(xué)環(huán)境外,還可以通過用 Dockerfile 來完成這一任務(wù)。
經(jīng)過筆者的不(jian)懈(chi)努(cai)力(keng),一個(gè)完整的經(jīng)過測試的深度學(xué)習(xí) Dockerfile 見以下鏈接:
https://github.com/zhudaoruyi/deep-learning-gpu-env
從 GitHub 上 clone 完后,(記住給個(gè) Star )進(jìn)入到 Dockerfile 所在的目錄。
Dockerfile 構(gòu)建鏡像的方法
docker build -t name:tag .
注意后面有一個(gè).符號(hào),表示當(dāng)前路徑。docker 會(huì)在當(dāng)前路徑下自動(dòng)尋找 Dockerfile 。
這一步,docker 執(zhí)行 Dockerfile 中一行行的命令,利用 docker 的分層存儲(chǔ)技術(shù)從 docker hub 中拉取相關(guān)的鏡像,大概有十幾層。執(zhí)行完成后,docker 會(huì)生成一個(gè)約5GB的鏡像??梢酝ㄟ^以下命令查看:
docker images
運(yùn)行該鏡像的方法(GPU加速)
nvidia-docker run -d -p 8888:8888 --name test -v /home/pzw:/home/workspace 鏡像ID
nvidia-docker exec -it 容器ID
保存該鏡像的方法
docker save -o 鏡像名稱
保存該容器的方法
docker export -o 容器名稱
nvidia-docker 的安裝
參考 https://github.com/zhudaoruyi/nvidia-docker
注意:安裝 nvidia-docker 之前先安裝好 docker
為了確認(rèn) nvidia-docker 是否安裝成功,運(yùn)行
nvidia-docker run --rm nvidia/cuda nvidia-smi
如果正確輸出了本機(jī)的 GPU 信息,則安裝成功。
例如:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.48 Driver Version: 367.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla M40 24GB Off | 0000:02:00.0 Off | 0 |
| N/A 33C P0 57W / 250W | 22427MiB / 22939MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla M40 24GB Off | 0000:82:00.0 Off | 0 |
| N/A 37C P0 58W / 250W | 21663MiB / 22939MiB | 0% Default |
+-------------------------------+----------------------+---------------------