Do you develop AI? 딥러닝 프레임워크 6선
상태바
Do you develop AI? 딥러닝 프레임워크 6선
  • 이건한 기자
  • 승인 2019.08.28 09:00
  • 댓글 0
이 기사를 공유합니다

주요 딥러닝 프레임워크 소개와 장단점

[테크월드=이건한 기자] 바야흐로 인공지능(AI)의 시대다. 이젠 어느 기업에서나 자사의 서비스와 기기에 AI를 접목했다고 말하곤 한다. 물론 그 수준이야 제각각이지만 확실히 AI가 적용된 제품의 사용성은 이전에 비하면 대체로 좋은 편이다.

지금의 AI 시대가 열린 밑바탕에는 기계학습의 한 갈래인 '딥러닝(Deep learning)'의 탄생이 큰 영향을 끼쳤다. AI가 주어진 데이터 안에서 스스로 특징을 찾아내고 높은 가치를 지닌 추론이 가능하도록 만든 딥러닝의 등장에 많은 AI 개발자가 열광했다. 

사진=게티이미지뱅크
사진=게티이미지뱅크

하지만 높은 열기에 비해 딥러닝을 다룰 수 있는 개발자나 데이터 과학자의 수는 많지 않았다. 딥러닝 이전 AI 학계는 2번의 '인공지능 겨울'을 맞이하며 전문가의 수가 크게 감소했기 때문이다. 기대만큼의 성과를 내지 못한 AI 연구에 대한 정부 자금과 기업 투자가 썰물처럼 빠져나갔고, “AI를 연구한다”고 말하는 것만으로도 사기꾼 취급을 받을 정도로 AI에 대한 불신의 벽은 높았다.

그러나 결국 소수의 뚝심 있는 과학자들만이 남아 묵묵히 연구를 지속한 결과, 'AI의 봄'은 결국 다시 찾아왔다. 다시금 AI 개발자에 대한 수요가 증가했고 기존 개발자들도 딥러닝 베이스 개발을 배우기 위해 나섰지만 학습에 필요한 자료나 예제는 턱없이 부족한 편이다. 이는 해외도 마찬가지며 번역 자료가 적은 국내 사정은 더욱 열악하다.

또 현장에서 사용하는 언어나 프레임워크도 한둘이 아니다. 최근 기업과 정부의 AI 인재양성 지원 사업도 활발하지만, 결국 괜찮은 AI 개발자가 되고 싶다면 스스로 이런저런 언어와 프레임워크를 다뤄보며 스스로에게 가장 잘 맞는 도구와 기술을 찾아보는 과정이 필요하다. 본 글에서는 딥러닝 개발 프레임워크 선택에 참고할 수 있는 기초적인 정보와 장단점들을 모아 정리해봤다. 

 

텐서플로우(TensorFlow)

구글이 2015년에 오픈소스로 공개한 딥러닝 프레임워크다. 구글의 거의 모든 AI 제품과 서비스에 사용되고 있으며 오픈소스의 개방성, 다양한 언어 지원, 폭넓은 사용자층에서 만들어지는 다양한 자료와 범용성을 기반으로 가장 널리 사용되고 있다. 2016년 바둑에서 이세돌 9단을 꺾은 알파고의 AI 연산 가속기 ‘TPU’에도 텐서플로우가 적용됐다. 연계된 주요 개발 언어는 파이썬이다. 

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

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

무엇보다 구글이란 거대 기업에서 지원하는 만큼, 지속적인 성능 개선과 지원에서 타 프레임워크보다 빠르고 안정적이란 부분이 강점이다. 이 밖에도 추상화 수준이 높아 텐서플로우를 활용한 머신러닝 프로젝트에서 개발자는 알고리즘의 세세한 구현보다 전체적인 논리 자체에 더 집중할 수 있게 되며 확장성 또한 뛰어나다.

단점으론 리눅스와 맥OS만 지원하는 점, 그중에서도 GPU 버전은 리눅스만 지원한다는 점이 있다. 윈도우 사용자는 텐서플로우를 사용하려면 가상 머신이나 도커 툴박스를 설치해야 한다. 경쟁 프레임워크들과 비교해 다소 느린 속도도 아쉬운 점으로 꼽힌다.

텐서플로우는 높은 인기만큼이나 다양한 연구, 개발에서 활용된다. 텐서플로우 개발을 주도한 구글의 주요 프로젝트와 서비스에서도 마찬가지다. 대표적으로 지메일 스팸 필터링, 이메일 자동 응답 시스템, 이미지에서 텍스트를 인식하고 번역하는 번역 앱, 사용자의 질의에 관련성이 높은 결과를 제공하는 랭크 브레인(RankBrain) 등이 있다.

