GCP에서 움직이는 Nvidia-docker2

GCP에서 움직이는 Nvidia-docker2



이전부터 개발이 진행되고 있던 Nvidia-docker2를 설치할 수 있게 되었으므로, 사용해 보았습니다.
htps : // 기주 b. 코 m / 응 ぃ ぢ 아 / 응 ぃ ぢ 아- c r

Nvidia-docker1과의 가장 큰 차이점은 시작 명령이 nvidia-docker run가 아니었다는 것입니다.
Nvidia-docker2의 시작은 docker run로 끝납니다.

GCE의 Ubuntu16.04 인스턴스에 GPU K80에서 Nvidia-docker2를 설치하고 실행해 보았으므로 그 단계를 설명합니다.

일단 설치해보자



Nvidia-docker2는 표준으로 docker-ce 지원과 같으므로 먼저 docker-ce를 설치합니다.
명령은 다음과 같습니다. 자세한 내용은 공식 문서을 참조하십시오.
sudo su -

apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

apt-get -y update
apt-get -y install docker-ce

이제 docker-ce가 설치됩니다. 계속해서 nvidia-docker2를 설치합니다.
이미 nvidia-docker1이 설치되어 있으면 apt-get purge해야합니다.
htps : // 기주 b. 코 m / 응 ぃ ぢ 아 / 응 ぃ ぢ 아- c r
sudo su -
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey |   apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list |   tee /etc/apt/sources.list.d/nvidia-docker.list
apt-get -y update

apt-get -y install nvidia-docker2

바로 사용해 봅시다.
systemctl start docker
systemctl enable docker
systemctl status docker

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi



오, 오류가 발생했습니다.nvidia 선택 사항을 모르겠습니다.

CUDA를 설치하고 Nvidia-docker2를 dockerd에 등록



Nvidia-docker2를 사용하려면 CUDA를 설치하고 nvidia-container-runtime을 dockerd에 등록해야합니다.
우선 CUDA 설치입니다.
htps : //에서 ゔぇぺぺr. 응아아. 코 m / 쿠다 - ww 아아 ds

일단 CUDA8.0을 넣어 둡니다.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
apt-get -y update
apt-get -y install --allow-unauthenticated cuda-8-0

echo 'export CUDA_HOME=/usr/local/cuda' >> /etc/profile
echo 'export PATH=/usr/local/cuda-8.0/bin:${PATH}' >> /etc/profile
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/lib/nvidia-384:/usr/lib/nvidia:${CUDA_HOME}:${LD_LIBRARY_PATH}' >> /etc/profile
source /etc/profile

이어서 nvidia-container-runtime입니다.
nvidia-container-runtime은 별다른 설명이 없지만 nvidia-docker2를 docker로 사용하기위한 런타임이라고 생각합니다. 이름적으로.
htps : // 기주 b. 코 m / 응 ぃ ぢ 아 / 음

설치 및 설정은 다음과 같습니다.
apt-get -y install nvidia-container-runtime

# Setup a rootfs based on Ubuntu 16.04
cd $(mktemp -d) && mkdir rootfs
curl -sS http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04-core-amd64.tar.gz | tar --exclude 'dev/*' -C rootfs -xz

# Create an OCI runtime spec
nvidia-container-runtime spec
sed -i 's;"sh";"nvidia-smi";' config.json
sed -i 's;\("TERM=xterm"\);\1, "NVIDIA_VISIBLE_DEVICES=0";' config.json

# Run the container
nvidia-container-runtime run nvidia_smi
nvidia-container-runtime run nvidia_smi를 실행하면 nvidia-smi에서 GPU의 작동 정보를 표시합니다.
마지막으로 dockerd 재정의입니다.
mkdir -p /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
EOF

systemctl daemon-reload
systemctl restart docker
systemctl status docker

공식 문서 을 읽으면 위의 히어 문서를 하고 있는 부분은 다음의 용도로 되어 있습니다만, 이것이라면 docker.service 가 기동하지 않았습니다.
tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
EOF

이것으로 준비 완료입니다.
nvidia-docker2를 docker run 해 봅시다.
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
--runtime=nvidia를 지정하고 nvidia/cuda 이미지에서 nvidia-smi 합니다.
실행 결과는 다음과 같습니다.



겨자 Keras에서 Cifar10의 CNN를 흘려 보겠습니다.
제대로 GPU를 사용해주는 것 같습니다.

좋은 웹페이지 즐겨찾기