conda tensorflow 설치 및 jupyter notebook 연결

개발/삽질 기록 2018. 8. 3. 23:20 Posted by 아는 개발자


Conda 환경에서 tensorflow를 설치하는 방법


0. Prerequsite


- Anaconda를 설치한다.

- GPU를 사용할 경우 tensorflow를 사용할 수 있도록 CUDA, cuDNN 라이브러리를 설치한다.


1. tensorflow 가상 환경 생성


tensorflow를 사용하는 가상 환경을 하나 생성한다. 별도로 설정하고 싶은 환경이 있으면 생략하고 아니면 만들자.

kwony@kwony:~$ conda create -n tensorflow pip \ 
python={ python 버전 입력 ex) 2.7, 3.4

2. 가상환경 활성화


1에서 만들어둔 가상 환경을 활성화한다. activate 명령어가 안먹히는 경우는 anaconda의 바이너리가 export가 제대로 안된것이니 확인해보도록 하자.

kwony@kwony:~$ conda activate tensorflow
(tensorflow)$  # tensorflow로 명령어 프롬프트가 변형된다

3. tensorflow 설치


활성화된 명령어 프롬프트에서 tensorflow를 설치한다. tensorflow 공식 홈페이지에서 설치하려는 tensorflow의 종류와 파이선 버전에 해당하는 저장소를 입력하도록 하자.

(tensorflow) kwony@kwony:~$ pip install --ignore-installed \
 --upgrade { URL }

4. jupyter 설치


원래 아나콘다를 설치할 때 기본으로 포함된 jupyter-notebook에서 tensorflow를 쓰려고 하면 없는 모듈이라고 나온다. 방금전에 설치한 tensorflow는 현재 사용중인 가상 환경에만 적용되기 때문이다. 현재 가상 환경에서 사용하는 jupyter notebook을 설치하면 방금 전에 설치한 tensorflow를 사용 할 수 있다.

(tensorflow) kwony@kwony:~$ pip install jupyter

5. jupyter notebook 실행 후 테스트


jupyter 노트북으로 tensorflow 모듈을 사용해보면 문제없이 동작하는 것을 확인 할 수 있다.

(tensorflow) kwony@kwony:~$ jupyter-notebook 



728x90

git rebase 를 이용해 중간 커밋 수정하기

개발/삽질 기록 2018. 7. 25. 21:54 Posted by 아는 개발자

최상위 커밋은 git commit --amend로 수정이 가능한데 중간에 있는 커밋은 수정하기가 참 난감하다. 가장 간단하면서 무식한 방법은 git format-patch로 수정하려는 커밋 전까지 패치 파일을 만들어둔 후 reset으로 수정하려는 커밋까지 쌓인 커밋들을 모두 지운 뒤 git commit --amend로 수정한 다음, reset 하기 전에 패치로 만들어둔 커밋을 다시 적용하는 방법이 있다. 이 방법은 매우 번거롭고 복잡하며 이미 Pull Request가 진행중인 브랜치에서는 적용할 수 없다는 문제가 있다.


이런 경우에는 git rebase의 interactive 옵션을 이용하면 Pull Request가 진행중인 브랜치의 중간 커밋을 수정 할 수 있다. 사용 방법은 간단하다.



위 그림에서 맨 아래 "appear action bar and use customized one in user activity"라는 커밋만 수정해보고 싶다고 해보자. 그러면 내가 수정하려는 커밋의 번호를 복사한 후 command에 아래와 같이 입력하자


// git rebase -i {커밋 id}^
git rebase -i 1372d858b7d84708f54da356035cec35a4375f07^


실행하고 나면 nano 에디터가 열리면서 아래와 같은 메시지가 나온다.


pick 1372d85 appear actionbar and use customized one in user activity
pick 0ba4172 cut side space in actionbar
pick 64d006d Fix bug: Change error message on dialog user name input
pick 5be8b91 Replace textview to imageview in sliding tab layout
pick c6d7a5e Add postfix string in actionbar title to show detailed information
pick 624baa3 upgrade version to 1.20

# Rebase 382448a..624baa3 onto 382448a (6 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit


메시지에는 수정하려는 커밋부터 최신 커밋까지 "명령" "커밋 번호" "커밋 메시지"의 형태로 쭉 나열 돼어 있다. 현재 상태는 어떤 커밋에 무슨 작업을 할 것인지 설정 할 수 있는 단계다. 아래 Commands의 설명이 나와 있는 것 처럼 'pick'은 commit을 그대로 사용하는 것이고 'edit'은 커밋을 사용하면서 수정하기 위해 멈춘다는 뜻이다. 기본으로는 모두 변경하지 않음인 'pick' 설정이 돼있다.


