딥러닝 프레임워크 조사와 몇가지 홍보

지난 4월 18일, 페이스북은 새로운 오픈소스 딥러닝 프레임워크인 Caffe2를 발표했다. 이로써 익혀야 할 도구가 하나 더 늘어난 듯 하다. 2015년부터 쏟아지기 시작한 딥러닝 프레임워크 전쟁에서 텐서플로우가 우위에 섰지만, 최근 주목을 받고 있는 Chainer, MXNet와 PyTorch 등도 조금씩 사용자층을 확대하고 있다. 이 글에서는 범람하고 있는 딥러닝 도구들을 간략히 비교하고, 관련 책과 강의를 소개하고자 한다.

 

딥러닝 프레임워크 살펴보기

여기에서는 대표적인 딥러닝 프레임워크들 몇가지를 여러가지 측면에서 비교하려고 한다. 관련 내용에 대한 자세한 글은 “딥러닝 프레임워크 비교“에서 확인할 수 있다.

 

시간순으로

TensorFlow, Chainer, MXNet 등 새로운 딥러닝 프레임워크가 계속 등장하는 이유를 이해하려면 프레임워크가 공개된 시점을 비교해보면 도움이 되었다. 아래는 구글링을 통해 관련 프레임워크가 오픈소스로 공개된 시점을 정리한 표다.

 

deeplearning_fw_timeline1

그림. 시간순으로 본 딥러닝 프레임워크

theano는 다른 딥러닝 프레임워크의 조상격으로 최초의 딥러닝 프레임워크라고 볼 수 있겠다. caffe는 버클리 대학교에서 2012년 LISVRC에서 발표한 AlexNet을 재현하기 위해 구현했으며, 이미지 분석에 특화되어 있다. 과학 계산을 위한 프레임워크나 도구가 대부분 파이썬 기반인 것에 반해, 가장 많은 사용자층을 보유한 Java의 경우 관련 도구가 전무했다. 이에 아담 깁슨(Adam Gibson)은 엔터프라이즈 시장에서 안정성과 성능이 증명된 Java 기반의 딥러닝 프레임워크인 DL4J(Deeplearning4J)를 만들어서 공개했다.

Torch는 과학 계산을 위한 도구로써 공개되었으며 이후 발전을 거쳐 딥러닝 프레임워크로 성장한 경우다. 문법과 구문이 단순한 루아(Lua) 언어를 기반으로 하는 것이 가장 큰 특징이며 단점이기도 하다. 이 시기에는 여전히 theano가 대표적인 딥러닝 프레임워크였으나 구문이 복잡하여 접근이 쉽지 않았다. theano를 백엔드로 사용하되 더 단순한 인터페이스를 제공하려는 목적으로 만들어진 프레임워크가 바로 Keras로, “framework of deeplearning framework”라고 볼 수 있다. 이와 유사한 프레임워크로는 Lasagne, Blcoks 등이 있다.

이제 본격적으로 딥러닝 프레임워크가 등장하는 시기로 구글이 TensorFlow를 오픈소스로 공개했다. 그리고 이에 앞서 ChainerMXNet 등이 공개되었지만, TensorFlow의 인기에 빛이 바랬다. MXNet 믹스넷(Mixed Net)을 표방하며, 다양한 딥러닝 프레임워크가 가진 장점을 모두 흡수 통합하려고 노력했다. 기존 딥러닝 프레임워크는 “Define-and-run” 아키텍처로, 정의된 그래프는 실행시점에 동적으로 변경이 불가능하다. Chainer는 새로운 “Define-by-run” 아키텍처를 제시하였고, 정의된 그래프는 실행시점에 동적으로 변경이 가능하다.

chainer_define_by_run

그림. Define-and-run vs. Define-by-run
(출처: Complex neural networks made easy by Chainer)

