나는 구형 x1055 cpu를 사용하고 있다. 10년 넘어가고 있다. 다행히 6코어라 병렬처리 지원 프로그램은 빠르다. 요즘들어 병렬처리지원 프로그램을 많이 만드는 듯 하다. 아쉽게도 avx 등 명령세트를 지원하지 않는다. 구글이 컴파일한 whl버전을 설치하면 core dumped로 죽는다. 이를 해결하려면 내가 source build를 해야한다. source build하려면 우분투 16.04에 cuda, cudnn, bazel을 설치해야 한다. 얼마? 전 나온 ubuntu 18.04를 쓰고 싶은데, 컴파일할 수 없어 설치하기 꺼려진다. 게다가 conda, 가상화 등이 작업환경을 망치는 기분이다.
이 중 docker를 알았다. host에 영향주지 않고, 안전하게 tensorflow를 쓸 수 있다. 시험으로 tensorflow 1.10 이미지에 내가 컴파일한 whl을 설치했다. 잘 된다. 이번에 밀어 버렸다.
여기에 보면 아주 쉽게 build할 수 있다. 그러나 처음 시도한 이미지로 nvidia driver를 올릴 수 없었다. 다음으로 ubuntu 16.04에서 bazel, cuda, cudnn을 차근차근 설치했다. 이 이미지가 build를 못한다. Workspace 에러가 나를 막았다.
이번에는 bazel 설치 이미지로 찾아 bazel test 했다. tensorflow cpu 컴파일도 Workspace 에러없었다. 컴파일 되는 이미지 dockerfile을 봤다. jdk8 버전에서 bazel을 설치했다.
FROM openjdk:8 # Bazel uses jdk8. Importing jdk8 image in advance, docker runs faster. # but there are some problem between openjdk8 and Bazel 0.5.3. MAINTAINER Tadashi KOJIMA <nsplat@gmail.com> # To install Bazel, see https://docs.bazel.build/versions/master/install-ubuntu.html#install-with-installer-ubuntu RUN apt-get update \ && apt-get install -y pkg-config zip g++ zlib1g-dev unzip \ && wget https://github.com/bazelbuild/bazel/releases/download/0.16.1/bazel-0.16.1-installer-linux-x86_64.sh \ && chmod +x ./bazel-0.16.1-installer-linux-x86_64.sh \ && ./bazel-0.16.1-installer-linux-x86_64.sh \ # run bazel test && ls -l bin/ \ && export PATH="$PATH:/root/bin" \ && echo $PATH \ && which bazel \ && bazel \ && echo "export PATH=\$PATH:/root/bin" >> /root/.bash_profile \ && echo "exec /bin/bash" >> /root/.bash_profile \ && . /root/.bash_profile # Set up workspace WORKDIR /home
몇 줄 진행(한시간정도?)하다 컴파일 에러났다. 이번에는ubuntu 16.04에서 시작했다. cuda, cudnn, git 필요 모듈을 설치했다. 일단 컴파일은 에러없이 성공했다. 그러나 이 빌드 gpu 버전은 gpu를 동작시키지 않는다. 나중에 중요한 사실을 알았다. 구글이 source build 문서 아래에 검증된 tensorflow, bazel, cuda 버전을 기록했다. 내가 설치한 bazel 버전이 너무 높았다. 진작 알았으면 하루 벌었는데.
https://www.tensorflow.org/install/source
마지막으로 1.10-rc2-dev-gpu-py3 docker 이미지를 받아 해봤다. 너무나 쉽게 성공했다. docker 이미지가 한글을 지원하지 않아, 환경변수를 설정했다.
python에서 한글 터미널 에러
https://www.44bits.io/ko/post/setup_linux_locale_on_ubuntu_and_debian_container
이거 한다고 주말을 다 날렸다. 컴파일하는데 약 3시간 걸렸다. 테스트 시간이 많아 확인하기 어려웠다.