Docker는 컨테이너를 사용하여 TensorFlow 설치를 나머지 시스템에서 격리하는 가상 환경을 만듭니다. TensorFlow 프로그램은 호스트 머신과 리소스를 공유(디렉터리 액세스, GPU 사용, 인터넷 연결 등)할 수 있는 이 가상 환경 내에서 실행됩니다. TensorFlow Docker 이미지는 각 출시에서 테스트되었습니다.
Docker는 Linux에서 TensorFlow GPU 지원을 사용 설정하는 가장 간편한 방법입니다. 호스트 머신에 NVIDIA® GPU 드라이버만 있으면 되고 NVIDIA® CUDA® Toolkit을 설치할 필요가 없기 때문입니다.
TensorFlow Docker 요구사항
- 로컬 호스트 머신에 Docker를 설치합니다.
- 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