정리가 잘되어있는것 같아서 퍼왔다.

원본 링크 : https://deeplearning4j.org/kr/compare-dl4j-torch7-pylearn

Lua

Torch & Pytorch

Torch는 Lua언어로 작성된 API를 제공하는 계산 프레임 워크로 머신러닝 알고리즘을 지원합니다. Torch의 어떤 버전들은 페이스 북이나 트위터와 같은 대형 기술 회사에서 자체 버전을 개발하여 사용하고 있습니다. Lua는 다중 패러다임 스크립팅 언어로 1990 년대 초 브라질에서 개발되었습니다.

Torch7은 많은 장점이 있지만 파이썬 기반의 학계나 자바 언어를 사용하는 소프트웨어 엔지니어에게 쉽게 접근할 수 있도록 설계되지는 않았습니다. 반면에 Deeplearning4j는 업계에서의 사용 편의성을 반영하여 자바로 작성되었습니다. 우리는 상용성이 보다 광범위한 딥러닝 구현을 방해하는 요소라고 믿습니다. 우리는 하둡이나 스파크처럼 오픈 소스 분산 런타임을 통해 확장성을 자동화해야 한다고 생각합니다. 또한 상업적 지원이 가능한 오픈 소스 프레임워크야말로 작업 도구(working tools)를 보장하고 커뮤니티를 구축하는 데 가장 적합한 솔루션이라고 생각합니다.

Pytorch로 알려진 Torch용 Python API는 2017 년 1 월 Facebook에서 오픈 소스화되었습니다. PyTorch는 가변 길이 입력 및 출력을 처리 할 수 있는 다이나믹 컴퓨테이션 그래프를 제공하며 특히 RNN을 사용할 때 유용합니다. 다이나믹 컴퓨테이션 그래프를 지원하는 다른 프레임 워크로는 CMU의 DyNet과 PFN ‘s Chainer가 있습니다.

장점과 단점:

  • (+) 결합하기 쉬운 많은 모듈 조각
  • (+) 자신만의 레이어 유형을 작성하고 GPU에서 실행하기 쉬움
  • (+) Lua. ;) (대부분의 라이브러리 코드는 Lua로 되어있음, 읽기 쉬움)
  • (+) 사전 학습된 모델 대거 존재
  • (+) PyTorch
  • (-) Lua
  • (-) 보통 스스로 학습 코드를 작성해야 함 (적은 플러그 앤 플레이)
  • (-) 상업적 지원 없음
  • (-) 미완성 문서

파이썬 프레임워크

Theano와 생태계

많은 딥러닝 분야의 학술 연구자들은 파이썬으로 작성된 딥러닝 프레임 워크의 대부로 불리는 Theano에 의존합니다. Theano는 Numpy와 같은 다차원 배열을 다루는 라이브러리입니다. Theano는 데이터 탐색에 적합하며 다른 라이브러리와 함께 연구용으로 개발되어 사용됩니다.

Keras, Lasagne, Blocks 등 수많은 오픈 소스 딥러닝 라이브러리가 Theano를 기반으로 탄생했습니다. 이 라이브러리들은 Theano의 일부 비직관적인 인터페이스 위에 API를 사용하기 쉽게 레이어를 추가하는 방식입니다. (2016 년 3 월 현재 Pylearn2는 더이상 유효하지 않은 것 같습니다.)

반면에 Deeplearning4j는 JVM언어인 Java 및 Scala로 솔루션을 생성하며 딥러닝을 프로덕션에 최적화 하였습니다. 병렬 GPU나 CPU에서 가능한 한 많은 노브(knobs)를 자동화하고 확장 가능한 방식(Scalable Fashion)으로 필요에 따라 Hadoop 및 Spark와 통합하는 것을 목표로 합니다.

