Docker

Docker컨테이너를 사용하여 TensorFlow 설치를 나머지 시스템에서 격리하는 가상 환경을 만듭니다. TensorFlow 프로그램은 호스트 머신과 리소스를 공유(디렉터리 액세스, GPU 사용, 인터넷 연결 등)할 수 있는 이 가상 환경 내에서 실행됩니다. TensorFlow Docker 이미지는 각 출시에서 테스트되었습니다.

Docker는 Linux에서 TensorFlow GPU 지원을 사용 설정하는 가장 간편한 방법입니다. 호스트 머신에 NVIDIA® GPU 드라이버만 있으면 되고 NVIDIA® CUDA® Toolkit을 설치할 필요가 없기 때문입니다.

TensorFlow Docker 요구사항

  1. 로컬 호스트 머신에 Docker를 설치합니다.
  2. Linux에서 GPU를 지원하려면 NVIDIA Docker 지원을 설치합니다.
    • docker -v로 Docker 버전을 기록합니다. 19.03 이전 버전에는 nvidia-docker2와 --runtime=nvidia 플래그가 필요��니다. 19.03 이상 버전에는 nvidia-container-toolkit 패키지와 --gpus all 플래그를 사용합니다. 두 옵션 모두 위 링크된 페이지에 설명되어 있습니다.

TensorFlow Docker 이미지 다운로드

공식 TensorFlow Docker 이미지는 tensorflow/tensorflow Docker Hub 저장소에 있습니다. 이미지 출시는 다음 형식을 사용하여 태그됩니다.

태그 설명
latest TensorFlow CPU 바이너리 이미지의 최신 출시입니다. 기본값입니다.
nightly TensorFlow 이미지의 ��이���리 빌드입니다(불안정).
version TensorFlow 바이너리 이미지의 버전을 지정합니다(예: 2.1.0).
devel TensorFlow master 개발 환경의 나이틀리 빌드입니다. TensorFlow 소스 코드가 포함되어 있습니다.
custom-op TF 맞춤 작업 개발을 위한 특수 실험용 이미지입니다. 자세히 알아보기

각 베이스 태그에는 기능을 추가하거나 변경하는 변이가 있습니다.

태그 변이 설명
tag-gpu GPU를 지원하는 지정된 태그 출시입니다. 아래를 참고하세요.
tag-jupyter Jupyter를 포함하는 지정된 태그 출시입니다(TensorFlow 가이드 노트북 포함).

여러 변이를 한 번에 사용할 수 있습니다. 예를 들어 다음은 TensorFlow 출시 이미지를 시스템에 다운로드합니다.

docker pull tensorflow/tensorflow                     # latest stable release
docker pull tensorflow/tensorflow:devel-gpu           # nightly dev release w/ GPU support
docker pull tensorflow/tensorflow:latest-gpu-jupyter  # latest release w/ GPU support and Jupyter

TensorFlow Docker 컨테이너 시작

TensorFlow에서 구성된 컨테이너를 시작하려면 다음 명령어 양식을 사용합니다.

docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]

자세한 내용은 Docker 실행 참조를 참조하세요.

CPU만 포함하는 이미지를 사용한 예제

latest 태그된 이미지를 사용하여 TensorFlow 설치를 확인해 보겠습니다. Docker를 처음 실행하면 새 TensorFlow 이미지가 다운로드됩니다.

docker run -it --rm tensorflow/tensorflow \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

TensorFlow Docker 레시피를 좀 더 살펴보겠습니다. TensorFlow에서 구성된 컨테이너 내에서 bash 셸 세션을 시작합니다.

docker run -it tensorflow/tensorflow bash

컨테이너 내에서 python 세션을 시작하고 TensorFlow를 가져올 수 있습니다.

호스트 머신에서 개발된 TensorFlow 프로그램을 컨테이너 내에서 실행하려면 호스트 디렉터리를 마운트하고 컨테이너의 작업 디렉터리(-v hostDir:containerDir -w workDir)를 변경합니다.

docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py

컨테이너 내에서 생성된 파일이 호스트에 노출되는 경우 권한 문제가 발생할 수 있습니다. 일반적으로 호스트 시스템에서 파일을 수정하는 것이 가장 좋습니다.

TensorFlow의 나이틀리 빌드를 사용하여 Jupyter Notebook 서버를 시작합니다.

docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-jupyter

안내에 따라 호스트 웹브라우저에서 URL을 엽니다. http://127.0.0.1:8888/?token=...

GPU 지원

Docker는 GPU에서 TensorFlow를 실행하는 가장 간편한 방법입니다. 호스트 머신에 NVIDIA® 드라이버만 있으면 되고 NVIDIA® CUDA® Toolkit이 필요하지 않기 때문입니다.

Nvidia Container Toolkit을 설치하여 NVIDIA® GPU 지원을 Docker에 추가합니다. nvidia-container-runtime은 Linux에서만 사용할 수 있습니다. 자세한 내용은 nvidia-container-runtime 플랫폼 지원 FAQ를 참조하세요.

GPU를 사용할 수 있는지 확인합니다.

lspci | grep -i nvidia

nvidia-docker 설치를 확인합니다.

docker run --gpus all --rm nvidia/cuda nvidia-smi

GPU 사용 이미지를 사용한 예제

GPU 사용 TensorFlow 이미지를 다운로드하여 실행합니다(몇 분 정도 걸릴 수 있음).

docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

GPU 사용 이미지를 설정하는 데 시간이 걸릴 수 있습니다. GPU 기반 스크립트를 반복해서 실행하는 경우 docker exec를 사용하여 컨테이너를 재사용할 수 있습니다.

최신 TensorFlow GPU 이미지를 사용하여 컨테이너에서 bash 셸 세션을 시작합니다.

docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash