본문 바로가기

Etc/GeekNewsWeekly

2022년 PyTorch 와 TensorFlow 비교

 

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2022/

  • 보통 TensorFlow는 산업용, PyTorch는 연구용 이라고 얘기하지만 이건 옛날 정보에 기반한 이야기
  • 실용적인 고려사항 : 보통 3가지 비교로 귀결
    ㅤ→ 모델가용성 : 공개적으로 사용할 수 있는 모델이 얼마나 많은가
    ㅤ→ 배포인프라 : 얼마나 효율적으로 배포가 가능한가
    ㅤ→ 에코시스템 : 다양한 환경/하드웨어

Model Availability

  • PyTorch,TensorFlow 모두 자체 공식 모델 리포지토리가 있음
  • HuggingFace
    ㅤ→ PyTorch 에서만 사용가능한게 85%, 독점이 아닌 모델도 50%는 사용가능. 전체의 16%만 TensorFlow에서 사용 가능(8%만 TF)
    ㅤ→ Top 30 인기 모델들의 경우, 모든게 PyTorch에서 사용 가능하지만 TensorFlow는 그중 18개만 사용 가능
  • 연구 논문
    ㅤ→ 매년 제출되는 논문들에서의 PyTorch 사용량은 계속 증가
    ㅤ→ 2017년 7%에서 시작해서 2021년엔 거의 80%까지 차지
    ㅤ→ TensorFlow 1 의 어려움 때문에 PyTorch를 많이 선택
    ㅤ→ 이런 어려움은 2019년에 나온 TensorFlow 2 에서 많이 개선되었지만, 이미 PyTorch가 연구 중심으로 자리잡음
    ㅤ→ 2018년에 TensorFlow를 썼던 연구자들중의 55%가 2019년 PyTorch 로 옮김
    ㅤ→ 2018년에 PyTorch를 사용한 연구자중의 85%는 2019년에도 PyTorch를 사용
  • Papers With Code 자료에 따르면
    ㅤ→ Tensorflow는 계속 줄어들고, PyTorch 및 다른 프레임워크들이 점점 많이 사용중
    ㅤ→ TensorFlow 2 출시후에도 이런 추세는 계속. 기존 TF1에서 겪었던 어려움을 되돌리기엔 역부족
  • 결론적으로 모델 가용성 면에서는 PyTorch가 시장을 장악
  • 그외 예외들
    ㅤ→ GoogleAI 는 TensorFlow 를 주로 사용했으나, Google Brain은 JAX/Flax 사용
    ㅤ→ DeepMind 도 JAX를 도입하고, Jax 용 신경망 라이브러리인 Haiku 도 개발 (Sonnet for JAX)
    ㅤ→ JAX : 구글이 따로 만든 프레임워크. 연구쪽에서 인기를 끌어가는 중

Deployment

  • TensorFlow는 처음부터 배포 지향 어플리케이션에 최적이었음
    ㅤ→ TensorFlow Serving, TensorFlow Lite 등으로 클라우드/서버/모바일/IoT 기기등에 고통없이 배포 가능
  • PyTorch는 배포관점에서 매우 부진했지만, 최근 몇년간 이 격차를 줄이기 위해 노력
    ㅤ→ TorchServe 와 PyTorch Live
  • 결론적으로, 아직은 배포관점에서는 TensorFlow 가 더 뛰어남
    ㅤ→ 특히 TFLite 를 로컬 및 Coral 기기에서 사용 가능한 부분은 다른 산업에도 꼭 필요
    ㅤ→ PyTorch Live는 모바일에만 집중하며, TorchServe 는 아직 초기 상태