장점과 단점

  • (+) Python + Numpy
  • (+) 컴퓨테이셔널 그래프에 적합한 추상화
  • (+) 컴퓨테이셔널 그래프에 RNN이 잘 맞음.
  • (-) Raw Theano는 수준이 낮은 편임.
  • (+) 고급 래퍼 (Keras, Lasagne) 의 어려운 부분을 완화
  • (-) 오류 메시지는 도움이 되지 않는 경우가 있음.
  • (-) 대형 모델은 컴파일 시간이 오래 걸릴 수 있음.
  • (-) 토치보다 훨씬 “복잡함”
  • (-) 사전 학습 된 모델에 대한 패치 지원
  • (-) AWS에서 잦은 버그가 발생
  • (-) 단일 GPU

TensorFlow

  • Google은 Theano를 대체하고자 TensorFlow를 만들었습니다. 사실 두 라이브러리는 아주 비슷합니다. Ian Goodfellow와 같은 Theano의 창시자 중 일부는 OpenAI로 떠나기 전에 Google에서 Tensorflow를 만들었습니다.
  • 현재 TensorFlow 는 소위 “인라인” 행렬 연산을 지원하지 않지만 실행을 위해서는 행렬을 복사해야 합니다. 매우 큰 행렬을 복사하는 것은 모든 면에서 비용이 많이 듭니다. Tensorflow는 최신 딥러닝 도구에 비해 네 배나 시간이 더 걸립니다. 구글은 이 문제에 대해 연구하고 있다고 이야기 합니다.
  • 대부분의 딥러닝 프레임 워크와 마찬가지로 TensorFlow는 C / C ++ 엔진에 Python API로 작성되어 빠른 실행이 가능합니다. Java 및 Scala 커뮤니티를 위한 것은 아닙니다.
  • TensorFlow 는 CNTK와 같은 다른 프레임워크 보다 속도면에서 많이 느립니다.
  • TensorFlow는 딥러닝 이상의 것입니다. TensorFlow에는 실제로 강화학습(Reinforcement Learning) 및 기타 알고리즘을 지원하는 도구가 있습니다.
  • Tensorflow가 인정한 Google의 목표는 연구원들이 짠 코드를 공유하고 소프트웨어 엔지니어가 딥러닝에 접근하는 방법을 표준화하며 TensorFlow가 최적화 된 Google Cloud 서비스에 대한 추가적인 그리기를 창출하는 것입니다.
  • TensorFlow는 상업적 지원이 되지 않으며 향후에도 Google은 엔터프라이즈를 위한 오픈 소스 소프트웨어 지원사업에 뛰어들 것 같지 않습니다. 현재는 그저 연구원들에게 툴을 제공할 뿐입니다.
  • Theano와 마찬가지로 TensforFlow는 컴퓨테이션 그래프 (예 : z = sigmoid (x)와 같이 x와 z가 행렬인 일련의 행렬 연산)를 생성하고 자동으로 미분합니다. 자동 미분이 중요한 이유는 신경망을 업데이트 시키기 위한 역전파(Backpropagation) 변화량을 매번 수동으로 계산하고 반영할 필요가 없기 때문입니다. Google의 생태계에서 컴퓨테이션 그래프는 구글 브레인 (Google Brain)이중추적인 역할을 하였지만 아직 오픈 소스화 하지는 않았습니다. Google의 사내 딥러닝 솔루션의 절반은 Tensorflow로 구축되어 있습니다.
  • 기업의 관점에서 볼 때, 생각해봐야 할 문제는 이러한 도구를 Google에 전적으로 의존하여 사용해야 하는가의 여부입니다.
  • 주의 사항: Tensorflow의 모든 작업이 Numpy에서 하는 것처럼 작동하는 것은 아닙니다.

