안녕하세요, @choigww입니다.
머신러닝의 트렌드는 이미 딥러닝으로 넘어 간 모양새입니다. 대용량 데이터와 글, 이미지, 소리와 같은 미디어 타입 데이터에 압도적인 강점을 지닌 딥러닝은 이제 데이터 분야의 명실상부한 현재이자 미래가 되었는데요. 딥러닝에 관심이 있으신 분들이라면 분명히 텐서플로우도 들어 보셨을 겁니다.
2015년 말에 무려 구글이 내놓은 머신러닝 오픈소스 라이브러리. 구글이 내놓았다는 것에서 그다지 많은 설명은 필요하지 않을 것 같습니다. "믿고 쓰는" 구글의 후광으로 학계/ 산업계를 빠르게 선점한 텐서플로우는, 최대 커뮤니티를 확보하면서 딥러닝을 대표하는 프레임워크로 지금까지 군림하고 있지요.
그런데 오늘 Quora에서흥미로운 글을 읽었습니다. "텐서플로우의 미래는 어떨까요?" 라는, 작년 6월쯤 작성된 질문이었는데요. 가장 많은 업보트(upvote)를 받은 답글은 불과 4일 전 작성된 전직 구글 리서치 사이언티스트 Liang Huang의 답변이었습니다. 그리고 이렇게 시작하죠. "미래? 텐서플로우에 미래는 없어."
"Future? There is no future for TensorFlow."
서두에서 Huang은 텐서플로우가 "구식이 된" Theano에 지나치게 많은 영향을 받았으며, 최초 설계부터 근본적으로 잘못 되었다고 지적합니다. Theano로부터 static (computational) graph와 같은 로직을 물려받아 시스템을 훨씬 개선했음에도 불구하고, 사용성과 디버깅에 있어서 dynamic (computational) graph를 채택한 PyTorch와 Dynet에게 밀린다는 것인데요.
"근본적 결함"에 대해 보다 구체적인 내용은 더 이상 언급되지 않았네요. 그 이후의 내용은 간략히 이렇습니다.
- 구글과 거대한 커뮤니티가 쏟아부은 시간과 노력에도 불구, 설계상의 "실수"를 바로잡기에는 너무 늦었다
- 5-10년 후 텐서플로우는 거의 아무도 쓰지 않을 것이다
- 구글이 Theano가 아닌 Torch의 설계를 베이스로 가져갔다면 PyTorch의 단점으로 지적되는 다중 GPU 환경의 분산 병렬처리와 같은 시스템 확장성 (scalability)까지 극복한 훨씬 강력한 프레임워크가 나왔을 것이다
위의 연장선상에서, 재미있는 글 하나를 더 소개할까 합니다.
Tensorflow Sucks
작년 10월경 작성된 이 글은 아마 현재까지도, 구글 영문 검색에서 쉽게 찾을 수 있는 거의 유일한 "본격적으로 텐서플로우를 욕하는" 글이 아닐까 하는데요. 글쓴이가 흥분을 했는지 어투가 신랄한 편이지만, Huang의 이야기와 같은 맥락에서 들여다보면 좋을 것 같아요.
의도불명의 선언형 프로그래밍 패러다임
- 배우기 어렵고, 쓰기 어렵다.
연구원에게 중요한 유연성(flexibility)이 나쁨
- intermediate layer의 값을 뽑아보려면 손이 많이 감 (그래프로 만들어줘야 하므로)
- 조건부 계층(layer)의 연산은 끔찍할 정도로 시간이 걸림
실무에서도 최고의 선택이 아닌 것은 마찬가지
- 선언형 프레임워크 특성상 디버깅이 어렵다
- 프레임워크 바이너리 파일 용량 (20 MB+)
- 거의 없다시피 한 C++ 도큐멘테이션
다른 프레임워크와의 비교
- 텐서플로우 초창기 개발자 Yangquing Jia은 최근 페이스북으로 이직
- 이직 후, 그의 Caffe2 프로젝트가 급속도로 진전 중
- 중간 계층의 값을 코드 한 줄로 계산해서 확인 가능
- PyTorch는 탑 AI 연구원들로부터 빠르게 인기를 얻고 있음
- "텐서는 탑 AI 연구소 급은 아닌가봐, 구글 미안염"
- 코드 가독성, 직관성, 간결성에서 텐서플로우를 훨씬 앞섬
한편으로는 텐서플로우의 디자인 패러다임에서 오는 단점들보다, 기업용 클라우드 서비스와 연관지어 조금 더 폭넓은 관점으로 딥러닝 프레임워크의 미래를 조망하는 글도 있었습니다. 이 글도 같이 살펴 보겠습니다.
I am going to take the contrarian viewpoint here.
텐서플로우가 딥러닝 프레임워크를 지배하는 이유
- 출시와 함께 전세계적으로 학계와 산업계가 발빠르게 도입했기 때문이라고 생각 (선점효과)
- 개인적으로는 연구 논문에 실린 모델을 빠르게 프로토타이핑할 때 텐서플로우를 사용
- 딥러닝 모델은 일단 구축하면 CNTK / MXNET으로 재구현하는 것이 어렵지 않음
- 반대로 말하면, 프로토타이핑이 아니라면 메리트가 적다고 생각함
클라우드 환경에서의 기업 레벨 딥러닝을 생각해 본다면
- 현재, 기업 레벨(enterprise-level) 머신 러닝에서 딥러닝은 시기상조인 상황
- 아직 로지스틱 회귀 모델이 지배하는 기업 레벨 머신러닝
- 아마존/ MS가 구글보다 훨씬 더 우월한 클라우드를 제공할 것 (+심지어 더 격차가 벌어지는 상황임)
- 각 회사가 자신들의 프레임워크를 하드웨어에 최적화시키려 하는 것은 당연 (ex. AWS에 최적화된 MXNET)
- 자신들의 네이티브 딥러닝 프레임워크를 사용하면 요금을 할인하는 등 방법이 충분히 가능
- 텐서플로우로 프로토타이핑까지는 하겠지만 상용 모델로서는 CNTK/MXNET을 사용할 것
2년 정도 지나, 일단 딥러닝을 둘러싼 과열된 분위기가 가라앉으면
- 개발자들은 결국 대부분의 기업이 요구하는 툴을 선택할 것
- 본격적으로 기업들의 피드백 사이클이 형성되면, 텐서플로우를 능가하는 프레임워크가 출현할 수도 있음
비즈니스 상용 단계에서 논의되지 않는 한, "아직 모른다"
- 딥러닝 프레임워크 경쟁은 이제 막 시작한 단계
- 비즈니스 상용 단계에서 핵심이 될 것은 결국 클라우드 서비스
- 클라우드 서비스는 프레임워크를 포함한 토탈 패키지가 될 것이며
- 사실 프레임워크를 뭘 쓰느냐는 매우 사소한 문제가 될 것
남은 두 가지의 가능성
- 모든 클라우드 서비스 공급자가 자신들의 네이티브 프레임워크 위에서 동작하는 고수준 뉴럴 네트워크 API를 지원하며 표준화되는 가능성
*어쩌면 이걸 Keras가? - 클라우드 인텔리전스보다 더 매력적인 최신 인텔리전스가 등장할 가능성
*NVidea가 독자적인 프레임워크를 들고 나타날 지도 모르는 일
여기까지, 대략 텐서플로우의 미래가 그리 화창하지는 않을 것이라는 의견들을 살펴 보았습니다. 이에 대한 반대 측, 즉 텐서플로우는 여전히 강력하며 유용한 툴이라는 의견은 What do people think of the TensorFlow sucks article? 링크에서 살펴보실 수 있어요. 공격적인 제목 만큼이나, 해외 데이터 사이언티스트 커뮤니티에서는 꽤 거론이 되었나 보네요.
하지만 이 글에서도, 압도적으로 최다 upvote를 받은 답변은 텐서플로우가 과대평가되었다는 내용이네요. 텐서플로우의 단점으로 지적받는 static graph의 경우 성능 최적화를 위한 것이라는 의견, 그리고 점점 그것이 의미가 없어지고 있다는 의견. 사람마다 딥러닝 분야에 대한 지식의 수준, 툴을 사용한 경험의 두께가 다르고, 특기분야와 주관이 다르니 여러 가지 의견이 있을 수 있겠지요.
저는 딥러닝 분야를 발만 살짝 담궈 본 수준이라 엄한 사족은 달지 않겠습니다. 그저 딥러닝을 목표로 나아가는 분들이 한 번쯤 생각해 볼 가치는 있겠다는 생각에 급작스레 정리해 본 포스팅이었습니다. 조금이나마 흥미로운 글이 되었기를 바라며 글을 마칩니다.
Congratulations @choigww! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Award for the number of upvotes received
Click on any badge to view your own Board of Honor on SteemitBoard.
To support your work, I also upvoted your post!
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP
전문가신가봐요!
Wo