TensorFlow 2.0의 Docker 컨테이너를 GPU+Python3+Jupyter에서 사용
10503 단어 TensorFlow파이썬도커Jupyter
이 기사에서는 GPU 지원을 사용하도록 설정한 TensorFlow 2.0의 Docker 컨테이너에서 Jupyter를 시작하고 튜토리얼을 실행할 때까지의 단계를 소개합니다.
주요 절차:
주요 환경:
방법
Docker 설치
NVIDIA Container Toolkit에서 Docker 19.03을 요청하므로 버전이 오래된 경우 업데이트하십시오.
새로 설치하는 경우 다음 명령을 실행합니다.
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ 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 docker-ce-cli containerd.io
참고:
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ 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 docker-ce-cli containerd.io
NVIDIA 드라이버 설치
다음 명령을 실행합니다.
$ sudo ubuntu-drivers autoinstall
설치 후 다시 시작합니다.
$ sudo reboot
NVIDIA Container Toolkit 설치
다음 명령을 실행합니다.
# Add the package repositories
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ 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 && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker
참고:
TensorFlow Docker 컨테이너 시작
다음 명령을 사용하여 이미지 끌어오기와 컨테이너 시작을 동시에 수행합니다.
$ sudo docker run --gpus all -u $(id -u):$(id -g) -d -p 8888:8888 -v ~/workspace:/tf tensorflow/tensorflow:latest-gpu-py3-jupyter
당기는 이미지는
tensorflow/tensorflow:latest-gpu-py3-jupyter
입니다.여러가지 시도했지만 태그는 이 순서가 아니면 안 됩니다.
또한
py3
를 제외하고 컨테이너를 시작할 수 있지만 파이썬 2가되어 버리지 마십시오. (TensorFlow 2.0은 Python 2에서는 작동하지 않을 것입니다 ...)옵션 설명:
--gpus all
: 모든 GPU 사용 -u $(id -u):$(id -g)
: 현재 사용자로 시작 -d
: detached 모드로 부팅하기 -p 8888:8888
: Jupyter 포트 게시 -v ~/workspace:/tf
: 호스트 볼륨 마운트 참고:
Jupyter 방문
Jupyter에 액세스하려면 Jupyter를 시작할 때 표시되는 URL이 필요하지만 컨테이너를 detached 모드로 시작했기 때문에 표준 출력이 표시되지 않았습니다.
그래서 컨테이너의 로그를 표시합니다.
다음 명령으로 컨테이너 ID를 가져옵니다. (표준 출력의 맨 왼쪽)
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
989625a7fc2c tensorflow/tensorflow:latest-gpu-py3-jupyter "bash -c 'source /et…" 12 minutes ago Up 12 minutes 0.0.0.0:8888->8888/tcp pedantic_banzai
검색된 컨테이너 ID를 사용하여 다음 명령을 사용하여 컨테이너 로그를 표시하고 Jupyter URL을 검색합니다.
$ sudo docker logs 989625a7fc2c
________ _______________
___ __/__________________________________ ____/__ /________ __
__ / _ _ \_ __ \_ ___/ __ \_ ___/_ /_ __ /_ __ \_ | /| / /
_ / / __/ / / /(__ )/ /_/ / / _ __/ _ / / /_/ /_ |/ |/ /
/_/ \___//_/ /_//____/ \____//_/ /_/ /_/ \____/____/|__/
You are running this container as user with ID 1000 and group 1000,
which should map to the ID and group for your user on the Docker host. Great!
[I 08:59:18.372 NotebookApp] Writing notebook server cookie secret to /.local/share/jupyter/runtime/notebook_cookie_secret
/usr/local/lib/python3.6/dist-packages/IPython/paths.py:68: UserWarning: IPython parent '/' is not a writable location, using a temp directory.
" using a temp directory.".format(parent))
[I 08:59:19.467 NotebookApp] Serving notebooks from local directory: /tf
[I 08:59:19.467 NotebookApp] The Jupyter Notebook is running at:
[I 08:59:19.467 NotebookApp] http://989625a7fc2c:8888/?token=c4a0d0593ce61b28570b5719ddad9a3759cf8623306c1e08
[I 08:59:19.467 NotebookApp] or http://127.0.0.1:8888/?token=c4a0d0593ce61b28570b5719ddad9a3759cf8623306c1e08
[I 08:59:19.467 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 08:59:19.485 NotebookApp]
To access the notebook, open this file in a browser:
file:///.local/share/jupyter/runtime/nbserver-1-open.html
Or copy and paste one of these URLs:
http://989625a7fc2c:8888/?token=c4a0d0593ce61b28570b5719ddad9a3759cf8623306c1e08
or http://127.0.0.1:8888/?token=c4a0d0593ce61b28570b5719ddad9a3759cf8623306c1e08
로그에서 볼 수 있듯이
http://127.0.0.1:8888/?token=c4a0d0593ce61b28570b5719ddad9a3759cf8623306c1e08
를 사용하여 Jupyter에 액세스합니다.튜토리얼에서 동작 확인
TensorFlow 2 quickstart for beginners에서 자습서용 노트북을 다운로드합니다.
다운로드한 노트북을 실행합니다.
5셀째의 실행중에 GPU의 사용 상황을 살펴봅니다.
$ nvidia-smi
Tue Oct 29 19:16:43 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26 Driver Version: 430.26 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| 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 105... Off | 00000000:01:00.0 Off | N/A |
| 43% 31C P0 N/A / 75W | 3867MiB / 4038MiB | 10% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 105... Off | 00000000:02:00.0 Off | N/A |
| 43% 32C P0 N/A / 75W | 57MiB / 4040MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1387 G /usr/lib/xorg/Xorg 13MiB |
| 0 4252 C /usr/bin/python3 3841MiB |
| 1 4252 C /usr/bin/python3 45MiB |
+-----------------------------------------------------------------------------+
제대로 GPU를 사용해 주었습니다.
끝
그냥 오늘부터 Kaggle에서 TensorFlow 2.0 Question Answering이라는 경쟁이 시작되었습니다.
TensorFlow 2.0을 사용해 준 누군가에게 TensorFlow 2.0상(총액 $25,000)이 주어진다고 합니다.
이것을 계기로 나도 공부해 보려고 생각합니다.
Reference
이 문제에 관하여(TensorFlow 2.0의 Docker 컨테이너를 GPU+Python3+Jupyter에서 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hrappuccino/items/fe76e2ed014c16171e47
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(TensorFlow 2.0의 Docker 컨테이너를 GPU+Python3+Jupyter에서 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hrappuccino/items/fe76e2ed014c16171e47텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)