Ecosystems

  • PyTorch
    ㅤ→ 공식 PyTorch Hub가 존재 : Audio/Vision/NLP 등 다양한 모델을 가지고 있음
    ㅤ→ SpeechBrain : 공식 오픈소스 스피치 툴킷, ASR/화자인식,인증 등 많은 기능을 가지고 있음
    ㅤ→ Fast.ai 를 비롯해서 다양한 도구와 라이브러리들이 있음
    ㅤ→ TorchElastic : AWS+Facebook 협업 프로젝트
    ㅤ→ TorchX : 빠른 머신러닝 개발및 배포용 라이브러리
    ㅤ→ PyTorch Lightning : Keras of PyTorch
  • TensorFlow
    ㅤ→ 공식 TensorFlow Hub : BERT를 포함한 다양한 모델
    ㅤ→ Model Garden : SOTA(State-of-the-ART) 모델에 대한 소스코드 저장소
    ㅤ→ TensorFlow Extended(TFX) : 모델 배포를 위한 E2E 플랫폼
    ㅤ→ Vertex AI : 구글 클라우드의 Unified 머신러닝 플랫폼
    ㅤ→ Media Pipe : 얼굴 인식, 손 트래킹, 객체 인식등의 기능을 만드는 머신 러닝 파이프라인을 만드는 멀티모달, 크로스플랫폼 프레임워크
    ㅤ→ Coral : 로컬 AI를 내장한 제품(IOT)을 지원하기 위해 만들어진 툴킷
    ㅤ→ TensorFlow.js : 머신러닝을 위한 JavaScript 라이브러리
    ㅤ→ TensorFlow Cloud : 로컬 개발환경을 구글 클라우드에 연결
    ㅤ→ Colab : 클라우드기반 노트북 환경 (Jupyter와 비슷)
    ㅤ→ Playground : 신경망 기본을 이해하기 좋은 교육 도구
    ㅤ→ Datasets : 구글이 정기적으로 공개하는 데이터셋을 저장(PyTorch 사용자도 이용가능)
  • 결론적으로, TensorFlow가 에코시스템 은 더 뛰어남
    ㅤ→ 그동안 구글이 많이 투자 했음
    ㅤ→ 구글 클라우드와 연결하거나, Coral 기기등으로 포팅하기 쉽게하는 것등도 몇몇 분야에서 더 훌륭

그럼 둘 중에 뭘써야 할까 ?

  • 해당 산업에 있다면, 어떤 인더스트리에 있는지에 따라 선택이 다를 수 있음 (원문에 쉬운 선택을 위한 플로우 차트 제공)
    ㅤ→ 산업 환경에서 딥러닝을 쓴다면 이미 TensorFlow를 쓰고 있을 것이고 그대로 가도 됨
    ㅤ→ TorchServe 때문에 PyTorch도 고려해 볼 수는 있음
    ㅤ→ 모바일 이라면 PyTorch Live 이용, 오디오/비디오 입력이라면 TensorFlow를
    ㅤ→ IoT에서 AI를 사용한다면 TensorFlow Lite + Coral
  • 연구자라면 ?
    ㅤ→ 이미 아마도 PyTorch를 쓰고 있을 것이고 그대로 가도 됨
    ㅤ→ 특별한 예외로 Reinforcement Learning을 한다면 TensorFlow를 고려
    ㅤ→ TensorFlow를 쓰기 싫다면 JAX도 한번 고려해 볼만
    ㅤ→ 뭘 선택하든, 2022년엔 JAX는 지켜봐야 함
  • 교수라면 ?
    ㅤ→ 교육 과정의 목표에 따라 다를 수 있음
    ㅤ→ 현업에서 바로 머신 러닝을 사용할 엔지니어를 배출하려면 TensorFlow
    ㅤ→ 딥러닝 과 딥러닝 모델에 대해 이해하려면 PyTorch
  • 커리어 변경을 한다면 ?
    ㅤ→ PyTorch / TensorFlow 둘 다 좋은 옵션
    ㅤ→ 더 사용하기 쉬운 것을 선택할 것
    ㅤ→ 특정한 프레임워크에 귀속되지 않는 다면 업계에서 표준으로 사용되는 TensorFlow 가 나을 것
    ㅤ→ 구인/구직 시에 TensorFlow 쪽이 더 나았음
  • 취미로 딥러닝을 한다면?
    ㅤ→ 뭘 하려는지에 따라 다르지만, 기본적으로 PyTorch가 나음
  • 딥러닝 완전 초보자라면 ?
    ㅤ→ Keras 로 시작하는 것을 추천
    ㅤ→ Python 네이티브와 비슷한 환경을 찾는다면 PyTorch, 특히 PyTorch Lightning

'Etc > GeekNewsWeekly' 카테고리의 다른 글

22.05.23 GeekNews Weekly  (0) 2022.08.24
Things that used to be hard and are now easy  (0) 2022.08.23
22.05.03 GeekNews Weekly  (0) 2022.08.23
22.04.25 GeekNews Weekly  (0) 2022.08.23
22.04.18 GeekNews Weekly  (1) 2022.08.23