장점과 단점

  • (+) Python + Numpy
  • (+) 컴퓨테이션 그래프 앱스트랙션, Theano와 비슷
  • (+) Theano보다 컴파일 시간이 빠름
  • (+) TensorBoard 시각화
  • (+) 데이터 및 모델 병렬 처리
  • (-) 다른 프레임 워크보다 느림.
  • (-) Torch보다 훨씬 “더 복잡”하지만 기능이 많음.
  • (-) 사전 학습된 모델 부족.
  • (-) 컴퓨테이션 그래프는 순수 파이썬으로 속도가 느림.
  • (-) 상업적 지원 없음.
  • (-) 파이썬으로 드롭 아웃되어 각각의 새로운 트레이닝 배치를 로드
  • (-) 툴로 사용하기 어려움.
  • (-) 다이나믹 타이핑은 대형 소프트웨어 프로젝트에서 오류가 발생하기 쉬움.

Caffe

Caffe는 머신 비전 라이브러리로 Matlab이 C 및 C ++에 고속 컨볼루션 신경망을 구현한 것으로서 널리 사용되고 있습니다. (속도와 기술적인 빚(Technical Debt)의 트레이드오프를 알고 싶다면 칩에서 칩으로 C ++ 포팅에 대한 Steve Yegge의 이야기)를 참조할 것). Caffe는 문자, 음성, 또는 시계열 데이터와 같은 다른 딥러닝 응용 프로그램을 위한 것이 아닙니다. 여기 언급된 다른 프레임 워크와 마찬가지로 Caffe는 API로 Python을 선택했습니다.

Deeplearning4j와 Caffe는 모두 최신의 컨볼루션 신경망을 사용하여 이미지를 분류합니다. Caffe와 달리 Deeplearning4j는 임의의 수의 칩에 대해 병렬 GPU를 지원 할뿐만 아니라 여러 GPU 클러스터에서 딥러닝을 보다 원활하게 진행할 수있는 많은 기능을 제공합니다. Caffe는, 논문에서 광범위하게 인용되었지만, 주로 Model Zoo 사이트에서 호스팅되는 사전 학습 모델의 소스로 사용됩니다. Deeplearning4j는 Caffe 모델을 Spark로 가져오기 위한 파서(parser)를 구축하고 있습니다.

장점과 단점

  • (+) 피드 포워드 네트워크 및 이미지 처리에 적합.
  • (+) 기존 네트워크 미세 조정에 적합.
  • (+) 코드 작성 없이 모델 트레이닝 가능.
  • (+) 파이썬 인터페이스가 매우 유용.
  • (-) 새로운 GPU 레이어에 C ++ / CUDA를 작성해야 함.
  • (-) 회귀망에 적합하지 않음
  • (-) 큰 네트워크를 다루기에는 불편함 (GoogLeNet, ResNet)
  • (-) 확장성이 없음
  • (-) 상업적 지원 없음
  • (-) 개발이 느려지고 있으며, 곧 유효하지 않을 수 있음

CNTK

CNTK는 Microsoft의 오픈 소스 딥러닝 프레임 워크입니다. Computational Network Toolkit”의 약자이며, 피드 포워드 DNN, 컨볼루션 넷 및 회귀망이 포함됩니다. CNTK는 C ++ 코드로 Python API를 제공합니다. CNTK는 허용 라이센스가있는 것처럼 보이지만 놀랍게도ASF 2.0, BSD 또는 MIT와 같은 일반적인 라이선스 중 하나를 채택하지는 않았습니다. 이 라이센스는 CNTK가 분산 교육을 쉽게 수행 할 수있는 방법 (1 bit SGD)에 적용되지 않으며, 상업적 용도로 부여되지도 않았습니다.

Chainer

CChainer는 Python API를 제공하는 오픈소스 신경망 프레임워크로, 개발자들 중 코어팀이 Preferred Networks에서 일하고 있습니다. Preferred Networks는 도쿄에 기반을 두고 있는 기계학습 스타트업이며 대부분의 엔지니어들이 도쿄대학 출신입니다.  Chainer는 CMU의 DyNet과 Facebook의 PyTorch가 출현하기 전까지 다이나믹 컴퓨테이션 그래프나 가변 길이의 입력을 지원하는 신경망으로 NLP 작업에 많이 사용되는 최고의 프레임워크였습니다. 벤치마크에 따르면 Chainer는 다른 Python 기반 프레임워크보다 눈에 띄게 빠릅니다 TensorFlow는 MxNet 및 CNTK를 포함하는 테스트 그룹 중 가장 느린 속도를 보입니다.

