Loading...

Pytorch

Pytorch 소개

Pytorch는 Lua 언어로 제공하던 기존의 torch에서 Python API를 제공하기 위해 개발된 계산 프레임 워크입니다. tape-based aurograd 시스템을 기반으로 구축된 심층신경망을 제공하며 Numpy와 같은 텐서 계산에 강력한 GPU 가속을 사용하여 높은 유연성과 속도를 가집니다. 또한 간단한 설치방법과 직관적이고 간결한 코드 구성으로 사용이 용이합니다.

※ Pytorch 라이브러리 구성요소

torch 강력한 GPU 지원 기능을 갖춘 Numpy와 같은 텐서 라이브러리
torch.autograd torch의 모든 Tensor 작업을 지원하는 테이프 기반 자동 차별화 라이브러리
torch.nn 높은 유연성을 위해 설계된 자동 그래프와 깊이 통합 된 신경망 라이브러리
torch.optim SGD, RMSProp, LBFGS, Adam 등과 같이 최적화된 표준 방식으로 torch.nn과 함께 사용되는 최적화 패키지
torch.multiprocessing Python 멀티 프로세싱을 지원하지만 프로세스 전반에 걸쳐 Torch Tensors와 메모리 공유가 가능하여 데이터 로딩과 hogwild training에 유용
torch.utils 편의를 위한 DataLoader, Trainer 및 기타 유틸리티 기능
torch.legacy(.nn/.optim) 이전 버전과의 호환성을 위해 Torch에서 이식 된 레거시 코드

※ 개발 중인 회사 및 대학

TensorFlow

TensorFlow 소개

TensorFlow는 기계학습과 딥러닝을 위해 구글(google)에서 만든 오픈소스 라이브러리입니다. Python, C++ 언어를 기반으로 하지만 SWIG를 통해 다른 다양한 언어들도 지원하고 있습니다. TensorFlow는 데이터 플로우 그래프 방식을 사용하여 풍부한 표현력을 가지며, 코드 수정 없이도 CPU/GPU 모드로 동작이 가능합니다. 또한 계산 구조와 목표 함수만 정의하면 자동으로 미분 계산 처리하는 기능을 제공합니다.

※ TensorFlow 특징

Deep Flexibility
  • 계산을 데이터흐름그래프로 표현
  • 그래프를 작성한 다음, 계산을 구동시키는 내부(inner) 루프를 작성
  • NN에서 일반적인 서브그래프 조립용 도구가 제공되지만, 사용자는 TensorFlow에 각자의 상위-레벨 라이브러리들을 작성할 수 있음.
True Portability
  • CPU나 GPU, 데스크탑, 서버 또는 모바일 컴퓨팅 플랫폼 위에서 가동
  • 특별한 하드웨어가 없이 노트북에서 기계학습 아이디어를 구현
  • 코드 변경 없이 GPU 상에서 해당 모델을 확장
  • 모바일에 훈련된 모델을 설치
  • 클라우드 서비스 모델로 운영 가능
  • Docker로 컨테이너화 해서 TensorFlow를 작동 가능
Auto-Differentiation
  • 기울기(Gradient) 기반 ML 알고리즘은 TensorFlow의 자동미분기능(automatic differentiation capabilities)의 효과
  • 예측모델의 계산구조를 정의하고, 그 계산구조를 목적함수(objective function)와 결합, 데이터를 추가시키면 미분(derivatives)계산 을 처리
  • 모델 안에서 다른 값과 관련된 일부 값의 미분 계산이 그래프를 확장하여, 진행과정을 정확히 파악 가능
Language Options
  • 계산그래프를 구축하고 실행하기 위하여 파이썬 인터페이스와 실제적 C ++ 인터페이스를 사용하기 용이
  • 논리적으로 그룹화된 노트, 코드 및 시각화를 유지할 수 있는, 독립형 TensorFlow 파이썬 또는 C ++ 프로그램을 작성 하거나, 또는 상호작용형 TensorFlow iPython 노트북에서 가능

데이터 플로우 그래프란?

데이터 플로우 그래프는 수학적 계산과 데이터의 흐름을 ‘노드’와 ‘엣지’를 이용하여 방향 그래프로 나타냅니다. 여기서 노드는 수학적 계산, 데이터의 입력과 출력 그리고 데이터의 읽기 및 저장 등의 작업을 수행하며 엣지는 노드들 간의 데이터 입•출력을 나타냅니다

※ 개발 중인 회사 및 대학

Caffe

Caffe 소개

Caffe는 Berkeley Vision and Learning Center (BVLC)에서 개발된 최신 딥러닝 알고리즘과 모델들을 포함하는 소프트웨어 프레임워크입니다. C++ 라이브러리뿐만 아니라 Python, Matlab 등을 포함하여 다양한 딥러닝 모델을 효율적으로 학습할 수 있습니다. 특히 이미지 처리에 특화되어 있어 K40 혹은 Titan GPU를 사용하면 하루에 4천만장의 이미지를 처리할 수 있습니다. 실제 코드 구현과 모델정의를 분리함으로써 실험 및 플렛폼간 매끄러운 변환을 가능하게 하며, 이는 프로토타이핑 머신에서부터 클라우드 환경에 이르기까지 개발 및 배포에 용이합니다.

※ Caffe의 특징

