theano와 caffe 실습

22
Theano & Caffe 실습 김정주

Upload: -

Post on 07-Aug-2015

290 views

Category:

Data & Analytics


5 download

TRANSCRIPT

Page 1: Theano와 Caffe 실습

Theano & Caffe 실습김정주

Page 2: Theano와 Caffe 실습

들어가며...

• 본격적인 사용법 익히기는 각 라이브러리의 Tutorial에서 진행될 것이기에,

• 여기에서는 알아두면 좋은 기타등등을 설명하도록 하겠습니다.

• 윈도우에서 설치는 다루지 않습니다. 죄송합니다.

Page 3: Theano와 Caffe 실습

GPU의 발전

• 최초의 그래픽 칩은 정해진 방식의 그리기만 가능했으나,

• 점점 다양한 그리기 옵션 지정이 가능해짐.

• 이후 아주 기본적인 연산과 참조 기능이 들어감

• 리얼타임 그래픽스을 위한 쉐이더(Shader) 언어의 시작.

• GPU(Graphics Processing Unit)으로 불리기 시작

• 게임과 실시간 그래픽 어플리케이션의 증가로 인해 급격한 성장

Page 4: Theano와 Caffe 실습

쉐이더 언어

Page 5: Theano와 Caffe 실습

GPU의 특성

• 리얼타임 그래픽스는 적당히 좋게, 그러나 빠르게가 중요

• 극히 많은 코어수로 높은 동시성 구현 가능

• 그러나 구조가 단순하고, GPU 메모리 크기 제약으로 복잡한 코드는 불가

• 조건문을 사용하면 매우 느려짐

• GPU <-> CPU 데이터 교환이 느리다

Page 6: Theano와 Caffe 실습

CUDA와 GPU프로그래밍

• GPU가 점점 고급화 되며 General Computing에 사용 됨

• CUDA는 C수준의 복잡한 코드를 단순한 GPU에서 실행 가능하게 해주는 플랫폼

• 그러나 디버깅이 어렵고, 특성을 제대로 살리지 못하면 CPU보다 느림

Page 7: Theano와 Caffe 실습

Theano와 Caffe는?• 비전문가는 GPU를 활용한 연산/분석 코드 작성이 힘듦

• Theano와 Caffe는 이것을 도와주는 라이브러리

• Theano

• 다차원 배열을 사용한 수학 식을 정의, 최적화, 풀이하는 Python 라이브러리

• Caffe

• 표현력, 속도, 모듈화 지원을 고려한 딥 러닝 프레임워크

Page 8: Theano와 Caffe 실습

GPU 활용은 천천히

• 공부는 CPU Only 모드로 하다가,

• Caffe의 경우 CUDA 설치 필수 - 헤더/라이브러리 사용

• 최적화가 필요하면 GPU를 사용하자.

• CUDA - CUDA SDK와 드라이버가 설치되면 GPU 사용

• cuDNN - 설치되면 더 빠름 (옵션)

Page 9: Theano와 Caffe 실습

cuDNN

• NVIDIA의 Deep Neural Network 라이브러리

• CUDA를 사용하지만 함께 배포되지 않음

• https://developer.nvidia.com/cuDNN 에서 등록 후 인증이 되면 다운로드 가능

• cuDNN이 설치되어 있으면 더 좋은 퍼포먼스 - 필수 아님

Page 10: Theano와 Caffe 실습

BLAS, LAPACK, ATLAS• CPU를 사용하는 라이브러리 들

• BLAS - 선형대수 계산을 위한 low-level 루틴 표준 규약

• LAPACK - 병렬처리 가능한 고급 선형대수 라이브러리 (BLAS 사용)

• ATLAS - 플랫폼 독립적인 BLAS 구현체 (일부 LAPACK 연산 포함)

• OS X에서는 Accelerated framework안에 내장

Page 11: Theano와 Caffe 실습

BLAS, LAPACK, ATLAS 버전 확인

>>> import numpy as np >>> np.__config__.show() lapack_opt_info: extra_link_args = ['-Wl,-framework', '-Wl,Accelerate'] extra_compile_args = ['-msse3', '-DAPPLE_ACCELERATE_SGEMV_PATCH'] define_macros = [('NO_ATLAS_INFO', 3)] openblas_lapack_info: NOT AVAILABLE atlas_3_10_blas_threads_info: NOT AVAILABLE atlas_threads_info: NOT AVAILABLE atlas_3_10_threads_info: NOT AVAILABLE atlas_blas_info: NOT AVAILABLE atlas_3_10_blas_info: NOT AVAILABLE atlas_blas_threads_info: NOT AVAILABLE openblas_info: NOT AVAILABLE blas_mkl_info: NOT AVAILABLE blas_opt_info: extra_link_args = ['-Wl,-framework', '-Wl,Accelerate'] extra_compile_args = ['-msse3', '-DAPPLE_ACCELERATE_SGEMV_PATCH', '-I/System/Library/Frameworks/vecLib.framework/Headers'] define_macros = [('NO_ATLAS_INFO', 3)] atlas_info: NOT AVAILABLE atlas_3_10_info: NOT AVAILABLE lapack_mkl_info: NOT AVAILABLE mkl_info: NOT AVAILABLE

Page 12: Theano와 Caffe 실습

Cuda 설치• 최신 7버전 - https://developer.nvidia.com/cuda-

downloads