DSSTNE

Amazon의 Deep Scalable Sparse Tensor Network Engine (DSSTNE)은 머신러닝 및 딥러닝 모델 구축을 위한 라이브러리입니다. Tensorflow와 CNTK 이후 출시 된 많은 오픈 소스 딥러닝 라이브러리 중 가장 최근의 것이라고 볼 수 있습니다. Amazon은 AWS로 MxNet을 지원했기 때문에 미래가 명확하지 않지만, C ++로 작성된 DSSTNE는 속도 면에서 우수하다고 할 수 있습니다. 단, 다른 라이브러리만큼 큰 커뮤니티가 구축된 것은 아닙니다.

DyNet

Dynamic Neural Network ToolkitDyNet은 Carnegie Mellon University에서 나왔으며 cnn이라고 불려 왔습니다. 주목할만한 특징은 NLP에 적합한 가변 길이의 입력을 지원하는 다이나믹 컴퓨테이션 그래프입니다. PyTorch와 Chainer도 같은 것을 제공합니다

  • (+) 다이나믹 컴퓨테이션 그래프
  • (-) 작은 사용자 커뮤니티

Keras

Keras는 Theano와 TensorFlow를 백엔드(back-end)로 사용하는딥러닝 라이브러리로서 Torch에서 영감을 얻어 직관적 API를 제공합니다. 아마도 이것은 현존하는 최고의 파이썬 API 일 것입니다. Deeplearning4j는 Keras를 통해 Theano와 Tensorflow에서 혹은 Keras자체의 모델을 가져옵니다. 창시자는 Google의 소프트웨어 엔지니어인 Francois Chollet입니다.

  • (+) Torch에서 영감을 얻은 직관적 API
  • (+) Theano와 작업 가능, TensorFlow와 Deeplearning4j 백엔드 (CNTK 백엔드 예정)
  • (+) 빠르게 성장하고 있는 프레임워크
  • (+) 신경망의 표준 Python API이 될 가능성이 큼

MxNet

MxNetAmazon Web Services에서 채택한 R, Python 및 Julia와 같은 언어를 API로 사용하는 머신러닝 프레임 워크입니다. 애플의 일부가 2016 년에 Graphlab / Dato / Turi가 인수된 후에도 사용하고 있다는 소문이 돌고 있습니다. MxNet은 빠르고 유연하며 현재 Pedro Domingos와 워싱턴 대학 연구원 팀이 참여하고 있습니다. MxNet과 Deeplearning4j의 장단점 비교는 여기에서 확인할 수 있습니다.

Paddle

PaddleBaidu가 만들고 지원한 딥러닝 프레임 워크로, “PArallel Distributed DeepLEarning”의 약자입니다. Paddle은 출시된 주요 프레임 워크 중 가장 최근의 것이며 다른 프레임 워크와 마찬가지로 Python API를 제공합니다.

BigDL

BigDL은 Apache Spark에 초점을 맞춘 새로운 딥러닝 프레임 워크로서 Intel 칩에서만 작동합니다.

라이센싱

각각의 오픈소스들의 라이센싱 정책은 다음과 같습니다. Theano, Torch 및 Caffe는 특허 및 특허 분쟁을 다루지 않는 BSD 라이센스를 사용합니다. Deeplearning4j 및 ND4J는 Apache 2.0 라이센스 하에 배포되며 특허권 부여 및 피소송 조항을 모두 포함합니다. 즉, 누구나 자유롭게 Apache 2.0 라이센스 코드를 기반으로 한 파생물을 만들 수 있지만 원래 코드 (이 경우 DL4J)와 관련하여 다른 사람이 특허 청구를 제기하면 즉시 모든 특허 청구를 잃게됩니다. (즉, 소송에서 자신을 지키기 위한 자원은 제공되지만 다른 사람들을 공격하는 데에는 사용될 수 없습니다.) BSD는 일반적으로이 문제는 다루지 않습니다.