Modularity 새로운 데이터 포멧, 네트워크 레이어, loss function 등에 쉽게 확장 가능하도록 모듈화되어 개발됨.
Separation of representation and implementation 새로운 데이터 포멧, 네트워크 레이어, loss function 등에 쉽게 확장 가능하도록 모듈화되어 개발됨.
Test coverage 새네트워크 모델은 Protocol Buffer 언어를 이용한 config files로 정의됨.
Python and Matlab bindings 기존 코드들과의 인터페이싱을 위해 python/matlab binding을 지원
네트워크를 구성하거나 입출력 뿐 아니라 python binding은 solver module에 접근함으로써 새로운 훈련과정을 구성
Pre-trained reference models 비젼인식에 관한 참고모델(AlexNet ImageNet, R-CNN detection model) 제공

※ 관련 소프트웨어와의 비교

Deeplearning4j

Deeplearning4j 소개

Deeplearning4j는 상용 서비스를 위해 설계된 딥러닝 라이브러리로 자바(Java)와 스칼라(Scala) 언어로 작성되었으며 하둡(Hadoop), 스파크(Spark)와 통합하여 사용할 수 있습니다. Deeplearning4j는 기계 학습에 대한 깊은 지식이 없는 사람도 쉽게 사용할 수 있도록 설치와 활용에 일반적인 문법과 규칙을 사용했습니다. 더욱이 Deeplearning4j는 분산 처리와 단일 스레드 처리를 모두 지원하여 대량의 데이터를 신속하게 처리하게 해줍니다.

※ Deeplearning4j 특징

  • 다목적 N차원 배열 클래스 (n-dimensional array class)
  • GPU 통합
  • 하둡 및 스파크로 쉽게 확장 가능
  • 카노바(Canova): 기계 학습을 위한 벡터 처리 기술
  • ND4J: Numpy의 두 배 속도를 자랑하는 선형 대수 라이브러리

Deeplearning4j는 분산 처리와 단일 스레드 처리를 모두 지원합니다. 분산 시스템에서 학습하는 경우 동시에 여러 서버 클러스터에서 학습을 진행할 수 있으며, 결과적으로 대량의 데이터를 신속하게 처리할 수 있습니다. 인공 신경망은 Iterative Reduce (반복적인 리듀스 작업)를 통해 병렬로 학습되는데, 이 학습 작업은 자바, 스칼라 및 Clojure와 모두 호환됩니다. 이렇게 오픈 스택에서 편하게 사용할 수 있도록 모듈화된 구조 덕분에 Deeplearning4j를 이용해 마이크로 서비스 아키텍처에 최초로 딥러닝 기술을 적용하고 있습니다.

※ Deeplearning4j 인공 신경망

  • RBMs: Restricted Boltzmann Machines
  • 인공 신경망
  • 자연어처리: Word2vec
  • 컨볼루션 네트워크(CNNs, Convolutional Networks)
  • 재귀 오토인코더(Recursive autoencoders)
  • Deep-belief networks
  • 딥 오토인코더(Deep autoencoders) (자동 질의응답, 데이터 압축에 적용)
  • 재귀 텐서 신경망(Recursive Neural Tensor Networks) (영상, 자연어 분석에 적용)
  • 누적 디노이징 오토인코더(Stacked Denoising Autoencoders)

※ Deeplearning4j의 심층 신경망 : Deeplearning4j의 라이브러리와 적용 과정은 아래와 같습니다.

※ 개발 중인 회사 및 대학

Theano

Theano 소개

Theano는 LISA연구소에서 데이터 탐색에 적합한 연구용 딥러닝 프레임워크로 개발한 Python 언어 기반 라이브러리입니다. 특히 다차원 배열(numpy.ndarray)이 있는 수학 표현식을 정의하고 최적화 및 평가할 수 있게 해줍니다. 또한 Keras, Lasagne, Blocks 등 수많은 오픈 소스 딥러닝 라이브러리가 Theano를 기반으로 탄생했습니다.

Theano를 사용하면 많은 양의 데이터가 포함 된 문제에 대해 수작업으로 구현 된 C 구현에 필적하는 속도를 얻을 수 있으며 최근의 GPU를 이용함으로써 CPU에서 C를 능가 할 수 있습니다.

Theano는 컴퓨터 대수학 시스템 (CAS)의 측면을 최적화 컴파일러의 측면과 결합합니다. 또한 많은 수학 연산에 대해 사용자 정의 된 C 코드를 생성 할 수 있습니다. 이러한 최적화 된 컴파일과 CAS의 결합은 복잡한 수학 표현식이 반복적으로 평가되고 평가 속도가 중요한 작업에 특히 유용합니다. 여러 다른 표현식이 한 번 평가되는 상황을 위해 Theano는 컴파일 /분석 오버 헤드를 최소화 할 수 있지만 여전히 자동 차별화와 같은 상징적 기능을 제공합니다. Theano의 컴파일러는 다양한 기호화된 표현식에 최적화를 적용합니다.

※ Theano 최적화

  • 계산을위한 GPU 사용
  • 상수 폴딩
  • 중복 계산을 피하기 위해 유사한 하위 그래프의 병합
  • 단순화 산술
  • 효율적인 BLAS 운영
  • 계산을 피하기 위해 메모리 앨리어싱 사용
  • 앨리어싱을 방해하지 않는 inplace 연산을 사용
  • 수치 안정성 향상