Learning-driven Methodology/DL (Deep Learning)

[Deep Learning] 딥러닝 프레임워크 비교

goatlab 2022. 5. 19. 16:46
728x90
반응형
SMALL

딥러닝 프레임워크 비교

 

https://towardsdatascience.com/top-5-deep-learning-frameworks-to-watch-in-2021-and-why-tensorflow-98d8d6667351

  장점 단점
텐서플로우
(TensorFlow)
텐서보드 (TensorBoard)를 통해서 파라미터 변화 양상이나 DNN의 구조를 알 수 있다. 메모리를 효율적으로 사용하지 못한다.
케라스 (Keras) 배우기 쉽고 모델을 구축하기 쉽다. 오류가 발생할 경우 케라스 자체의 문제인지 백엔드 (back-end)의 문제인지 알 수 없다.
토치 (Torch) 간단하고 직관적인 학습과 속도 대비 빠른 최적화가 가능하다. 텐서플로우에 비해 사용자층이 얕고, 예제 및 자료를 구하기 힘들다.

 

텐서플로우 (TensorFlow)

 

텐서플로는 구글이 개발한 오픈소스 소프트웨어 라이브러리이며 머신러닝과 딥러닝을 쉽게 사용할 수 있도록 다양한 기능을 제공한다. 텐서플로는 데이터 플로우 그래프 (Data Flow Graph) 구조를 사용하는 특징이 있다.

 

이는 수학 계산식과 데이터의 흐름을 노드 (Node)와 엣지 (Edge)를 사용한 방향성 그래프로 표현하는 방식이다. 각 노드 사이의 연결이나 다차원 배열 등을 의미하는 텐서 사이의 연결 관계를 풍부하게 표현할 수 있으며, 텐서보드 시각화 도구 모음을 사용하면 웹 기반의 대화형 대시보드에서 그래프 실행 방법에 대한 검사나 프로파일링도 가능하다.

 

장점 단점
텐서플로우는 주로 이미지 인식이나 반복 신경망 구성, 기계 번역, 필기 숫자 판별 등을 위한 각종 신경망 학습에 사용한다.  특히 대규모 예측 모델 구성에 뛰어나 테스트부터 실제 서비스까지 사실상 거의 모든 딥러닝 프로젝트에서 범용적으로 활용할 수 있다.

구글에서 지원하고 있기 때문에 지속적인 성능 개선과 지원에서 타 프레임워크보다 빠르고 안정적이란 부분이 강점이다. 이 밖에도 추상화 수준이 높아 텐서플로를 활용하면 개발자는 알고리즘의 세세한 구현보다 전체적인 논리 자체에 더 집중할 수 있게 되며 확장성 또한 뛰어나다.
딥러닝 모델을 만드는 데 기초 레벨부터 직접 작업해야 하기 때문에 초보자가 사용하기 어려울 수 있다.

 

케라스 (Keras)

 

텐서플로의 문제를 해결하기 위해 보다 단순화된 인터페이스를 제공하는 케라스가 개발되었다. 케라스의 핵심적인 데이터 구조는 모델이다.

 

케라스에서 제공하는 시퀀스 모델로 원하는 레이어를 쉽게 순차적으로 쌓을 수 있으며, 다중 출력 등 더 복잡한 모델을 구성할 때는 케라스 함수 API를 사용하여 쉽게 구성할 수 있다. 이처럼 케라스는 딥러닝 초급자도 각자 분야에서 손쉽게 딥러닝 모델을 개발하고 활용할 수 있도록 직관적인 API를 제공한다. 

 

장점 단점
케라스는 일반 사용 사례에 최적화된 간단하고 일관된 인터페이스를 제공한다. 사용자 오류에 대해 명확하고 실용적인 피드백을 제공한다. 또한, 케라스의 구성 요소는 모듈 형태로, 각 모듈이 독립성을 갖기 때문에 새로운 모델을 만들 때 각 모듈을 조합해 쉽게 새로운 모델을 만들 수 있다. 모듈화의 한계로 복잡한 프로젝트에 구현 범위가 다소 좁은 편이다. 또한, 케라스는 다양한 백엔드 위에서 동작하기 때문에 어떤 오류가 발생했을 때 케라스 자체의 문제인지, 백엔드 언어의 문제인지 특정하기 어려운 단점이 있다.

 

토치 (Torch)

 

토치 (Torch)는 페이스북의 AI 연구 팀이 개발한 파이썬 기반 오픈소스 머신러닝 라이브러리이다. 파이토치는 토치라는 머신 러닝 라이브러리에 바탕을 두고 만들어졌다. 파이토치는 텐서플로우와 다르게 절차가 간단하고 그래프가 동적으로 변화할 수 있으며 코드 자체도 파이썬과 유사해 진입 장벽이 낮은 편이다.

 

장점 단점
그래프를 만들면서 동시에 값을 할당하는 Define by run 방식으로 코드를 깔끔하고 직관적으로 작성할 수 있다. 또한, 학습 속도도 텐서플로우보다 빠르다. 텐서플로우가 유기적을 신경망을 만들 수 없어 성능의 한계를 가지고 있는 반면, 파이토치는 메모리에서 연산을 하면서도 신경망 사이즈를 최적으로 바꾸면서 동작시킬 수 있다. 파이토치는 Numpy를 대체하면서도 GPU를 이용한 연산이 가능하며 유연하고 빠르기 때문에 최근 딥러닝 관련 논문에서는 텐서플로보다 파이토치를 선호하는 추세이다. 텐서플로우에 비해 사용자층이 낮고 학습에 필요한 자료와 예제를 구하기 쉽지 않다.

 

728x90
반응형
LIST