개발자는 "명령"에 해당하는 문자열 값을 바꿔서 해당 커밋에서 원하는 작업을 수행 할 수 있다.  우리는 가장 처음에 있는 커밋(1372d85)을 수정해야하니 이 문장에 pick을 edit으로 변경하고 빠져나오자. 그럼 아래와 같은 메시지가 뜬다.



해당 커밋에 멈춰 있으니 git commit --amend로 수정을 한 다음에 git rebase --continue를 하라는 뜻이다. git rebase --continue는 현재 커밋에 대한 작업을 수행한 후 다음 커밋의 작업으로 넘어가는 명령어다. 테스트를 위해 README.md 파일만 수정하고 넘어가본다. 그러면 숫자들이 빠르게 움직이고 나서 아래와 같은 메시지가 나온다.



반영이 모두 완료돼었다는 뜻이다. 그런데 이런 완료 메시지가 나오지 않고 충돌이 떴다는 메시지가 나오는 경우도 있다. 중간 커밋의 수정사항 때문에 기존 커밋을 적용하지 못해 충돌이 발생하는 경우다. 이런 경우에는 중간 커밋의 수정사항을 따를 수 있도록 기존 커밋도 바꿔주도록 한다.

728x90

리눅스 디스크, 폴더 용량 확인하기

개발/삽질 기록 2018. 5. 26. 14:29 Posted by 아는 개발자

매번 구글창에 디스크/파일 용량을 확인하는 단축키를 찾기 번거로워서 이번 포스트로 정리하고 머릿속에 기억해두려고 한다.


1. 디스크 용량 확인, df


시스템상에서 FILE이 있는 곳의 파일시스템에 대한 정보를 보여준다. 즉 시스템에 마운트되어 있는 모든 것들에 대한 사용 정보를 출력한다는 뜻.

그냥 df를 검색하면 아래처럼 나온다. 여기서 1K-blocks는 파일시스템의 전체 용량, Used는 사용중인 크기, Available은 사용가능한 메모리의 크기를 의미한다.



그런데 위 그림은 바이트 단위라서 보기가 어렵다. -h 옵션을 넣어서 human readable하게 변환하자. 훨씬 직관적으로 보인다.



df --help 로 검색하면 다양한 옵션을 발견할 수 있으니 이것도 적극적으로 활용하자. 디스크 용량 검색하는 것은 이걸로 끝. 다른 것들도 있는데 하나만 정확하게 기억하는게 중요할 것 같다.


2. 파일, 폴더내 총용량 확인, du


파일 크기같은 경우 ls를 통해서 용량 정보도 나오고 여기에 -h 옵션만 넣으면 사람이 읽을 수 있는 용량 크기로 나온다. 그런데 폴더내 총용량을 확인할 때는 폴더 디렉토리 자체의 크기만 볼 수 있어서 사용할 수가 없다. 이럴때는 du라는 명령어를 사용하면 편하다. 


du 명령어를 이용해 Pictures 폴더를 검색해봤다.



앞의 416 은 Pictures 폴더내에 있는 파일들의 총 용량 크기다. 단위가 없어서 읽기 불편하니 -h 옵션을 붙여 human readable하게 변형하자. 

이것도 df처럼 용량이 커지면 M, G 단위로 변환해준다.



폴더 내의 파일들이 궁금하면 -a 옵션을 붙이면 된다. 반대로 출력하고 싶지 않다면 -s 옵션을 붙여서 제거한다.


    


728x90

Ubuntu 16.04에서 GPU 가속화를 지원하는 Tensorflow를 설치하는 방법

이 포스트는 Tensorflow 공식 가이드 페이지를 읽고 글쓴이의 컴퓨터에 설치한 과정을 정리한 것이다. PC 환경에 따라 차이가 있을 수 있으므로 포스트를 읽고 설치하기 전에 개인 PC환경이 글쓴이와 어떤점이 차이가 나는지 먼저 확인해두길 바란다. 똑같은 instruction을 사용해도 어떤 PC는 되고 어떤 거는 안되는 경우가 많다. 글쓴이의 PC 환경은 다음과 같다.

CPU: Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz, Quad Core

GPU: GEFORCE GTX1060 (그래픽 드라이버 설치 완료)

RAM: 8GB

Kernel: 4.4.0-122-generic


* 혹시 우분투 커널 버전을 업데이트 했다면 중요한 자료들을 미리 백업해두길 바란다. 글쓴이는 처음에 4.9로 업데이트한 커널로 설치해봤는데 재부팅하니 갑자기 컴퓨터가 안켜지는 문제가 있었다. 아무리 찾아도 해결책을 찾을 수 없어 별 수 없이 커널을 밀고 재설치를 했었다.


