15P by xguru 2021-12-20 | favorite | 댓글 1개

- 보통 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

- Google Jax - 고성능 머신러닝 라이브러리 https://news.hada.io/topic?id=5556

2019/2020년에 나왔던 얘기들과 비교해 보는 것도 재미납니다.
- 머신러닝 프레임워크의 현재 [2019] https://news.hada.io/topic?id=696
- 머신러닝 전문가들이 예견하는 2020년의 AI 방향 https://news.hada.io/topic?id=1213

- AI를 독학하고 구글에 들어간 연구원 인터뷰 https://news.hada.io/topic?id=1347
- TensorFlow 생태계: 머신러닝 개발부터 배포까지 https://news.hada.io/topic?id=1757
- 구글이 만든 머신러닝 단기집중과정 with TensorFlow [한국어] https://news.hada.io/topic?id=1052