메뉴 건너뛰기

개발강좌/정보

  • 텐서플로우로 이미지인식 모바일앱 만들어보기 - 1 (환경잡기) [머신러닝/딥러닝]
  • 공돌이
    조회 수: 3529, 2017.04.23 14:50:18
  • OSX 10.12 Sierra 를 기준으로 설명합니다.

    (리눅스, 윈도우 환경에서의 설치는 일단 생략합니다. 저도 안해봐서...^^ 혹시 궁금하신 분 계시면 댓글 남겨주세요.)

     

     

    I. 텐서플로우 설치 전 필요한 환경 준비작업 (-_-;;)

    텐서플로우 설치 자체는 굉장히 심플한데, 그 설치를 위해 환경을 설정하는게 좀 이것저것 있네요. 이 기본환경만 잘 준비되어 있으면, 텐서플로우를 몇번이고 지웠다 다시설치했다, 디렉토리 여러개에 다른 버전을 설치했다가 하는 등 부담없이 작업이 가능하니까, 이 부분을 잘 해줘야 합니다.

     

    1) -  CUDA/cuDNN 등 GPU연산을 위해 NVIDIA사에서 제공하는 라이브러리 설치 (꼭 필요한건 아닙니다 패스해도 상관없...)

        -  Xcode 8.2.1 혹은 7.3 (GPU 연산을 위해서는 이전 버전의 Xcode가 필요합니다   2017/04/18 기준) 

    2) Homebrew : 파이썬, 깃(git) 등의 패키지 설치 및 관리를 편하게 하기 위해 필요

    3) 파이썬 (2.7이 맥에 기본으로 설치되어 있지만, 저는 무조건 최신을 선호하니까 homebrew를 이용해서 3.6을 따로 설치하겠습니다)

    4) git (필수설치요소는 아닌데, 텐서플로우 소스를 쉽게 다운/설치/업그레이드하기위해서는 있으면 좋을듯 합니다)

    5) bazel (구글에서 제공하는 빌드툴입니다. 이게 있어야 나중에 여러 유틸리티들을 빌드할 수 있습니다)

    6) virtualenv (파이썬 패키지 중의 하나로, 가상환경을 만들어줍니다. 이 글에서는 virtualenv 기준으로 설명합니다. 다른 환경에서 진행은 여기를 참조 하세요)

     

     

    1-1). 내 하드웨어가 텐서플로우 GPU버전을 돌릴 수 있는지, CPU버전만 돌릴 수 있는지 확인

       텐서플로우는 굉장히 빡세게 수학/통계 연산을 수행하기 때문에 GPU를 연산에 활용할 수 있습니다. 단, NVIDIA 그래픽카드만 가능합니다.

       GPU버전의 텐서플로우를 이용할 수 있으면 아무래도 학습에 걸리는 시간 등에 대해 잇점이 있겠지요.

       맥북프로의 경우 아마 late2013 모델인가 2014모델인가 까지 NVidia GTX시리즈 그래픽카드를 채용해서 GPU버전의 사용이 가능하고, 그 이후버전은 안됩니다.(구형만 된다니!)

      *  본인의 PC가 GPU버전 설치가 가능한지 확인하시려면 우선

    1) 그래픽카드가 뭔지 확인 : 맥의 경우 사과아이콘-> 이 Mac에 관하여 선택후 개요의 그래픽 부분 혹은 디스플레이탭의 그래픽카드 이름 확인

    2) 나의 그래픽카드가 NVIDIA 의 CUDA GPU 페이지에 있는지 확인 (제경우엔 NVIDIA GTX750M 그래픽카드인데 리스트에 있네요)

     

     리스트에 있다면 GPU버전을 설치해도 괜챃습니다. 이후부터는 CPU버전/GPU버전에 따라 차이가 있는 경우 각각 설명하겠습니다.

     

    1-2). Xcode 와 command line tools 설치

    -  텐서플로우 학습과 여러 작업에 사용되는 프로그램들을 빌드하기 위해서는 Xcode가 필요합니다.

    -  텐서플로우 CPU: 최신의 Xcode 및 툴을 사용가능 (혹은 없이도 사용은 가능)

    -  텐서플로우 GPU: OS버전에 따라 사용가능한 Xcode 버전이 다름 ( 2017/04/22 기준 .  표1 참고)

     

    표 1. Mac Operating System Support in CUDA 8.0.61
     Toolchain Mac OSX Version (native x86_64)
    Xcode Apple LLVM 10.11 10.12
    7.2 7.0.3 YES NO
    8.2 8.0.0 NO YES

     

    * GPU버전을 위해 8.2 등의 예전버전을 설치하시려면 : 

    1) Apple Developer Download Page (Apple 계정으로 로그인 필요)

     

    2) Xcode 8.2.1.xip 를 다운로드 받아 압축을 푼 후, 어플리케이션 폴더로 끌어서 설치하세요.

    - 이미 Xcode의 최신버전을 사용하고 계시다면 압축푼 Xcode.app 을 Xcode82.app 등 다른이름으로 변경하여 복사하시면 두개를 번갈아가며 사용하실 수 있습니다.

    - 실수로 강제업그레이드 안하시려면 기존 Xcode 없으시더라도 이름을 바꿔 설치하는게 나을듯.

     

    3) 터미널을 열어 아래의 명령어를 수행  (앱명이 Xcode82.app 이라고 가정 . 바꾼 이름으로 대체하세요)

    $ xcode-select -s /Applications/Xcode82.app/Contents/Developer      # 사용할 Xcode 선택 (나중에 기존꺼랑 왔다갔다할 때 사용)

    $ xcode-select --install                                                                          # cuda,cudnn컴파일에 필요한 커맨드라인툴 설치

    $ /usr/bin/cc --version                                                                           # 제대로 설치되었는지 cc 버전확인

     

    1-3) NVIDIA CUDA, CUDnn 설치

    * GPU버전의 텐서플로우를 사용하실 경우만 설치하시면 됩니다. (본인의 그래픽카드가 호환가능한지 확인: 여기서)

    설치자체는 간단합니다. 다만 cuDNN 라이브러리파일을 다운로드 받기위해서는 NVIDIA에 계정을 만들어야 합니다...^^;; 

    a) CUDA 라이브러리 설치: https://developer.nvidia.com/cuda-downloads 로 가서 본인의 시스템에 맞는 설치파일을 다운로드합니다.( 저의 경우 Mac OSX_X64에 10.12 버전)

    CUDA 8.0 Downloads | NVIDIA Developer 2017-04-22 17-53-39.png

     

     

    b) 다운로드받은 설치파일을 실행하여 설치 (귀찮으니까 다 설치해줍니다)

     

    Monosnap 2017-04-22 17-54-33.png

    설치가 완료되면 다음의 두군데 디렉토리에 cuda 가 설치됩니다

     /Developers/NVIDIA/CUDA-8.0

     /usr/local/cuda

     

    환경파일에 cuda경로를 설정해줍니다. 

     

    홈폴더 밑에 있는 .bashrc 를 수정 (맥의 디폴트 텍스트편집기로 수정하심 안됩니다!)

     

    터미널을 열어서 

     

    vi .bash_profile 혹은 nano .bash_profile 해서 나오는 내용 제일 아랫부분에 아래의 내용을 추가해주세요.

     

    export PATH=/Developer/NVIDIA/CUDA-8.0/bin${PATH:+:${PATH}}

    export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA-8.0/lib\

             ${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}

    export CUDA_HOME=/usr/local/cuda

    export LD_LIBRARY_PATH="$CUDA_HOME/lib:$LD_LIBRARY_PATH"

    export PATH="$CUDA_HOME/bin:$PATH"

     

     

    c) cuDNN 라이브러리도 설치: https://developer.nvidia.com/cudnn 에서 다운로드하세요(회원가입필요)

    cuDNN의 경우 그냥 압축파일이라 풀면 cuda폴더 안에 lib 과 include 폴더만 딸랑 생깁니다. 이 폴더 안의 파일들을 전부 cuda library 폴더 안에 집어넣어 주셔야 합니다.

    압축을 풀었다면 아래의 명령을 수행하여 cuda 디렉토리 안으로 라이브러리를 복사해줍니다.

     

    $ sudo cp /압축파일푼폴더/cuda/lib/* /usr/local/cuda/lib/

    $ sudo cp /압축파일푼폴더/cuda/include/* /usr/local/cuda/include/

     

    d) 원래는 여기까지 하면 cuda 관련한 설치는 다 종료되었어야 하지만, 나중에 파일들을 빌드하면서 라이브러리를 못찾는다고 하는 경우가 발생할 수 있습니다.

    이경우 대부분 libcuda.dylib 과 libcudnn.dylib 에서 버전명을 넣어준파일과 없는파일관련한 오류가 발생하는데, 결국은 동일한파일이므로 심링크를 걸어주면 됩니다.

     

     

    2) Homebrew 설치 및 최신버전으로 업그레이드

      설치부분은 이미 Homebrew를 설치해 둔 분들은 패스하셔도 됩니다.

      (설치여부는 터미널을 열어서 brew 라고 쳐서 command not found라고 나오지 않고 뭐가 주루룩 나오면 이미 설치되어 있는겁니다)

     

      Homebrew 설치는 터미널을 열고 아래의 명령어를 쳐줍니다:

     

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

     

    설치가 완료되었거나, 이미 설치하신 분들은 아래의 명령어를 입력하여 brew 와 관련패키지들을 최신버전으로 업그레이드 해줍니다.

     

    $ brew update

    $ brew upgrade

     

    3) 파이썬 3.7 설치

     

    엄청 간단합니다.

     

    $ brew install python3

     

    4) git 설치

     

    이것도 완전 간단

     

    $ brew install git

     

    5) bazel 설치

     

    $ brew install bazel

     

    6) virtualenv 설치

     

    python3.6 용 virtualenv 설치

    $ pip3 install virtualenv

     

    python2.7용 virtualenv 설치

    $pip install virtualenv

     

    텐서플로우를 돌릴 파이썬 버전에 따라 virtualenv를 설치하세요 (둘다 설치하셔도 괜찮습니다)

     

     

    여기까지 잘 따라하셨다면, 텐서플로우를 설치하고 사용하기 위한 기본적인 환경을 다 잡으신 겁니다! 

     

    다음 회에서는 실제 텐서플로우를 사용하기 위한 가상환경을 생성하고, 가상환경 내에서 tensorflow를 설치해 보도록 하겠습니다!

댓글 3 ...

  • 흐어ㅓㅓㅓㅓ

    2017.05.05 01:27

    감사합니다 ㅠㅠ
  • ㅎㅎ

    2017.07.06 00:36

    안녕하세요! 글 감사히 읽어보았습니다. 저도 안드로이드로 이미지 분석앱을 만들어보고자 조사중인데, 질문 좀 드려도될까요? 텐서플로우에서 제공하는 언어 api가 다양하게 있던데, 여기서는 파이썬 사용하신거죠..? 혹시 왜 파이썬으로하신건지 여쭤봐도될까요!?
  • 공돌이

    2017.07.06 10:07

    안녕하세요 반갑습니다 ㅎㅎ님! 제가 설명하면서 극소수를 제외하면 특별히 파이썬을 사용하지는 않았는데...^^ . 저도 자세히는 모르지만 조금 설명을 드리자면, 텐서플로우는 최초에 파이썬을 기반으로 만들어졌습니다. 파이썬이 통계함수나 행렬을 이용한 연산 등에 굉장히 최적화 되어있다보니 그런게 아닐까 싶은데요, 이후에 C/C++ 등을 이용해서 Tensorflow Core가 만들어졌고, 이를 이용해서 core API가 만들어진 후 , 이 C API를 기반으로 Java, Go 등으로 이 API를 사용할 수 있도록 확장되어 가는 중입니다. C/C++로 코어를 만든 이유는 아마도 성능과 플랫폼확장성 때문이 아닐까 싶습니다. 하지만 아직도 파이썬이 가장 많은 기능이 사용가능하도록 개발되어져 있고, 그다음에 필요성에 따라 C++ 로 코어에 편입되는 형태인것으로 알고 있습니다. (참고로, 파이썬에는 수학통계라이브러리, 그래프라이브러리 등을 아주 간편하게 사용할 수 있도록 되어있습니다...실제 대부분의 예제들도 파이썬으로 작성되어져 있습니다)

    언어는 자신의 취향이나 숙련도, 사용하는 환경에 따라 선택하시면 되는데요, 플랫폼에 따라 아직 구현되어있지 않은 Op들이 있어서, 일부 포기해야 하는 기능들도 있음을 참고하시면 될 것 같습니다.

    지원 언어의 확장과 관련해서 좀 더 자세한 내용은 이 페이지를 참고하시면 될 것 같습니다. 

    https://www.tensorflow.org/extend/language_bindings

    저도 이쪽 계통에 전문가는 아니라서 설명드리는 것에 한계가 있겠지만, 더 궁금한 부분 글 남겨주시면 아는 한도 내에서는 최대한 답변 남길게요...^^

https://meisteruser.net/devflow/2209
번호
제목
닉네임
12 프레임워크/기타 공돌이 265 2018.09.29
11 프레임워크/기타 공돌이 132 2018.09.20
10 머신러닝/딥러닝 공돌이 2580 2017.07.05
9 머신러닝/딥러닝 공돌이 2795 2017.06.05
8 머신러닝/딥러닝 공돌이 8782 2017.05.26
7 머신러닝/딥러닝 공돌이 2979 2017.05.02
6 머신러닝/딥러닝 공돌이 9397 2017.04.27
5 머신러닝/딥러닝 공돌이 4204 2017.04.24
머신러닝/딥러닝 공돌이 3529 2017.04.23
3 머신러닝/딥러닝 공돌이 7014 2017.04.19
2 머신러닝/딥러닝 공돌이 27803 2017.03.22
1 공지 공돌이 768 2017.03.21
태그
위로