1. CUDA Toolkit 다운로드 및 설치

Nvidia 홈페이지에서 tensorflow를 지원하는 cuda 설치 패키지를 다운 받는다. 현재 tensorflow는 cuda 9.0만 지원하고 있으니 이에 유의하도록 하자. 만약 현재 사용중인 NVIDIA driver가 cuda 9.0가 호환하지 않으면 삭제하고 재설치해야 하는 경우도 있다. 이런 경우에는 runfile을 받으면 호환되는 그래픽 카드 드라이버도 같이 받을 수 있다.

* CUDA는 GPGPU에서 사용하는 병렬 처리 알고리즘 기술을 C언어를 비롯한 여러가지 언어에서 사용할 수 있도록 지원하는 기술이다. GPGPU를 사용하기 위한 인터페이스로 볼 수 있다.




2. cuDNN 설치

이것 또한 Nvidia 홈페이지에서 자신의 PC 환경에 맞는 CUDA를 설치해야한다. 그런데 CUDA와 달리 cuDNN 부터는 따로 계정을 생성해야 한다. 가입하고 난 뒤에는 cuDNN 7.0.5 버전을 받도록 한다.

* cuDNN은 CUDA를 딥러닝에 사용할 수 있도록 만든 API다.


설치 가능한 목록에서 자신의 환경을 꼼꼼히 확인하고 다운 받아야 한다. Ubuntu 16.04에서는 Runtime Library와 Developer Library가 있는데 나는 Runtime을 선택해서 설치했다.


3. 그래픽 드라이버 설치

본인이 갖고 있는 그래픽 카드에 맞는 그래픽 드라이버를 설치한다. NVIDIA 홈페이지에서 그래픽 카드 드라이버를 받을 수 있다. 미리 설치 했으면 할 필요 없다. 설치 방법이 apt-get 처럼 단순하지 않다. 설치 방법은 추후 별도의 포스트로 올리겠다.


4. Tensorflow 설치 

Tensorflow 홈페이지에서는 총 네가지 방법(Virutalenv, native, Docker, anaconda)을 지원하는데 이중에서 가상 환경을 만들어서 사용하는 방법(Virtualenv)을 권장하고 있다. Virtualenv는 특정 폴더에 python 환경을 독립적으로 꾸릴 수 있는 환경을 제공하는데 이곳에 tensorflow를 설치하면 다른 파이선 프로그램의 디펜던시가 걸릴 우려가 없어 관리하기가 편하다. 글쓴이는 virtualenv를 이용해서 설치했다.

  1. 먼저 python 패키지 관리 시스템과 virtual env를 apt-get으로 설치한다.

    $ sudo apt-get install python-pip python-dev python-virtualenv # for Python 2.7
    $ sudo apt-get install python3-pip python3-dev python-virtualenv # for Python 3.n

    파이썬 2.7과 3.n 버전이 엄격히 구분되니, 앞으로 사용할 파이선 버전에 따라서 명령어를 잘 선택한다.

  2. python 환경을 독립적으로 꾸릴 폴더에 가상 환경을 설정한다.

    $ virtualenv --system-site-packages targetDirectory # for Python 2.7
    $ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n
  3. 다음 명령어중 하나로 Virtualenv 환경을 활성화 한다.
    세가지 명령어를 다 시도하면 virtualenv 환경에서 튕기니까 주의한다.

    $ source ~/{targetDirectory}/bin/activate # bash, sh, ksh, or zsh $ source ~/{targetDirectory}/bin/activate.csh # csh or tcsh $ . ~/{targetDirectory}/bin/activate.fish # fish

  4. 정상적으로 됐으면 아래와 같이 활성화된 창이 뜬다.

    (targetDirectory)$

  5. Virtualenv 환경 내에서 pip가 설치 됐는지 확인해본다.

    (targetDirectory)$ easy_install -U pip
  6. pip 버전에 따라서 tensorflow를 설치한다

    (targetDirectory)$ pip install --upgrade tensorflow-gpu  # for Python 2.7 and GPU
    (targetDirectory)$ pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU
    

5. 설치 완료 메시지 확인

아래와같은 메시지가 나오면 정상적으로 tensorflow가 설치된 것이다


