• 2024. 3. 17.

    by. 엔지니어대디

    반응형

    목차

    딥러닝 프레임워크(Deep Learning Framework)란?
    딥러닝 프레임 워크의 종류와 특징
    딥러닝 프레임워크 선택가이드

     

     


    딥러닝 프레임워크(Deep Learning Framework)란?

     

    딥러닝 프레임워크란 응용프로그램을 개발하기 위한 여러 라이브러리나 모듈 등을 효율적으로 사용할 수 있도록 하나로 묶어 놓은 일종의 패키지라고 할 수 있다. 개발자가 중복적인 기능을 구현해야하는 소모적인 작업을 없애고 문제 해결을 위한 핵심 알고리즘에 집중할 수 있도록 도와주는 라이브러리의 집합이다.

     

    딥러닝에서는 다양한 알고리즘(DNN, CNN, RNN, RBM, DBN 등)이 개발 되어 활용되고 있으며(딥러닝 알고리즘의 종류와 활용 참조), 여러 알고리즘을 결합하여 사용하는 경우도 많다. 이러한 알고리즘을 사용할 때마다 구현해야한다면 비효율적일 것이다. 이러한 문제를 해결하기 위해 사용하는 것이 딥러닝 프레임워크이다. 

     

    딥러닝 개발에 사용되는 프레임워크의 종류도 다양하고 각 프레임워크마다의 특성도 다르기 때문에 각 프레임워크에 따른 특성을 잘 파악하고 자신이 개발하고자 하는 분야와 개발 목적에 알맞은 프레임워크 선택이 필요하다. 이를 위해서는 딥러닝 프레임워크의 종류와 특징에 대한 파악이 선행되어야 한다. 

     

     

    딥러닝 프레임워크의 종류와 특징

    딥러닝 프레임워크는 다양한 종류가 있다. 각각의 특성과 장단점을 파악하여 사용할 프레임워크를 정하는 것이 필요하다. 아래의 그림은 딥러닝 프레임워트의 Power Score로 주로 사용하는 프레임워크일수록 점수가 높다. Power score 순서로 특징과 장단점을 설명하겠다. 

    Deep Learning Framework Power Scores
    Deep Learning Framework Power Scores(출처: Towards Data Science)

     

    1) 텐서플로(TensorFlow)

    텐서플로는 가장 인기 있는 딥러닝 라이브러리 중 하나이다. 구글에서 2015년에 오픈소스로 공개하였다. 텐서플로우는 파이썬(Python) 기반 라이브러리를 이용하여 여러 종류의 CPU와 GPU, 다양한 플랫폼에서 사용가능하다. 기본 언어는 파이썬이지만, 다른 언어(C++, Java, Jula, JavaScript 등)로도 인터페이스에 접근 및 제어할 수 있다는 점 때문에 인기가 많다. 시간이 지남에 따라 광범위한 유저층을 보유하고 있다. 특히 북미권에서 사용률이 높게 나타난다.

     

    장점으로는 방대한 커뮤니티를 지원하고, 다양한 연구 및 산업분야에서 활용되고 있다. 확장성 및 유연성이 높으며, 애플리케이션의 배포 및 통합 지원이 잘 되어 있다. 하지만, 딥러닝 모델을 만들기 위해 기초 레벨부터 작업해야하기 때문에 상대적으로 초보자에게 다소 어렵다는 단점이 있다. 

     

    2) 케라스 (Keras)

    케라스틑 파이썬 기반의 매우 가볍고 배우기 쉬운 오픈 소스 신경망 라이브러리이다. 케라스는 딥러닝 비전문가도 손십게 딥러닝 모델을 개발하고 활용할 수 있도록 직관적으로 구성되어 있다. 케라스는 다양한 신경망 모델을 미리 지원해주고 있어, 단순히 블록을 조립하듯 네트워크를 구성하면 된다.

     

    코드를 구성하기 위해 간결하고 사용하기 쉽다는 장점이 있다. 그리고 빠르게 프로토타입을 구성하고 모델을 개발할 수 있으며, 다양한 백엔드 엔진(텐서플로, 파이토치 등)을 지원한다. 반면에 텐서플로 및 파이토치에 비해 기능에 제한이 있으며, 복잡한 모델을 구현하는데는 어려움이 있다. 

     

    3) 파이토치 (Pytorch)

    파이토치는 토치(Torch)라는 머신 러닝 라이브러리를 기반으로 만든 파이썬(Python)용 오픈 소스 머신 러닝 라이브러리이다. 토치는 Lua 기반의 딥러닝 프레임워크로써 페이스북, 트위터, 구글에서 사용하고 개발한 라이브러리이다. GPU처리를 위해서 NVIDIA의 GPU 라이브러리인 CUDA를 사용한다. 토치(Torch)는 Lua 스크립트가 사람들에게 익숙하지 않아서 인기가 많지는 않았다. 하지만, 파이썬으로 토치를 구현한 파이토치(Pytorch)가 나오면서 인기를 얻게 되었다. 

     

    파이토치는 유연하고 직관적인 인터페이스와 디버깅(Debugging) 및 모델의 이해가 용이하며, 최신의 연구동향이 반영되어 있다는 장점을 가지고 있다. 반면에 텐서플로에 비해 커뮤니티 규모가 다소 작고, 배포 및 통합 지원이 부족하다는 단점이 있다. 

     

    4) Caffe

    Caffe는 Berkeley Vision and Learning Center (BVLC)에서 만든 딥러닝 프레임워크이다. Caffe는 Yangquing Jia가 UC 버클리에서 박사 학위를 바든 동안 만들었다. 이미지 처리와 컴퓨터 비전(Vision)분야에 특화된 프레임워크이다.

     

    장점으로는 빠른 속도를 가지고 있으며 배포 및 통합에 용이하는 점이 있다. 그래서 이미지 인식 및 객체 인식에 많이 활용되고 있다. 반면에 다른 프레임워크에 비해 기능이 제한되어 있으며 커뮤니티 지원이 부족하다는 단점이 있다. 

     

     

    5) 테아노(Theano)

    테아노는 최초의 딥러닝 라이브러리 중에 하나이다. 파이썬 기반이며 수치계산 및 심층학습에 특화되어 있어 학술 연구 분야에서 주로 사용하고 있다. 오픈소스 프로젝트로 캐나다 몬트리올 대학의 머신러닝 연구그룹 중 한 곳에서 개발하였다. 

     

    장점으로는 유연한 코드 작성이 가능하여 학술 연구분야에서 활발히 활용되고 있다. 반면에, 확장성이 뛰어나지 않으며 다중 GPU지원이 부족하다는 단점을 가지고 있다. 

     

    6) 아파치(Apache) MXNet

    아파치 MXNet은 오픈 소스 딥러닝 프로임워크에 하나로 아파치 소프트웨어 재단에서 개발한 프레임워크이다. AWS(Amazon Web Service)가 선택한 딥러닝 엔진으로 유명하다. 다양한 언어(Python, R, Scale, C++ 등)로 개발 가능하며 고성능 딥러닝 라이브러리인 cuDNN 및 MKL이 기반이다. 

     

    장점으로는 딥러닝 모델 학습 및 추론 속도가 따르며, 사용하기 쉬운 API 및 인터페이스를 제공한다. 단점으로는 다름 프레임워크에 비해 메모리 사용량이 다소 높으며 디버깅관련 도구 및 기능이 부족하다. 

     

     

    7) CNTK

    CNTK는 마이크로소프트에서 개발한 딥러닝 도구이다. 딥러닝 모델을 교육하기 위해 개발하였으며, 마이크로소프트에서는 번역기술, 음성 인식, 이미지 인식 등과 관련된 훈련(Training)을 할 때 CNTK를 사용했다고 밝혔다. 2015년 4월에 처음 공개되었으며, 마이크로소프트의 자체 코드 저장소인 "코드플렉스"에 업로드 하였다. 

     

    장점으로는 기업에서 사용하기에 최적화되어 있으며, 높은 확장성 및 성능을 가지고 있다. 반면에 커뮤니티의 규모가 작고 및 지원이 부족하며, 초보자에게 다소 복잡하다는 단점이 있다. 

     

     

    딥러닝 프레임워크 선택가이드

    결론적으로 아래와 같은 기준으로 딥러닝 프레임 워크를 선정하는 것을 추천한다. 

     

    구분 추천 프레임워크
    초보자 케라스 : https://keras.io/
    연구 텐서플로 : http://tensorflow.org/
    파이토치 : https://pytorch.org/
    이미지처리 Caffe : https://caffe.berkeleyvision.org/
    학술 분야 테아노 : 현재 지원 중단
    기업 Apache MXnet : https://mxnet.apache.org/versions/1.9.1/
    CNTK : https://learn.microsoft.com/ko-kr/cognitive-toolkit/

     

     


    관련글- [Learn/과학공학기술] - 딥러닝 - 인공지능의 핵심 기술

     

    딥러닝 - 인공지능의 핵심 기술

    목차 딥러닝 (Deep learning) 이란? 딥러닝의 기본 구조, 퍼셉트론이란? 딥러닝의 학습 원리 딥러닝과 일반 소프트 웨어의 차이 딥러닝의 활용 사례 딥러닝 (Deep learning) 이란? 딥러닝은 기계학습(Machin

    engineer-daddy.co.kr

     

    728x90
    반응형