그 외에 일본의 금융사 SMFG가 개발한 신용카드 사기탐지 시스템이나, 스탠퍼드 대학이 개발한 이미지를 텍스트로 요약하는 덴스캡(DenseCap) 등이 있으며, 세계적인 오픈소스 플랫폼 ‘깃허브(GitHub)에서 가장 많이 사용되는 딥러닝 프레임워크 역시 텐서플로우다.

스탠퍼드 대학의 덴스캡 예제
스탠퍼드 대학의 덴스캡 예제

 

케라스(Keras)

케라스는 파이썬으로 작성된 오픈소스 신경망 프레임워크다. 앞에 소개한 텐서플로우는 물론, 뒤에 언급할 MXNet 상에서도 구동된다. 빠른 실험에 중점을 둔 만큼 구성이 간결해 비전문가도 상대적으로 쉽게 사용할 수 있는 프레임워크이며 ‘모델’이란 데이터 구조를 기반으로 한다. 

특징은 크게 ‘모듈화’, ‘최소주의’, ‘확장성’ 정도를 들 수 있다. 우선 케라스의 모델은 최소한의 제약 사항으로 연결된 각종 모듈을 시퀀스나 그래프로 연결한 것이다. 대부분의 모듈은 독립성을 가져, 새로운 모델을 만들 때 이들을 조합해 손쉽게 새 모델을 만들 수 있다. 최소주의를 지향하는 만큼 모듈과 내부 코드는 짧고 간결하며 가시성이 좋다. 이어지는 장점으로 새로운 클래스나 함수를 사용한 모듈을 간단하게 추가할 수 있는 점, 고급 연구에 필요한 다양한 시도에 따른 부담이 적다는 점 등이 있다.

단점은 역설적으로 케라스의 장점에 있다. 우선 오류 상황이 발생했을 때, 다양한 백앤드 위에서 동작하는 케라스는 그것이 케라스 자체의 문제인지, 아니면 백앤드 언어의 문제인지 특정하기 어렵다. 물론 케라스를 다루는 기술이 숙련되면 어느 정도 해결되는 문제지만, 초심자의 경우 결국 백엔드 문제까지 이중으로 찾아보고 처리해야 하는 불편이 발생할 수 있다. 또한 모듈화의 한계로 텐서플로우에 비하면 복잡한 프로젝트에 대한 구현 범위가 다소 좁은 편이다.

케라스의 최근 활용 사례로는 네이버가 네이버페이의 카드결제 시스템 중 이상거래 감지 시스템을 기존의 페이스북 Prophet 기반에서 케라스 딥러닝 기반으로 개선한 예가 있다. 유명 딥러닝 유튜버인 ‘Siraj Raval’은 케라스 기반의 딥러닝 모델(LSTM, Q-Learning)을 활용해 주식 가격을 예측하는 예제 영상을 만들기도 했다. 

Siraj Raval의 예제 일부 (자료=Siraj Raval 유튜브)
Siraj Raval의 예제 일부 (자료=Siraj Raval 유튜브)

 

파이토치(PyTorch)

파이토치는 페이스북 인공지능 연구팀이 만든 파이썬 기반 오픈소스 머신러닝 프레임워크다. 구글 텐서플로우는 구현 과정이 순차적이고 만들어진 계산 그래프의 형태 변환이 쉽지 않은 반면, 파이토치는 절차가 간단하고 그래프가 동적으로 변화할 수 있으며, 코드 자체도 파이썬과 유사해 진입 장벽이 낮은 편이다.

해외 커뮤니티에서도 파이토치의 동적 그래프가 지닌 유연함과 변화무쌍함, 손쉬운 사용법 등에 대해 높이 평가하는 내용이 자주 눈에 띈다. 파이토치 공식 사이트의 경우 ▲Numpy를 대체하면서도 GPU를 이용한 연산이 필요한 경우 ▲최대한의 유연성과 속도를 지닌 딥러닝 연구 플랫폼이 필요한 경우 파이토치가 적합하다고 설명하고 있다.

다만 텐서플로우에 비해 사용자층이 얕고 학습에 필요한 자료와 예제를 구하기 쉽지 않다는 점이 단점으로 꼽힌다. 이는 시간이 지나면 해결될 수도 있는 문제지만 작은 생태계와 학습 자료 가뭄은 파이토치의 확장에 지속적인 걸림돌이 될 가능성이 높다. 