728x90
  1. CB 2018.08.01 22:49  댓글주소  수정/삭제  댓글쓰기

    안녕하세요,
    runtime library 와 developer library 간의 차이를 알 수 있을까요?
    검색 해본다고 해봤는데 잘 모르겠습니다.

    • 아는 개발자 2018.08.01 23:09 신고  댓글주소  수정/삭제

      Runtime Library: cnDNN을 돌릴 때 필요한 기본적인 API를 설치합니다. Window에서 일반 프로그램 설치 옵션중 하나인 '기본 설치'와 비슷하다고 보시면 됩니다. 이것만 설치해도 Tensorflow를 실행하는데 전혀 지장 없습니다.

      Developer Library: 헤더파일과 일부 코드만 제공하고 나머지는 개발자가 직접 빌드해야 합니다. Tensorflow에서 cuDNN을 사용하는 코드를 변경해서 돌려보고 싶은 경우에 사용하는 라이브러리입니다.

      요약: tensorflow를 API만 사용하는 경우에는 Runtime Library를, 직접 코드를 수정하는 경우에는 Developer Library를 사용하시면 됩니다.

      출처: https://stackoverflow.com/questions/48784645/which-nvidia-cudnn-release-type-for-tensorflow-on-ubuntu-16-04

Ubuntu 안드로이드 스튜디오 설치하기

개발/삽질 기록 2018. 5. 1. 09:55 Posted by 아는 개발자

Ubuntu 16.04에서 안드로이드 스튜디오 설치하기


Ubuntu에서 안드로이드 스튜디오를 설치하는 방법은 두가지가 있다.

  • 공식 홈페이지에서 .zip 파일로 받아온 후 압축을 풀어서 바이너리를 링크거는 방법. 안드로이드 스튜디오를 개발자가 유연성있게 관리 할 수 있다는 장점이 있지만 환경변수를 일일이 설정하고 추적하는게 번거롭다.
  • ppa 저장소를 추가하고 apt-get으로 받기. vim, terminator 같은 프로그램을 받을 때처럼 원격 저장소에서 모두 받을 수 있는 방법이다. 유연성있게 관리할 수는 없지만 설치 방법이 간단하다.

이 포스트는 두번째 방법에 대해서만 다룬다.


1. 저장소 추가 및 apt-get을 이용한 안드로이드 스튜디오 설치

터미널을 열고 아래의 명령어를 입력한다


sudo apt-add-repository ppa:paolorotolo/android-studio

sudo apt-get update

sudo apt-get install android-studio


2. 재부팅후 Android Studio 설치 확인

시작창을 열고 Android Studio를 검색해보면 아이콘이 나오면 설치가 정상적으로 이뤄진 것이다.


728x90

우분투 16.04 한글 입력하기

개발/삽질 기록 2018. 5. 1. 09:37 Posted by 아는 개발자


Ubuntu 16.04 에서 한글 입력기를 설치하는 방법


1. 터미널 창에서 ibus 입력기 및 한글 입력기 설치

ibus 입력기용 한글을 시스템에 추가하는 작업. 터미널을 열고 아래 설치 명령어 입력


sudo add-apt-repository ppa:createsc/3beol

sudo apt-get update

sudo apt-get install ibus ibus-hangul


2. Language Support에 한글 추가

한글을 추가하고 한글 입력이 가능한 입력 방식을 변경하는 작업

  1. 시작 -> keyboard -> Language Support
  2. Keyboard input method system 에서 IBus 모드로 변경하기
  3. Language에 한글이 없다면 Install / Remove Languages로 변경



3. Keyboard에 단축키 설정 변경

한글 키로 이동 할 수 있는 단축키 설정하는 작업. 기존 설정을 모두 지우고 한글 단축키를 설정 할 수 있는 환경을 만든다.

  1. 시작 keyboard -> shortcuts -> typing 진입
  2. 모두 disabled mode로 변경한 후, switch to next source 만 선호하는 short key를 입력



4. 시스템상 한글 입력기 등록 및 단축키 설정

시스템 입력기에 한글을 등록하고 단축키를 설정한다

  1. 시작 -> Text Entry 진입
  2. 좌측 하단 '+' 버튼을 눌러 input source에 Korean(Hangul) (IBus) 추가
    * 설치를 했는데도 Korean (Hangul) (IBus)가 목록에 없는 경우가 있는데 이때는 시스템을 재부팅하면 된다.
  3. Switch to next source using 속성에 사용할 단축키를 입력

5. 한글 사용하기

이 포스트는 IBus 한글 입력기를 이용해서 English와 한글을 번갈아 사용하며 Write 했다. 아주 아주 Comfortable 하다.



728x90

nodejs heroku deploy하는 방법

개발/삽질 기록 2015. 6. 13. 17:41 Posted by 아는 개발자

맨 처음에 push할 때


1. deploy하고 싶은 곳의 위치로 이동


2. git 저장서 생성

git init . 


3. heroku login 해서 아이디 비번 입력


4. 자신의 아이디로 저장소 생성 나의 git 저장소가 heroku와 연결된다


heroku create


4. commit 한다


git add .

git commit -m "first push"


5. push한다


git push heroku master

728x90