안녕하시요 교수님 강의와 별개로 궁금한게 생겨서 질문드립니다:) 최근에 논문이 대부분 파이토치로 구현되어서 왜 파이토치인지가 궁금합니다. 대부분 사람들은 파이썬스러워서 좋다고 하는데..제가 볼때는 텐써플로우보다 가독성도 떨어지고 코드의 길이도 너무 길어서 별로인것처럼 보이는데 왜 파이토치인가요?
텐써플로우 파이토치
Jaewoo Choi
작성일
21.08.05 02:56
조회수
227
댓글 1
안녕하십니까,
파이토치가 연구원들로 부터 인기를 얻기 된 이유중에 제일 큰 이유라면 개인적으로는 tensorflow 1.x의 여러가지 이슈 때문이라고 생각합니다. tensorflow 1.x를 오랫동안 써오신 분들이라면 싫어할 소리겠지만, tensorflow 1.x는 개발 생산성이 좋다고 표현하기는 어렵습니다. 딥러닝 로직을 구현하기 위해 너무 엔지니어링적으로 많은 API를 작성하도록 요구하고 있기 때문입니다. 한마디로 내부적으로 감춰져야할 불필요한(?) 로직을 개발시에 작성하도록 요구하고 있습니다(개인적으로는 Python 패키지라기 보다 전형적인 컴파일러 언어 기반의 패키지에 더 가깝게 API가 작성되어 있습니다)
개인적으로는 구글의 Tensorflow 로드맵 관리 실패라고 생각합니다. 구글의 연구원인 프랑소와 숄레가 기존 Deep learning 딥러닝의 복잡하고, 비직관적인 API와 Network 구성요소들을 Keras 를 통해 보다 쉽고, 직관적인 API와 딥러닝 구현 방식을 제시하였을 때 이를 초창기에 적극 수행하였거나, 적어도 2018년 이전에 tensorflow 2.x와 같이 keras를 전면에 내세웠다면 pytorch가 지금처럼 연구원들로 부터 확산되기는 어려울 것이라고 생각합니다.
말씀하신 대로 pytorch가 tf.keras에 비해서는 구현 코드가 약간은 깁니다. pytorch는 기본적으로 객체지향 기반에서 functional을 보조적으로 사용하는데 비해서, tf.keras는 functional을 기반으로 하되, 객체지향을 수용할 수 있도록 되어 있습니다. 그리고 딥러닝 모델의 구현 메커니즘을 자세하게 몰라도 자동적으로 이들을 구현해주는 기능이 더 많아서 pytorch보다는 코드가 더 간결해지는 장점이 있습니다.
그런데 연구원들이 keras 보다 pytorch(그러니까 tf.keras 이전에 Generic keras)를 선호한 이유는 (개인적으로는) 자동적으로 구현된 감춰져 있는 로직들에 대한 customized된 변경이 필요했는데 이들을 변경하는 로직이나 documentation이 불충분 했고, 또한 논문에 수록될 정도의 새로운 테크닉을 구현하려면 결국의 keras의 backend인 tensorflow를 어느정도 알아야 하는 이슈에 부딫혔기 때문이라고 생각합니다.
pytorch는 (제가 보기에) 후발 주자로서 tensorflow의 문제점과 keras의 장점을 잘 혼합해서 만들었습니다. 물론 keras를 주로 사용하신 분들이라면 pytorch에서 loss, optimizer를 분리하고, 딥러닝의 기반 로직을 확실히 알아야 프로그램 구성 로직을 이해할 수 있도록 설계된 부분에 대해서는 맘에 들지 않을 것입니다.
하지만 그런 부분은 새로운 기술을 개발해야하는 연구원들에게는 그렇게 큰 문제는 아닐 것입니다. 그리고 구글의 딥러닝 독점(?)에 대한 반감(?)도 어느정도 작용하지 않았나 싶습니다. 또한 pytorch 역시 매우 뛰어난 framework입니다. 코드의 디버깅이 쉽고, 버전에 따른 오류도 상대적으로 적습니다.
결론적으로 말씀드리면 pytorch에 대한 연구원들의 선호는 tensorflow 1.x에 대한 반발로 부터 시작되었지만, pytorch의 안정성, 쉬운 디버깅등으로 인정을 받게 되면서 인기가 더욱 높아진것 같습니다.
답글