아직 짧은 연혁을 지닌 파이토치의 구체적인 기업 활용 사례는 거의 찾아볼 수 없었지만, 대신 페이스북이 파이토치 생태계 확산을 적극적으로 지원하는 모양새다. 2018년에는 파이토치 개발자 컨퍼런스를 열고 아마존 웹서비스(AWS), 마이크로소프트 애저, 구글 클라우드 플랫폼 같은 대기업 클라우드와의 제휴를 발표했으며 유다시티(Udacity), Fast.ai 등과 협력해 파이토치를 가르치는 입문 과정을 후원하기도 했다.

 

카페(Caffe)

카페는 2013년 버클리 인공지능 연구소와 여러 공헌자에 의해 개발된 프레임워크다. 컴퓨터 비전(Computer Vision) 머신러닝에 특화돼 있으며 주로 C/C++ 기반으로 사용된다. 계산 시 GPU 자원을 활용할 수 있는데, 이때 엔비디아의 GPGPU 기술인 CUDA와 딥러닝 라이브러리 cuDNN을 활용해 성능을 최적화할 수 있다. 

카페의 독특한 장점은 Model Zoo라는 모델 공유 네트워크에 있다. 이 커뮤니티에는 알렉사넷(AlexNet)이나 구글넷(GoogLeNet) 같은 유명한 비전 딥러닝 모델 외에도 다양한 기여자들이 공유한 모델을 다운받아 테스트할 수 있는 환경이 갖춰져 있다. 양질의 데이터 유무가 중요한 딥러닝에서 이미 만들어진 모델을 통한 테스트는 초심자도 쉽게 학습할 수 있다는 장점이 된다.

혹은 비슷한 테스트에 대한 수고를 줄일 수도 있다. 후속 버전으로 카페2(Caffe2)가 개발됐지만 핵심 개발자가 페이스북으로 이직하며 카페2는 앞서 설명한 파이토치로 흡수된다. 

단점은 컴퓨터 비전 분야 밖에서의 범용성은 타 프레임워크에 비해 상대적으로 떨어진다는 점이다. 낮은 범용성은 충분한 크기의 생태계를 키우지 못했고 이는 곧 관련 데이터의 부족으로 이어진다. 텐서플로우나 파이토치가 구글, 페이스북 같은 대기업에 의해 관리된다면 카페는 일개 대학에서 만들어진 프레임워크로, 확장성이 낮고 업데이트도 느린 편이다. 아울러 대규모 처리를 위한 분산 컴퓨팅 API에 대한 지원이 부족한 점도 문제로 꼽힌다. 

활용 영역은 주로 비전, 음성 인식 계통이며, 로봇공학과 신경과학 영역에서도 일부 사용된다. 엔비디아는 카페를 CNN(Convolutional Neural Network) 방식 기반으로 무선 주파수를 처리하는 방법, 항공 해양 사진에서 고래 이미지를 탐지하는 등의 솔루션 개발 교육에 활용하기도 했다.

고래 탐지 예시 이미지 (자료=엔비디아)
고래 탐지 예시 이미지 (사진=엔비디아)

 

Deeplearning4j(DL4J)

세계에서 가장 인기 있는 개발언어 중 하나인 자바(Java)와 자바 가상머신(JVM) 용으로 만들어진 딥러닝 프레임워크다. DL4J는 아파치 라이선스 2.0에 기반한 오픈소스이며, 특히 빅데이터 분산 저장·분석에 특화된 아파치 하둡과 스파크를 연동할 수 있다는 특징이 있다. 자바 외에 타 JVM 언어, 클로저와도 호환되며 스칼라 API를 포함하는 등 JAVA 계열답게 이식성이 뛰어나다. GPU 연산을 위한 CUDA 커널을 포함하고 있고 분산 GPU 환경에서도 동작할 수 있다.

단점은 파이토치와 비슷하다. 사용자층이 깊지 않아 커뮤니티 활성화나 공개된 예제 등의 학습 자료가 다른 프레임워크와 비교해 부족한 편이다. 여기에 자바란 언어 자체가 딥러닝에 특화된 구조가 아니라 테스트 과정에서 일부 번거로움이 발생하기도 한다.

DL4J는 우분투(Ubuntu) 리눅스를 지원하는 캐노니컬이 스카이마인드와 협력해 클라우드 오픈스택 시스템에서 운영 중 발생하는 복잡한 데이터 분석과 서버 오류 예측을 위한 서비스 연구에 활용한 사례가 있으며, 일본의 AI 솔루션 기업 넥스트리머(Nextremer)와의 파트너십으로 머신러닝을 활용한 이상거래탐지(FDS) 연구에도 활용된 바 있다. 이 밖에 자연어 처리를 위한 Word2Vec 모델 구축에 활용되기도 한다.

 

