[Tensorflow] 우분투 도커에 텐서플로 설치하기

앞선 포스팅에서는 우분투에 텐서플로를 설치했다. 이번에는 우분투 기반의 도커에 텐서플로를 설치해보도록 하겠다.

설치방법은 두가지이다. 우분투 도커에 직접 텐서플로, 파이썬, 아나콘다를 설치해서 인공지능 개발 환경을 구축하는 방법, 또는 이 모든 툴이 준비된 도커 이미지를 외부에서 다운로드(pull)받는 방법이 있다. 당연히 후자를 선택하겠지만 적어도 처음에는 이 패키지들을 직접 설치해보고 초기 환경 세팅등을 직접 해본다면 더 의미있어 질 것이다. 물론 선택은 자유다.

1. 우분투 도커에 텐서플로 개발환경 직접 설치하기


우분투 도커 이미지를 준비한다. 완전 생 우분투 이미지이다 보니 설치된 툴들이 아무것도 없는데 필수 툴들을 설치해놓은 이미지를 다운받으면 진행이 빨라질 것이다. 도커 포스팅에서 우분투 이미지 빌드 과정을 올려놨으니 참고하자.

필자가 직접 빌드한 우분투 이미지를 다운받자.

docker pull heojj97/ubuntu:0.1
cs

이제 이 이미지를 몇가지 옵션을 부여해서 실행하자.

docker run -it --name tensor -8888:8888 heojj97/ubuntu:0.1 /bin/bash
cs

-it는 터미널 사용, --name은 tensor라는 컨테이너 이름으로 접근하기 위해, -p는 host와 도커의 포트를 연결하여 외부 접속을 가능하게 하기 위해, 그 다음 실행할 이미지 이름과 태그, /bin/bash는 터미널을 시작하는 디렉토리이다.

이제 아나콘다 설치, 텐서플로 설치, 주피터 노트북 세팅 순으로 시작해 보자.

1) 아나콘다 다운로드 및 설치

아나콘다는 "파이썬 + 기타 패키지"라고 생각하면 된다. 따라서 아나콘다를 설치하면 파이썬을 별도로 설치하고 텐서플로에 필요한 패키지들을 설치할 수고를 덜어준다.

wget https://repo.continuum.io/archive/Anaconda3-5.2.0-Linux-x86_64.sh
bash Anaconda3-5.2.0-Linux-x86_64.sh
cs

설치에는 시간이 다소 소요될 것이다. 질문할 때 말고는 설치가 진행중일 때 엔터를 누르지 않도록 주의하자. 차후 질문을 기본 값으로 설정해버리고 넘길 수도 있다.

설치가 끝나면 Do you wish the installer ~ 질문이 나올 것인데 편하게 초기설정을 하기 위해 yes로 입력하자. 그 다음 질문으로 VSCode를 설치할 것인지 묻는데 우리는 주피터 환경으로 개발할 것이므로 no를 입력하자.

설치가 완료되었고 리눅스에 설치된 bashrc 환경을 반영한다.

source ~/.bashrc
cs

2) 텐서플로 설치

차례로 명령어를 입력한다.

pip install --upgrade pip
pip install msgpack
pip install tensorflow
cs

msgpack은 MessagePack으로 JSON과 비슷하게 여러가지 언어로 데이터를 교환할 수 있지만 더 빠르고 작은 패키지이다. 텐서플로가 필요로 할 수 있으니 설치하자.

3) 주피터 노트북 설정

주피터 노트북 환경파일을 만든다.

jupyter notebook --generate-config
cs

명령어를 입력하면 자동으로 사용자의 홈디렉토리 밑에 .jupyter 디렉토리를 만들고 그 안에 jupyter_notebook_config.py 환경 설정파일을 만든다.

도커에서 기본적으로 root 권한으로 실행되기 때문에 환경파일의 위치는 /root/.jupyter/jupyter_notebook_config.py 로 될 것이다.

이제 설정 파일을 수정하자.

vi /root/.jupyter/jupyter_notebook_config.py
cs

The IP address the notebook server will listen on 부분을 찾아서

c.NotebookApp.ip = '0.0.0.0'
cs
외부에서도 접속할 수 있게 하기 위해 0.0.0.0 으로 설정한 값을 추가한다.

이제 포트를 설정하기 위해 The port the notebook server will listen on 부분을 찾아서

c.NotebookApp.port = 8888
cs

8888 포트로 설정한 값을 추가한다. 6666 등의 다른 포트를 사용해도 좋다.
외부에서 포트로 접속하기 위해서는 서버에서 8888 포트를 방화벽에서 열어야 한다. (필자의 경우 NHN Toast 서버를 사용하고 있으므로 토스트 인스턴스 설정 내 보안 정책에서 8888을 열어주었다)

이제 vi 에디터에서 저장하고 나온다. (ESC 후 wq! 입력)

주피터 노트북을 실행해보자.

jupyter notebook --config=/root/.jupyter/jupyter_notebook_config.py
cs

여기서 오류가 생긴다.


root 권한으로 실행하기를 추천하지 않는다고 하고 IP:8888 로 브라우저에 접속해보니 접속이 안됐다. 왜 그런가 고민하다가 저 문장에서 --allow-root 를 사용하라고 해서 옵션 추가 후 실행했더니 정상적으로 실행되었다.

jupyter notebook --config=/root/.jupyter/jupyter_notebook_config.py --allow-root
cs

이제 주피터 노트북 데몬이 정상적으로 실행된다.

출력 결과에 나오는 토큰이 포함된 주소로 접속하면 Jupyter가 정상적으로 사용됨을 확인할 수 있다.

이제 수동으로 설치하는 모든 과정이 끝났다.

2. 도커 이미지 받아서 텐서플로(CPU Only 버전) 설치하기


Tensorflow 1.15 이후 버전은 CPU, GPU 버전이 통합되면서 CPU가 디폴트인 모드를 사용하기 위해선 1.15버전을 설치해야 한다. 현재 토스트 서버에서 사용 중인 인스턴스에서는 GPU를 사용할 수 없으므로 1.15버전을 설치해야 했다.

docker run -it --name tensor1 tensorflow/tensorflow:1.15.0
cs

위 명령어로 텐서플로 1.15버전 이미지를 다운받고 tensor1 이라는 이름의 컨테이너로 실행한다.

docker run -it --name tensor2 -8888:8888 tensorflow/tensorflow:1.15.0-jupyter
cs

위 명령어로 8888 포트로 접속 가능한 주피터가 세팅된 텐서플로 1.15버전 이미지를 다운받고 실행할 수 있다.

도커 이미지를 사용한 설치 과정은 정말 간단하게 끝났다.
1번과 2번의 방법을 둘 다 해보면 도커가 왜 핫한지 알 수도 있겠다.

댓글 없음:

Powered by Blogger.