2017/11/04 - [Windows] - (Windows) 윈도우 에서 Ubuntu (우분투) 실행하기

위 글에서 우분투를 설치해 보았고 이제 텐서플로우를 설치해보자.

 

아래 명령어를 실행한다.

sudo apt-get install python3-pip python3-dev python-virtualenv

혹 위 명령어 실행이 에러가 발생된다면

sudo apt-get update

명령어를 실행한 후 실행하면 될것이다.

 

아래 명령어를 실행하여 가상 tensorflow 환경을 설정한다.

마지막에 tensor 은 변경해도 된다. (임의로 지정한것이다.) => TargetDirectory 를 나타냄 - https://www.tensorflow.org/install/install_linux#InstallingVirtualenv)

virtualenv --system-site-packages -p python3 tensor


이제 가상환경의 tensorflow 으로 진입해보자.

source ~/tensor/bin/activate


진입하게되면 아래처럼 맨 앞에 (tensor) 가 보이게 된다.

(위에서 지정한 이름이 괄호안에 들어가서 보이게된다.)

이제 최신환경으로 업그레이드 해주자

(tensor) junijuniya@kjunMainPC:~$ pip3 install --upgrade tensorflow


이상 우분투에 텐서플로우 환경을 구성하는 방법이다.


참고

http://jinman190.blogspot.kr/2017/10/openai-gym.html


아래는 설치 로그

더보기

네이버클라우드플랫폼을 이전에 무료 기간때 사용하고

유료전환 후 무료크래딧으로 사용중.. 아니 방치 중이었습니다.

구글 클라우드 플랫폼을 사용중이라 무료 크래딧을 썩히고 있던차

TensorFlow 가 설치된  CentOS 설치가 가능하다고 하여 설치해 보았습니다.

 

https://console.ncloud.com/dashboard 

위 링크로 로 접근하면 아래와 같은 화면이 나옵니다. (가입 및 로그인은 필수)

여기서 우측의 Server 를 클릭하면 아래와 같이 서버 관리 화면이 나타납니다.

(현재 전 이미 Tensorflow-centos  서버가 추가된 상태입니다.)

위 그림에서 + 서버 생성 을 클릭하면 아래와 같이 생성가능한 서버 목록 들이 나열되고

여기서 tensorflow-centos-7.3-64 를 선택합니다.

선택하면 아래와 같은 팝업이 나타납니다.

Jupyter notebook 을 바로 쓸수있는게 최대 장점 같습니다.

또한 여러 라이브러리들도 자동으로 설치가 됩니다.

(일단 저희가 할건 비번을 바꾸는게 제일 중요한 일인것 같네요)

위 내용 전문입니다.

서버에 TensorFlow 등 머신 러닝 관련 패키지가 설치되어 제공됩니다.

TensorFlow 서버 설치 가이드에 따라 아래 2~4번을 반드시 수행해 주십시오(가이드 바로가기)

선택하신 상품은 tensorflow, jupyter, python 등의 머신 러닝 패키지 설치만 지원되며,
그 이외에 별도의 기능 제공 및 분석 관련 기술 지원은 하지 않습니다.

jupyter notebook 사용을 위해서는 서버 생성 후에 추가로 공인IP를 신청하고 서버에 할당해야 하며,
서버 생성시 선택한 ACG에 8888 포트를 추가해야 합니다.

초기 설정된 PASSWORD는 다음에 입력할 서버 이름과 동일하며, 보안 침해 방지를 위해 반드시 변경해 주시기 바랍니다.

모든 작업이 완료되면 웹 브라우저로 공인IP:8888로 jupyter notebook 접속이 가능합니다.