MXNet

Aapache MXNet은 AWS(Amazon Web Service)로 유명한 아마존이 공식 지원하는 오픈소스 딥러닝 프레임워크다. 태생은 워싱턴 대학과 카네기 멜론대학이며, 아파치 재단의 인큐베이팅 프로젝트로 선정되며 아마존의 눈에 띄었다. MxNet의 강점은 무엇보다 폭넓은 언어 지원과 사용 범위다. 딥러닝 언어의 대표주자인 파이썬은 물론이고, C++, 스칼라, 줄리아, 매트랩, 자바스크립트, 클로저, 펄, R 등을 지원하며, 모바일 기기부터 서버 수준까지의 디바이스를 모두 사용할 수 있다.

국내 개발자들에게 익숙한 심볼릭(Symbolic)과 명령형(Imperative) 프로그래밍 혼합 방식을 지원하며, CPU와 GPU 연산을 모두 지원하지만 특히 GPU 클러스터에 최적화된 모습을 보여준다. MXNet 내 ‘Gluon’ 라이브러리는 학습 속도를 유지하면서 딥러닝 모델의 프로토타입을 손쉽게 구축, 교육, 배포할 수 있는 인터페이스와 사전에 정의된 계층, 손실 함수, 최적화 프로그램을 위한 추상화를 제공한다. 

단점은 높은 범용성의 반대급부인 로우 레벨 텐서 연산자가 적다는 점, 흐름 제어 연산자를 지원하지 않는 점, 효율적인 사용을 위해서는 기반이 되는 백엔드 프레임워크에 대한 높은 이해가 필요하다는 점 등이다. 처리 속도도 경쟁자들에 비해 다소 느리다. 

MXNet은 2차원 이미지를 3차원으로 변환하거나, 시간에 따른 사용자와 대상 사이의 관계 예측, 이미지 내 객체 인식 연구 등에 활용될 수 있다. 또 자동차 자율주행을 위한 객체 탐지에도 활용될 수 있는데, 중국의 스타트업 투심플(TuSimple)이 Level 4의 자율주행 트럭 상용화 연구에 MXNet을 사용하고 있다. 

투심플의 자율주행트럭 (사진=tusimple.com)
투심플의 자율주행트럭 (사진=tusimple.com)

프레임워크 사이 우위는 없어

이 외에도 미처 다 소개하지 못했지만 AI 개발을 위한 프레임워크나 라이브러리의 수는 많다. 또 이들 대부분이 엔비디아의 cuDNN 딥러닝 라이브러리를 지원하기 때문에 학습 속도 자체로는 큰 차이도 없다. 다만, 원활한 학습과 개발을 위해 대체로 사용자가 많고, 개발과 지식 공유에 참여하는 커뮤니티의 규모가 크며, 해당 프레임워크를 지원하는 단체가 안정적인 것이 유리할 뿐이다.

이는 글로벌 기업인 구글이 직접 지원하고 관리하는 텐서플로우가 큰 인기를 끄는 이유 중 하나이기도 하다. 그렇지만 텐서플로우가 만능인 것도 아니다. 앞서 서술했듯 각각의 프레임워크는 모두 제각각의 장단점을 갖고 있기 때문이다.

어떤 프레임워크는 대규모 처리에 특화돼 있고, 어떤 것은 간결성, 실험 등에 특화돼 있다. 또 범용성이 높고 쉬운 고레벨 프레임워크의 경우 속도가 느리고, 저레벨의 프레임워크는 대신 최적화와 속도, 구현 가능한 기능의 종류 등에서 우위가 있다. 결국 딥러닝이라고 모두 같은 딥러닝이 아니며, 개발자가 무엇을 익혔고 프로젝트는 어떤 내용을 구현하는가에 따라 각 프레임워크의 가치도 달라진다는 이야기다.

한편 확실한 건 딥러닝 기반의 인공지능 시장은 앞으로도 개척해 나갈 영역이 무한하며 높은 인력 수요 또한 유지될 것이란 사실이다. 개발과 통계, 알고리즘 등에 자신 있는 사람이라면 딥러닝은 지금도 새롭게 도전해볼 만한 영역이다. 아직 이 영역의 전문가가 되기 위한 진입 장벽이 높은 만큼, 당신이 일정한 수준에 도달한 뒤에 기다리고 있을 과실은 더욱 달콤하지 않을까?

딥러닝 프레임워크 주요 특징
딥러닝 프레임워크 주요 특징

 

- 이 글은 테크월드가 발행하는 월간 <Embedded> 2019년 8월호에 게재된 기사입니다.

 


관련기사