이후 마이크로소프트도 자사의 딥러닝 프레임워크를 오픈소스화하는데 뛰어들었고, CNTK 프레임워크를 Cognitive Toolkit이라는 이름으로 공개했다. 이 외에도 PyTorch, Neon 등 다양한 딥러닝 프레임워크가 공개되어 있다.

 

주요 특성별로

앞서 설명한 딥러닝 프레임워크의 주요 특성은 다음과 같다. 아래 표는 위키피디아의 Comparison of deep learning software를 참고했다.

deeplearning_fw_cheat_sheet

그림. 주요 특성별로 본 딥러닝 프레임워크

 

기술 스택관점에서

최근에 많은 관심을 받고 있는 Chainer는 일본의 Preferred Networks, Inc.에서 만들었으며, 다양한 딥러닝 프레임워크를 프레임워크 구현 관점에서 비교했다. 아래는 DLIF: Common design of neural network implementations에서 기술 스택 관점에서 비교한 내용을 참고했다.

deeplearing_fw_tech_stack0
deeplearing_fw_tech_stack1

그림. 기술 스택으로 본 딥러닝 프레임워크

 

 

프레임워크 설계 관점에서

DLIF: Differences of deep learning frameworks에서는 프레임워크 설계 관점에서 각 딥러닝 프레임워크를 비교했다.

deeplearing_design

그림. 프레임워크 설계 관점에서 본 딥러닝 프레임워크
(출처: DLIF: Differences of deep learning frameworks)

각 설계 관점별 장/단점은 다음과 같다.

dlif_1

dlif_2

dlif_3

dlif_4

dlif_5

그림. 프레임워크 설계 관점에서 본 딥러닝 프레임워크
(출처: DLIF: Differences of deep learning frameworks)

 

몇 가지 홍보

이처럼 다양한 딥러닝 도구가 등장했고, 기존 파이썬에만 국한되던 인터페이스 언어도 Java/Lua/C 계열로 확장되었으며, 구문이 단순해지고 튜토리얼도 풍성해졌다. 따라서 딥러닝을 시작하려고 할 때의 도구와 프로그래밍 언어의 벽은 이제 없다고 보면 된다. 결국 중요한 것은 개념과 이론을 충실히 이해하는 것이며, 관련 논문이 최고의 선생이 된다. 다만 나와 같은 초심자에게는 논문은 여전히 어렵고, 기본적은 개념을 이해하기에는 적당하지 않다.

나의 경우 “인공지능, 머신러닝, 딥러닝 입문(김의중 지음, 위키북스 출판)”이 딥러닝 분야를 시작하는데 가장 큰 도움이 된 책이다. 이론적인 부분이나 구현에 대한 내용은 깊게 다루지 않지만, 인공지능의 역사와 최근의 딥러닝 연구 분야에 대해 쉽게 이해할 수 있도록 풀어썼다. 프로그래머나 머신 러닝 전공자가 아니더라도 쉽게 이해할 수 있기에 일독을 권한다.

deeplearning_book

그림. 딥러닝의 세계로 인도해준 “인공지능, 머신러닝 딥러닝 입문”
(http://wikibook.co.kr/ai-by-algorithm/)

 

위의 책을 집필한 김의중님은 아이덴티파이라는 이름의 인공지능 스타트업을 창업했으며, 최근 책과 동일한 목적의 유료 강의를 준비중이다. 이제 딥러닝을 시작하려는 IT 엔지니어, 딥러닝 분야를 공부하고 싶은 IT와 무관한 사람들에게도 인공지능과 딥러닝을 설명하고 실습해 볼 수 있는 커리큘럼으로 구성되어 있다. 기본적인 CNN뿐만 아니라, 강화학습, RNN/LSTM, 그리괴 최신 GAN에 대해서도 폭넓게 다룬다. 관심 있으신 분들은 “인공지능, 머신러닝, 딥러닝 입문 과정“에서 신청할 수 있다.

deeplearing_course_aidentify

그림. 인공지능, 머신러닝, 딥러닝 입문과정

 

 

 

참고자료