주요 설치 라이브러리 목록:
tensorflow
jupyter
Keras
python
Gensim
numpy
Pytorch
scikit-learn
Theano
scipy
seaborn
sympy

혹시 몰라 가이드 가기 를 클릭하니 상세히 설명이 나와있습니다.

http://docs.ncloud.com/ko/tensorflow/tensorflow-1-1.html

이제 본론으로 와서 목록 선택을 완료하고 다음을 클릭합니다.

아래그림과 같이 서버타입등을 설정할 수 있습니다.

그 이후론 인증키 설정과 방화벽 설정이 있는데 전 이미 있던걸 사용해서 따로 캡쳐하지 않았습니다.

인증키 설정과 방화벽 설정은 어렵지 않습니다.^^;

(참고로 ACG 관련해서는 http://kjcoder.tistory.com/263 포스팅을 참고해 주세요.)

모든 설정이 끝나면 아래 처럼 서버 추가가 완료되고 조금 기다려야합니다.

전 한 10분 정도 기다리니 서버추가가 완료되어 동작중으로 바뀌더군요..

앞서 방화벽 설정에서 이미 하신분들도 있겠지만 Juyter Notebook 를 사용하려면 8888 port 를 열어줘야합니다.

전 기존에 사용하던걸 그대로 사용해서 따로 8888 포트를 추가해 주었습니다.

아래 그림과 같이 ACG 메뉴로 접근하여 규칙을 선택하고 ACG 설정 버튼을 누릅니다.

(목록이 없는 분들은 ACG  생성해 주세요 => http://kjcoder.tistory.com/263 참고 )

아래 그림과 같이 나오고 프로토콜 TCP , 접근소스 0.0.0.0/0 , 허용포트 8888 을 넣고 추가 버튼을 클릭 한 후 하단의 적용버튼을 클릭합니다.

(아래그림을 보시면 아시겠지만 이미 8888 포트를 추가한 후 캡쳐한 내용입니다.)

이제 접속해 봅니다.

공인 IP 를 신청을 하고 공인 IP 에 8888 로 연결해 봅니다.

123.123.123.123:8888 이런식이 되겠죠

접속하게되면 비번을 물어보는데 비번은 앞서 만든 서버명 입니다.

비번이 맞으면 아래그림과 같이 jupyter notebook 가 실행되어 나타납니다.

친절하게도 대표적으로 사용되는 몇가지 샘플파일들이 있습니다.

(한글이 왜 저렇게 나오는지는 모르겠네요;;)

1. Numpy 를 사용한 벡터와 행렬연산

2. Pandas 를 활용한 데이터 탐색

3. Matplotlib, Seaborn 을 사용한 시각화

4. NLTK 자연어처리패키지 소개

5. Scikit-Learn 을 사용한 ML

6. Keras 를 사용한 딥러닝

7. TensorFlow MNIST

아래는 샘플파일을 열어본건데 단순히 코드만 있는게 아니라 상세한 설명까지 있습니다. Wow!

기초 다지기엔 좋은 예제들인것 같습니다.

http://goodtogreate.tistory.com/entry/GPU-TensorFlow-on-Window-10-TensorFlow-GPU%EB%B2%84%EC%A0%84-%EC%9C%88%EB%8F%84%EC%9A%B010-%EC%84%A4%EC%B9%98

설치 및 동작 과정 캡쳐

* install tensorflow
관리자 권한으로 실행안해서 에러발생됨.

관리자 권한으로 실행후 python upgrade 진행

* mnist 로딩
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)

코딩

x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1+0.3

W = tf.Variable(tf.random_uniform([1],-1.0,1.0))
b = tf.Variable(tf.zeros([1]))
y = W* x_data + b

loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

init = tf.global_varables_initializer()

sess = tf.Session()
sess.run(init)

for step in range(201):
    sess.run(train)
    if step % 20 == 0:
        print(step, sess.run(W), sess.run(b))

 

+ Recent posts

티스토리 툴바