[서비스개발팀 한현준]
서론
Tensorflow와 PyTorch는 기계 학습에 있어서 가장 인기 있는 라이브러리들입니다. AI 서비스를 개발하는 개발자나 모델을 연구하는 연구자들은 초기에 라이브러리 선택에 있어서 어려움을 겪곤 합니다. 또한 라이브러리 버전이 올라감에 따라 변경된 사항이 많아졌기 때문에 라이브러리 선택하는데 있어 가이드를 제공하고자 합니다.
Google – Tensorflow
Tensorflow는 Google Brain Team이 연구와 제품 개발을 목적으로 만들었으며 호환 언어로는 C++, Python, JavaScript, Swift 등이 있습니다. 1.x, 2.x 버전을 거쳐 Stable 2.4 버전까지 출시한 상태입니다. 1.x 와 2.x 버전의 차이점으로는 Session 사용이 거의 불필요해졌으며 선언 최소화 및 Keras가 내재화 되었습니다. 또한 Function화를 통한 속도 개선이 있었습니다. 그 이외에도 Tensorflow-Lite – 모바일/임베딩 지원, TensorflowJS – 브라우저, Node.js 지원 등 많은 변경점들이 있습니다. 하지만 이러한 변화가 기존에 사용했던 사용자의 코드를 변경해야 하는 불편함을 초래했습니다. 물론 변환 하는 모듈을 지원했지만 버그 또한 존재했기 때문에 많은 사용자의 이탈이 있기도 했습니다.
Facebook – PyTorch
PyTorch는 Facebook AI Research Lab에서 연구 목적으로 개발한 라이브러리입니다. 호환되는 언어로 C++, Python이 있습니다. 초기엔 커뮤니티가 비교적 작았지만 폭발적으로 상승하여 학회 논문 자료에서는 Tensorflow를 추월한 상태입니다. PyTorch로 많은 연구 분야의 유저의 이동이 있었던 이유는 동적 그래프 사용이 가능한 점이 크게 작용했습니다. 동적 그래프를 통해 실시간으로 데이터를 바꿔 넣어 비교가 가능했기 때문에 RNN, CNN, GAN 연구에 유리 했기 때문입니다. 또한 코드가 Tensorflow에 비해 난이도가 상대적으로 쉽기 때문에 크게 성장했다고 생각합니다.
Tensorflow VS PyTorch
인공지능 분야 학회 별 논문 그래프 입니다. 점선으로 표현된 Tensorflow에 비해 실선으로 표현된 PyTorch의 논문의 추이가 높아짐을 알 수 있습니다. 학회 논문을 연구하는데 있어서는 PyTorch가 좀 더 유리한 상황이라고 생각됩니다.
Tensorflow | PyTorch | |
Github Repository | 108k | 68k |
시각화 | Tensorboard | Visdom Tensorboard[1.2 Pytorch] |
그래프 정의 | Static graph, Dynamic graph[tensorflow 2.0] | Dynamic graph |
디버깅 | tfdbg | Python standard debuggers |
모델 배포 | Tensorflow Serving | TorchServe |
Mobile Support | O | O |
각 라이브러리를 기능적으로 비교해 봤을 때, 버전이 올라가면서 점점 대동소이한 경향이 있는 것 같습니다. 처음에는 두 라이브러리가 많은 차이점이 있었지만 시간이 지남에 따라 서로의 좋은 기능들을 가지게 되어 차이점이 크게 줄었습니다.
그럼에도 여전히 두 라이브러리의 제약들은 존재합니다. Tensorflow는 여전히 동적 그래프 구성이 비교적 어려우며 디버깅 또한 학습이 필요합니다. PyTorch는 아직 공개 되어 있는 소스가 적고 다른 환경의 지원도 어려우며 배포가 어렵고 무엇보다 산업에서 요구하는 다양한 제약 사항을 맞추기 어렵습니다. 이러한 점을 참고하여 초점이 연구 목적인지, 상품 및 서비스 제공인지 명확히 파악 후 프로젝트를 진행 한다면 라이브러리 선택에 있어서 도움이 될 것입니다.
결론
Tensorflow – 상품 구축 목적. Browser, Node.js, Embeded, Mobile 환경 지원. 배포 용이. NLP 등.
Pytorch – 연구 목적. Python에 익숙한 환경. 비교적 낮은 난이도. RNN, CNN, GAN 등.
Tensorflow와 Pytorch는 모두 강력한 ML 라이브러리입니다. 목적에 맞게 라이브러리를 선택한다면 좀 더 생산성 있는 연구/개발이 이루어질 것이라고 생각합니다.
Reference
https://towardsdatascience.com/pytorch-vs-tensorflow-2021-d403504d7bc3
https://builtin.com/data-science/pytorch-vs-tensorflow
https://www.imaginarycloud.com/blog/pytorch-vs-tensorflow/