• Ubuntu

• wget http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/rpmdeb/cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb

• sudo dpkg -i cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb

• sudo apt-get update && sudo apt-get install cuda

• OS X - .dmg 파일

Page 13: Theano와 Caffe 실습

Theano 설치

• Installing Theano - http://deeplearning.net/software/theano/install.html#install

• Ubuntu에서는 OpenBLAS 먼저 설치 필요

• sudo apt-get install libopenblas-dev

• pip install Theano

Page 14: Theano와 Caffe 실습

Ubuntu에 Caffe 설치• http://yujuwon.tistory.com/entry/DeepLearning-우분투-1404에-

Caffe-설치-하기 - 유주원님 - 참고

• 이슈

• Cuda는 7으로 설치할 것

• 파이썬 모듈 경로 지정

• export PYTHONPATH=caffe설치폴더/python:$PYTHONPATH

• 파이썬 테스트를 위해 수정할 것 들

• https://gist.github.com/haje01/d268b745acd532849722

Page 15: Theano와 Caffe 실습

OS X에 Caffe 설치• http://installing-caffe-the-right-way.wikidot.com/start 참고

• Segmentation fault: 11

• CUDA7 이전 버전 사용

• Makefile.config의 파이썬 경로 확인

• 특히! PYTHON_LIB 확인 - 빌드에 사용된 lib과 실행 lib이 다른 경우

• PYTHON_LIB := /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/

Page 16: Theano와 Caffe 실습

OS X에 Caffe 설치 -2• PyThreadState_Get: no current thread

• 파이썬 인터프리터와 모듈이 서로 다른 파이썬 라이브러리를 사용. Boost 재설치

• brew uninstall boost-python

• brew install --build-from-source --fresh -vd boost-python

• Library not loaded … libopencv_core.2.4.dylib

• OpenCV 재설치

• brew install -fs opencv

Page 17: Theano와 Caffe 실습

아몰랑.. Docker로• 도커 설치

• 우분투 - http://blog.nacyot.com/articles/2014-01-27-easy-deploy-with-docker/

• OS X / Windows - Boot2Docker 사용 https://github.com/boot2docker/boot2docker

• 이미지 빌드

• docker build https://gist.githubusercontent.com/haje01/7edb8b25f4c9a3b9c9d7/raw/7e9cbcbe88814cd9df5d263fd41e90cfebb853ed/Dockerfile

Page 18: Theano와 Caffe 실습

AWS GPU 인스턴스 사용• http://tleyden.github.io/blog/2014/10/25/running-caffe-on-aws-gpu-

instance-via-docker/ 참고

• CUDA지원의 GPU가 설치된 로컬 머신 대신, AWS GPU 인스턴스 사용

• 필요할 때 필요한 만큼 사용

• 확장에 용이

• 비싸지만( 일주일 13만원 정도(g2.2xlarge, 버지니아 기준) ), 필요할 때만 켜서 사용하면 괜찮을 듯..

Page 19: Theano와 Caffe 실습

Theano와 Caffe 비교• What about Caffe? - http://fastml.com/torch-vs-theano/

• “Caffe has a pretty different target. More mass market, for people who want to use deep learning for applications. Torch and Theano are more tailored towards people who want to use it for research on DL itself.”

• Best framework for Deep Neural Nets? - https://www.reddit.com/comments/2c9x0s

• “Theano is awesome. If you want a framework that's 'open-ended in terms of network architecture and transfer functions', Theano is what you're looking for. … It's definitely a different way of thinking, because you have to specify your model symbolically (i.e. write down the equations like you would in a paper, essentially). But once you are in that mindset it's pretty easy to write Theano code. The effort you invest in learning this really pays off.”

Page 20: Theano와 Caffe 실습

Protocol Buffers• Google이 만든 메시지 제네레이터

• https://github.com/google/protobuf

• 스키마를 통해 메시지의 형식을 정의하면 그 메시지 타입에 대한 읽기/쓰기 코드가 자동생성

• C/C++, Java, Python, Objective-C 등 다양한 언어를 제공

• Caffe의 모든 메시지는 protobuf 형식으로 정의

• https://github.com/BVLC/caffe/blob/85bb397acfd383a676c125c75d877642d6b39ff6/src/caffe/proto/caffe.proto

Page 21: Theano와 Caffe 실습

pycaffe 문서가 별로 없다..

• 코드를 읽자! 가장 중요한 두 파일:

• caffe/python/caffe/_caffe.cpp:

• Blob, Layer, Net, Solver 클래스 익스포트

• caffe/python/caffe/pycaffe.py

• Net 클래스에 추가 메소드

Page 22: Theano와 Caffe 실습

참고 링크• http://developer.download.nvidia.com/compute/cuda/7_0/Prod/doc/

CUDA_Getting_Started_Linux.pdf

• http://installing-caffe-the-right-way.wikidot.com/start

• https://haduonght.wordpress.com/2015/02/21/install-caffe-on-mac-os-x-10-10/

• https://github.com/Homebrew/homebrew-science/issues/2209

• http://blog.nacyot.com/articles/2014-01-27-easy-deploy-with-docker/

• https://github.com/tleyden/docker/tree/master/caffe

• http://vision.stanford.edu/teaching/cs231n/slides/caffe_tutorial.pdf

• http://fastml.com/torch-vs-theano/

• https://www.reddit.com/comments/2c9x0s