codingCat banner
codingCat banner

tensorflow 설치


 

macOS의 tensorflow 설치 방법


본 포스트에서는 Xcode가 설치된 macOS Mojave(10.14.3)을 기준으로 tensorflow를 설치하는 방법에 대해 정리해둔다.

tensorflow를 설치하기 위해서는 다음의 세 패키지가 설치되어 있어야 한다.

  • python
  • pip
  • virtualenv

 

Homebrew와 ruby


Homebrew는 macOS에서 사용하는 패키지 설치 및 관리 도구의 일종이다. tensorflow는 Homebrew를 통해 설치가 가능하므로 우선 이것을 설치한다. 참고로 Homebrew는 ruby 언어로 작성되어 있으므로 ruby 인터프리터가 필요하다. 다행히 macOS에는 ruby가 내장되어 있으므로 다음과 Homebrew만 설치하면 된다.

정리하면, ruby → Homebrew → 의존 패키지들 → tensorflow의 순으로 설치를 수행한다.

매킨토시에 현재 Homebrew가 설치되어 있는지 확인하려면 터미널을 열고 brew를 실행해보면 된다.

$ whereis brew

또는,

$ brew --version

을 실행하였을 때 brew 파일의 경로가 나타나거나, Homebrew의 버전 정보가 뜨면 본 단계는 건너 뛰어도 된다. 만일, brew가 실행되지 않는다면 아래의 명령어를 실행한다.

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

/usr/bin/ruby는 ruby 인터프리터이고 -e는 이후 나오는 따옴표 안의 내용이 ruby 언어로 작성되었으니 이를 실행하라는 뜻이다.

따옴표 안의 내용을 분해하면 이런 의미이다.

$(...)

괄호 안에 들어 있는 ...의 내용을 터미널에서 실행한다. 그 결과 터미널로 출력되어야 할 내용을 ruby 인터프리터가 가져와서 ruby 언어로써 실행하고 그 결과를 터미널로 보여준다. 만일 다음과 같은 내용의 텍스트 파일이 있고,

puts "'Hello, World!' in test.rb..."

이를 test.rb로 저장 했을 때 터미널에서 ruby로 이를 실행하는 예와 실행 결과는 다음과 같다.

$ ruby -e "$(cat test.rb)"
test.rb 루비 소스 파일
ruby 실행 예

curl은 서버에 접속하여 그 텍스트를 터미널로 뿌려주는 명령어이다. cat와 유사하지만, 그 열기 대상이 로컬 경로가 아니라 인터넷 주소라는 것에서 차이가 있다. -fsSL은 옵션으로서, 자세한 내용은 curl --help를 통해 확인 가능하다. 다음은 curl의 사용 예이다.

$ curl http://www.google.com/
curl로 구글 웹 사이트의 소스 코드를 터미널에 뿌릴 수 있다.

그러니까, 앞서 실행하고자 했던

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

이 명령어의 의미는 https://raw.githubusercontent.com/Homebrew/install/master/install 주소에 접속하면 ruby 언어로 된 설치 스크립트가 있는데, 이를 터미널로 출력(curl)한다. 다만 이 명령 자체가 $(...)로 둘러싸여 있으므로 ruby 인터프리터(/usr/bin/ruby)는 터미널로 출력하고자 하는 내용을 ruby 언어로 해석하여, 그 결과를 터미널로 보여주라는 의미이다.

의미를 알았다면 이제 실행하여 매킨토시에 Homebrew를 설치한다.

설치 시작
설치 완료
'brew --help'로 Homebrew가 설치 되었음을 확인할 수 있다.

 

python 설치


python 웹 사이트(https://www.python.org)에 접속하여 패키지를 다운받아 GUI 환경에서 설치하면 된다. 만일 터미널에서 설치하고자 하면 앞서 설치한 Homebrew로 설치하면 된다.

$ brew update
$ brew install python

 

pip 설치


pip도 Homebrew와 같은 패키지 관리자의 일종이며 python에서 사용한다. 만일 최신 버전(2.7.9 또는 3.4 이상)의 python을 사용중이라면 pip를 별도로 설치할 필요가 없다. 다음과 같이 파이썬과 pip의 버전을 확인하여 본다.

python --version
pip --version

또는,

python3 --version
pip3 --version
python과 pip가 설치된 것을 확인한다.

 

virtualenv 설치


virtualenv는 python 프로그램이 독립된 가상 환경에서 작동되도록 하는 도구이다. tensorflow를 설치하기 위해 마찬가지로 필요하다.

$ sudo -H pip3 install -U virtualenv

sudo -H는 이후 나올 명령어가 /Users/계정명/Library/Caches/pip/http를 포함한 그 상위 경로와 같은 특정 디렉토리에 접근할 수 있도록 하는 옵션이고, pip3 install -U는 시스템 전역에서 쓸 수 있도록 virtualenv를 설치하라는 의미이다.

pip로 virtualenv를 설치한다.

설치 후 아래 명령어를 실행하여 버전이 뜨면 성공이다.

$ virtualenv --version
ruby, brew, python, pip, virtualenv를 설치한 상태

다음은 가상 실행 환경을 구축한다. 적정한 경로에 ./venv라는 디렉토리를 만들고 python 가상 환경을 구축한다.

$ virtualenv --system-site-packages -p python3 ./venv
가상 환경 디렉토리가 생성된 상태

가상 환경을 활성화한다. shell에 (env) 표시가 붙음을 확인할 수 있다. 이 상태에서 tensorflow를 실행할 것이 권장된다.

$source ./venv/bin/activate

 

가상 환경으로 진입한 shell의 상태.

 

tensorflow 설치


본격적으로 tensorflow를 설치한다.

$ pip install --upgrade tensorflow # 안정 버전의 tensorflow를 설치한다.
$ pip install --upgrade tensorflow-gpu # GPU가 지원되는 안정 버전의 tensorflow를 설치한다.
가상 환경 shell에 tensorflow를 설치하는 과정

완료되면 다음과 같이 python 코드를 작성하여 tensorflow가 제대로 실행되는지 확인한다.

# python Source
import tensorflow as tf

tf.InteractiveSession() # tensorflow를 대화형 방식으로 실행한다.

tensor1 = tf.zeros(2) # {0} ^ 2의 텐서를 초기화한다.
print(tensor1.eval()) # 텐서를 출력한다.
$ python tf.py
오류 메시지

위와 같은 오류 메시지가 뜨는 것은 현재 장착된 CPU에서 지원하는 AVX, FMA 명령어 셋에 대한 대응이 현재 설치된 tensorflow에는 없다는 뜻인데, GPU가 설치되어 있다면 다음과 같이 설정함으로써 무시 가능하다.

# python Source
import os
# ...
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# ...
수정된 파이썬 소스

다시 실행하면 다음과 같이 결과를 볼 수 있다.

실행 결과

 

컴퓨터에 GPU가 설치되어 있지 않거나, 앞서 무시했던 오류가 거슬릴 경우 텐서플로우를 직접 컴파일하여 사용하면 된다. 이는 별도의 포스팅에서 다루겠다.


trackbacks: 0, comments: 1
 
Comments
  1. 2019.06.26 12:32
    비밀댓글입니다
     
 
 
'Application Programming Interface/Tensorflow' Related Articles