본문 바로가기

어떤 딥러닝 프레임워크를 사용해야 할까? 장단점 비교 (텐서플로우/ 파이토치/ 케라스)

 

데이터 사이언티스트를 꿈꾸는 사람들의 최종 목표는 딥러닝 프로젝트를 하는 것이다.

딥러닝은 너도나도 할 것 없이 많은 회사들에서 진행하고 있다. 알파고, 자율 주행, AI 휴먼 등 모두 뉴런 네트워크 기반의 딥러닝 프레임워크가 사용된다. 딥러닝 프레임워크는 진짜로 수도 없이 많다. 텐서 플로우(Tensor Flow),파이 토치(Pytorch),케라스(Keras), CNTK, Caffe, Theano, Mxnet, DeepLearning4 j 등 수많은 프레임워크들이 존재한다. 그중 학계, 기업에서 가장 많이 쓰는 프레임워크 3가지를 고르라면 텐서 플로(Tensor Flow),파이 토치(Pytorch),케라스(Keras) 일 것이다. 우리가 딥러닝을 할 때 어떤 프레임워크를 사용해야 할까? 정답은 그때그때 효율적인 프레임워크를 사용하는 것이 중요하다. 제 느낌적인 느낌은 점점 파이 토치를 많이 쓰는 경향이 보이는 겄다. 학계에서 많이 쓰다 보니 점차 논문이나 활용 예제들이 쌓여가는 느낌이다. 하지만 아직은 하나의 프레임워크로 천하통일되는 느낌은 아니다. 그렇다면 가장 많이 쓰는 3가지 텐서 플로우, 파이 토치, 케라스에 대해서 장단점을 비교해 보도록 하자 

 

 

 

1) 텐서 플로우(Tensor Flow)

- 정의: 텐서 플로 또는 텐서 플로우는 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리이다. 심볼릭 수학 라이브러리이자, 인공 신경망 같은 기계 학습 응용프로그램 및 딥러닝에도 사용된다. (위키백과) 

- 개발사: 구글 

- 최초 출시일: 2015년 11월 9일

- 프로그래밍 언어 : 파이썬, C++ 

- 장점: 

   . 모델 구현 시 속도가 빠르다. 

   . 세부 튜닝이 가능하기 때문에 디테일한 모델링이 가능하다

   . 텐서 보드를 통해서 파 라이터 변화 양상이나 DNN의 구조를 알 수 있음 

- 단점: 

   . 난도가 높다. 

   . 메모리를 효율적으로 사용하지 못함 

   . Symbolic Loop 기능이 유연하지 못하며, 함수가 있어도 텐서 타입으로만 적용해야 함 

 

 

2) 파이 토치(Pytorch)

- 정의: PyTorch는 Python을 위한 오픈소스 머신 러닝 라이브러리이다. Torch를 기반으로 하며, 자연어 처리와 같은 애플리케이션을 위해 사용된다. GPU 사용이 가능하기 때문에 속도가 상당히 빠르다. (위키백과) 

- 개발사: 페이스북 AI 리서치 랩 (FAIR)

- 최초 출시일: 2016년 9월

- 프로그래밍 언어 : 파이썬, CUDA, C++ 

- 장점: 

   . 텐서 플로우보다 쉽고 디테일한 모델링이 가능

   . 간단하고 직관적으로 학습 가능 

   . 속도 대비 빠른 최적화가 가능 

   . 그래프를 만들면서 동시에 값을 할당하는 define by run 방식으로 코드를 깔끔하게 작성할 수 있음 

- 단점: 

   . 텐서플로우보다 디테일한 모델링은 불가능하고 속도 또한 느림 

   

 

 

3) 케라스(Keras)

- 정의: 케라스는 파이썬으로 작성된 오픈 소스 신경망 라이브러리이다. MXNet, Deeplearning4 j, 텐서 플로, Microsoft Cognitive Toolkit 또는 Theano 위에서 수행할 수 있다. (위키백과) 

- 개발자: 프랑스와 숄레

- 최초 출시일: 2015년 3월 27일

- 프로그래밍 언어 : 파이썬

- 장점

   . 매우 쉬움 

   . 사용자 친화성, 모듈성, 확장성이 있어서 일관되고 간결한 API를 제공함

- 단점 

   . 텐서 플로우를 기반으로 두고 있기 때문에 이용시 텐서플로우 설치가 필수 

   . 디테일한 모델링이 되는 만큼 코드만 보고 딥러닝 구조를 파악하기 어려움 

   . 오류가 났을 때 케라스 에러인지 백앤드 에러인지 파악이 어려움