iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0

安裝好 CUDA,如Cash所預期的, Fields,Pete,Moore 不約而同的跑來跟他抱怨他們喜愛或者被Gavin要求喜愛的 Mxnet, PyTorch, Tensorflow 根本不支援 Nvidia 官網提供的 CUDA 10.0 版。他們看能降階為 9.2 或是 9.0,但是他們彼此也在爭執哪個版本好,甚至有人冒出他看的範例程式是說要用 CUDA 8.0。

Cash 馬上提出法寶Docker來。他一開始跟大家談 Container 這種正式學名,Fields 又嚇了一大跳,幾天來好不容易懂點 Linux Server,現在又來什麼鬼 Container…。Cash改用不科學的說法:把他想成是一個輕量化的VM 好了,除了啟動那剎那需要注意一點細節,其他都不用多學習什麼。這樣幾乎讓大家滿意了。他請大家給他半小時安裝好 Docker(還需要安裝 Nvidia 提供的 runtime 叫做 nvidia-docker2,讓 Docker 可以動用到 GPU 的資源)

他參考了 Docker CE 網頁安裝了 Docker

#移除掉可能安裝了舊版或是Ubuntu自帶的 Docker
sudo apt-get remove docker docker-engine docker.io  
sudo apt-get update
#安裝後續所需抓Docker 安裝包所需的必要程式
sudo apt-get install  apt-transport-https  ca-certificates  curl   software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#讓系統信賴 Docker 安裝倉庫
sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce

安裝結束後,執行一個最小的驗證來測試

sudo docker run hello-world

會出現下列的結果,第一次使用要先下載hello-world:latest 的 image費一點時間:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete 
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
…

緊接著要安裝Nvidia 的docker runtime

# 嘗試移除 nvidia-docker 1.0版,以防萬一
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker

# 加入nvidia-docker 2.0版軟體倉庫
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

# 安裝 nvidia-docker2 
sudo apt-get install -y nvidia-docker2
#重新載入 Docker daemon 
sudo pkill -SIGHUP dockerd

安裝好後可以啟動 cuda:9.0-base 這個container,執行 nvidia-smi 這個GPU監控程式

docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi

應該出現下列的畫面:

Fri Oct 26 09:46:56 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.48                 Driver Version: 410.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  GeForce GTX 108...  Off  | 00000000:01:00.0 Off |                  N/A |
|  0%   43C    P8    12W / 280W |   8699MiB / 11178MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |

每次要進 docker 還要加 sudo 很繁瑣,變通方法就是把會用到 Docker 軟體的人加入 『docker』這個群組

sudo groupadd docker #確認有無 docker 群組,沒有就會加上
sudo usermod -aG docker $USER  #將現在登入系統的用戶加入 加入 『docker』這個群組
sudo usermod -aG docker pete  #加 pete 入 『docker』這個群組
sudo usermod -aG docker molly
sudo usermod -aG docker moore
sudo usermod -aG docker fields

這個操作會讓 pete, molly, moore 等人的權限幾乎等同 root,務必謹慎

備註:

專案緣起記錄在 【UP, Scrum 與 AI專案】


上一篇
安裝GPU 加速的 CUDA 驅動
下一篇
Docker 使用速成
系列文
深度學習所需入門知識--一位初學者的認知31

尚未有邦友留言

立即登入留言