DataScience
article thumbnail

원문 

 

파이토치와 텐서플로는 오늘날 가장 인기 있는 두 가지 딥 러닝 프레임워크입니다. 어떤 프레임워크가 더 우수한지에 대한 논쟁은 오랫동안 지속되어 온 논쟁거리이며, 각 진영은 열렬한 지지자를 보유하고 있습니다.

PyTorch와 TensorFlow는 비교적 짧은 기간 동안 매우 빠르게 발전해 왔기 때문에 토론 환경은 계속 진화하고 있습니다. 오래되거나 불완전한 정보가 넘쳐나며, 특정 영역에서 어떤 프레임워크가 우위에 있는지에 대한 복잡한 논의가 더욱 난해해지고 있습니다.

텐서플로는 업계 중심 프레임워크로, 파이토치는 연구 중심 프레임워크로 정평이 나 있지만, 이러한 개념은 부분적으로 오래된 정보에서 비롯된 것임을 알게 될 것입니다. 2023년에는 어떤 프레임워크가 최고로 군림할지에 대한 논의가 훨씬 더 미묘해질 것입니다. 지금부터 이러한 차이점을 살펴보겠습니다.


실용적인 고려 사항

PyTorch와 TensorFlow는 모두 고유한 개발 스토리와 복잡한 설계 결정 이력을 가지고 있습니다. 이전에는 이 때문에 두 프레임워크를 비교하는 것이 현재 기능에 대한 복잡한 기술적 논의와 향후 기능에 대한 추측으로 이어졌습니다. 두 프레임워크 모두 초창기 이후 기하급수적으로 발전해 왔기 때문에, 현재로서는 이러한 기술적 차이점 중 상당수가 흔적만 남았습니다.


다행히도 두 프레임워크에 대한 논쟁은 현재 세 가지 실용적인 고려 사항으로 요약할 수 있습니다:

  • 모델 가용성: 딥 러닝의 영역이 매년 확장되고 모델도 점점 더 커지고 있기 때문에, 최첨단(SOTA) 모델을 처음부터 학습하는 것은 더 이상 불가능합니다. 다행히도 공개적으로 사용할 수 있는 SOTA 모델이 많이 있으므로 가능한 경우 이를 활용하는 것이 중요합니다.
  • 배포 인프라: 성능이 좋은 모델을 학습해도 이를 활용할 수 없다면 아무 소용이 없습니다. 특히 마이크로서비스 비즈니스 모델의 인기가 높아짐에 따라 배포 시간을 단축하는 것이 무엇보다 중요하며, 효율적인 배포는 머신 러닝을 중심으로 하는 많은 비즈니스의 성패를 좌우할 수 있는 잠재력을 가지고 있습니다.
  • 에코시스템: 딥러닝은 더 이상 고도로 통제된 환경의 특정 사용 사례에만 국한되지 않습니다. AI는 수많은 산업에 새로운 힘을 불어넣고 있으므로 모바일, 로컬 및 서버 애플리케이션 개발을 용이하게 하는 더 큰 에코시스템 내에 자리 잡은 프레임워크가 중요합니다. 또한 Google의 Edge TPU와 같은 전문화된 머신 러닝 하드웨어의 출현은 성공적인 실무자가 이 하드웨어와 잘 통합될 수 있는 프레임워크로 작업해야 한다는 것을 의미합니다.


이 세 가지 실용적인 고려 사항을 차례로 살펴본 다음, 각 영역에서 어떤 프레임워크를 사용할 것인지에 대한 권장 사항을 제공하겠습니다.

 

PyTorch와 TensorFlow - 모델 가용성 비교

성공적인 딥러닝 모델을 처음부터 구현하는 것은 매우 까다로운 작업일 수 있으며, 특히 엔지니어링 및 최적화가 어려운 NLP와 같은 애플리케이션의 경우 더욱 그렇습니다. SOTA 모델의 복잡성이 증가함에 따라 소규모 기업에서는 트레이닝과 튜닝이 불가능에 가까울 정도로 비현실적인 작업이 되고 있습니다. 스타트업과 연구자 모두 이러한 모델을 자체적으로 활용하고 탐색할 수 있는 컴퓨팅 리소스가 부족하기 때문에 전이 학습, 미세 조정 또는 즉시 사용 가능한 추론을 위해 사전 학습된 모델에 액세스하는 것이 매우 중요합니다.

모델 가용성의 영역에서 PyTorch와 TensorFlow는 극명하게 갈립니다. 아래에서 생태계 섹션에서 살펴보겠지만, PyTorch와 TensorFlow 모두 자체 공식 모델 리포지토리를 가지고 있지만 실무자는 다른 소스의 모델을 활용하고 싶을 수도 있습니다. 각 프레임워크의 모델 가용성을 정량적으로 살펴보겠습니다.

 

허깅페이스

HuggingFace를 사용하면 단 몇 줄의 코드만으로 훈련되고 조정된 SOTA 모델을 파이프라인에 통합할 수 있습니다.

PyTorch와 TensorFlow의 HuggingFace 모델 가용성을 비교해보면 그 결과가 놀랍습니다. 아래에는 HuggingFace에서 사용할 수 있는 모델 중 PyTorch 또는 TensorFlow 전용이거나 두 프레임워크 모두에서 사용할 수 있는 모델의 총 개수가 표시된 차트가 나와 있습니다. 보시다시피, 파이토치에서만 사용할 수 있는 모델의 수는 경쟁사를 완전히 압도합니다. 작년의 85%에서 거의 92%에 달하는 모델이 PyTorch 전용입니다. 반면, TensorFlow 전용 모델은 약 8%에 불과하며, 전체 모델의 약 14%만이 TensorFlow에서 사용할 수 있습니다(작년의 16%에서 감소). 또한, 2022년에는 45,000개 이상의 PyTorch 전용 모델이 추가된 반면, TensorFlow 전용 모델은 약 4,000개에 불과했습니다.

 

허깅페이스에서 가장 인기 있는 30개 모델로만 범위를 좁히면 흥미로운 결과를 볼 수 있습니다. 작년과 마찬가지로 모든 모델이 파이토치에서 사용할 수 있고 텐서플로 전용 모델은 없지만, 두 가지 모두에서 사용할 수 있는 모델 수가 19개에서 23개로 증가하여 가장 인기 있는 모델에 텐서플로를 적용하려는 노력이 있을 수 있음을 알 수 있습니다.

 

연구 논문

특히 연구 실무자에게는 최근에 발표된 논문의 모델에 액세스하는 것이 매우 중요합니다. 탐색하려는 새로운 모델을 다른 프레임워크에서 다시 만들려고 하면 귀중한 시간을 낭비하게 되므로 리포지토리를 복제하여 즉시 실험을 시작할 수 있으면 중요한 작업에 집중할 수 있습니다.

사실상의 연구 프레임워크인 PyTorch를 고려할 때, HuggingFace에서 관찰한 트렌드가 연구 커뮤니티 전반으로 이어질 것으로 예상되며, 저희의 직관은 정확합니다.

지난 몇 년 동안 상위 8개 연구 저널의 데이터를 집계한 결과, 아래 그래프는 PyTorch 또는 TensorFlow를 사용하는 출판물의 상대적 비율을 보여줍니다. 그래프에서 볼 수 있듯이 PyTorch의 채택은 매우 빨랐으며, 불과 몇 년 만에 약 7%에 불과하던 사용률이 PyTorch 또는 TensorFlow를 사용하는 논문의 거의 80%에서 사용하게 되었습니다.

이렇게 빠르게 채택된 이유 중 상당 부분은 연구 과정에서 TensorFlow 1의 문제가 악화되어 연구자들이 새로운 대안인 PyTorch로 눈을 돌리게 되었기 때문입니다. 2019년 TensorFlow 2가 출시되면서 TensorFlow의 많은 문제가 해결되었지만, 적어도 커뮤니티의 관점에서 볼 때 PyTorch는 연구 중심 프레임워크로서 자리를 유지할 수 있을 만큼 큰 추진력을 발휘했습니다.

프레임워크를 마이그레이션한 연구자의 비율을 살펴보면 동일한 패턴을 확인할 수 있습니다. 2018년과 2019년에 파이토치 또는 텐서플로우를 사용했던 저자들의 출판물을 살펴보면, 2018년에 텐서플로우를 사용했던 저자의 대다수가 2019년에 파이토치로 마이그레이션한 반면(55%), 2018년에 파이토치를 사용했던 저자의 대다수는 2019년에 파이토치(85%)를 그대로 사용했습니다. 이 데이터는 아래 산키 다이어그램에서 시각화되어 있으며, 왼쪽은 2018년, 오른쪽은 2019년에 해당합니다. 데이터는 2018년 각 프레임워크의 사용자 비율을 나타내며, 전체 숫자는 아닙니다.

주의 깊은 독자라면 이 데이터가 TensorFlow 2 출시 이전의 데이터라는 것을 알 수 있지만, 다음 섹션에서 살펴보겠지만 이 사실은 연구 커뮤니티에서는 관련이 없습니다.

 

Papers with Code(코드가 있는 논문)

마지막으로, 머신 러닝 논문, 코드, 데이터 세트 등으로 무료 오픈 리소스를 제공하는 것을 사명으로 하는 웹사이트인 Papers with Code의 데이터를 살펴봅니다. 2017년 말부터 이번 분기까지 분기별로 집계된 데이터를 통해 시간 경과에 따라 PyTorch, TensorFlow 또는 다른 프레임워크를 사용하는 논문의 비율을 도표로 표시했습니다. 이번 분기에 생성된 3,319개의 리포지토리 중 70%에 가까운 3,319개의 리포지토리가 PyTorch로 구현된 반면, TensorFlow로 구현된 논문은 4%에 불과했습니다(작년의 11%에서 감소).

반대로 TensorFlow의 사용은 꾸준히 감소하고 있습니다. 2019년에 TensorFlow 1을 사용하는 데 어려움을 겪었던 많은 문제를 해결한 TensorFlow 2가 출시되었지만 이러한 추세를 되돌리기에는 충분하지 않았습니다. TensorFlow 2가 출시된 이후에도 TensorFlow의 인기는 거의 단조로운 감소세를 보이고 있습니다.

 

모델 가용성 - 최종 결론

위의 데이터에서 파이토치가 현재 연구 환경을 지배하고 있다는 것을 알 수 있습니다. TensorFlow 2는 연구에 TensorFlow를 훨씬 더 쉽게 활용할 수 있게 해주었지만, PyTorch는 연구자들이 TensorFlow로 돌아가서 다시 시도할 이유를 제공하지 못했습니다. 게다가 TensorFlow 1의 이전 연구와 TensorFlow 2의 새로운 연구 간의 하위 호환성 문제는 이 문제를 더욱 악화시킬 뿐입니다.

현재로서는 커뮤니티에서 널리 채택되고 대부분의 출판물/사용 가능한 모델에서 PyTorch를 사용한다는 이유만으로 연구 분야에서 확실한 승자는 PyTorch입니다.

몇 가지 주목할 만한 예외/주의 사항이 있습니다:

  • 구글 브레인: Google Brain은 JAX를 많이 사용하며, JAX용 Google의 신경망 라이브러리인 Flax를 사용합니다.
  • 딥마인드: 딥마인드는 2016년에 텐서플로우 사용을 표준화했지만, 2020년에는 연구 가속화를 위해 JAX를 사용한다고 발표했습니다. 이 발표에서는 JAX 에코시스템에 대한 개요, 특히 JAX 기반 신경망 라이브러리인 하이쿠에 대해서도 설명했습니다.
    딥마인드는 연구용으로 맞춤화되어 "연구용 버전의 Keras"라고도 불리는 TensorFlow용 고급 API인 Sonnet을 만들었는데, 이는 연구에 TensorFlow를 사용하려는 분들에게 유용할 수 있습니다. 개발 속도가 느리다는 점에 유의하세요. 또한, 딥마인드의 Acme 프레임워크는 강화 학습 실무자에게 필수적일 수 있습니다.
  • OpenAI: 반면 OpenAI는 2020년에 내부적으로 PyTorch의 사용을 표준화했지만, 강화 학습 사용자를 위해 다시 한 번 이전 베이스라인 리포지토리를 텐서플로로 구현했습니다. 베이스라인은 강화 학습 알고리즘의 고품질 구현을 제공하므로 강화 학습 실무자에게는 텐서플로우가 최선의 선택이 될 수 있습니다.
  • JAX: Google에는 연구 커뮤니티에서 인기를 얻고 있는 JAX라는 또 다른 프로젝트가 있습니다. JAX는 어떤 의미에서 파이토치나 텐서플로에 비해 오버헤드가 훨씬 적지만, 기본 철학이 파이토치나 텐서플로와 다르기 때문에 JAX로 마이그레이션하는 것은 대부분의 경우 좋은 선택이 아닐 수 있습니다. JAX를 활용하는 모델/논문이 점점 더 많아지고 있으며, 매우 빠른 속도로 개발되고 있습니다. 작년에는 JAX의 미래가 불투명했지만, 이제는 JAX가 계속 유지될 것임이 분명해졌습니다.

텐서플로우가 지배적인 연구 프레임워크로 다시 자리 잡으려면 불가능하지는 않더라도 길고 힘든 여정이 기다리고 있습니다.
파이토치 대 텐서플로 토론의 1라운드는 파이토치가 승리했습니다.

 

PyTorch와 TensorFlow - 배포

추론의 관점에서 볼 때 최첨단(SOTA) 모델을 사용하여 최첨단 결과를 얻는 것이 딥 러닝 애플리케이션의 성배이지만, 이러한 이상은 항상 실용적이거나 업계 환경에서 달성 가능한 것은 아닙니다. SOTA 모델에 대한 액세스는 그 인텔리전스를 실행 가능한 것으로 만드는 힘들고 오류가 발생하기 쉬운 프로세스가 있다면 무의미합니다. 따라서 어떤 프레임워크가 가장 뛰어난 모델에 액세스할 수 있는지를 고려하는 것 외에도 각 프레임워크의 엔드투엔드 딥러닝 프로세스를 고려하는 것이 중요합니다.

TensorFlow는 처음부터 배포 지향 애플리케이션을 위한 프레임워크로 사용되어 왔으며, 그럴 만한 이유가 있습니다. TensorFlow에는 엔드투엔드 딥 러닝 프로세스를 쉽고 효율적으로 만들어주는 수많은 관련 도구가 있습니다. 특히 배포의 경우, TensorFlow Serving과 TensorFlow Lite를 사용하면 클라우드, 서버, 모바일 및 IoT 장치에 손쉽게 배포할 수 있습니다.

PyTorch는 배포 측면에서 매우 부족했지만 최근 몇 년 동안 이 격차를 좁히기 위해 노력해 왔습니다. 작년에 TorchServe가 도입되고 불과 몇 주 전에 PyTorch Live가 도입되면서 절실히 필요했던 네이티브 배포 도구가 생겼지만, PyTorch는 업계 환경에서 사용할 가치가 있을 만큼 배포 격차를 좁혔나요? 한 번 살펴보겠습니다.

 

TensorFlow

TensorFlow는 추론 성능에 최적화된 정적 그래프를 통해 확장 가능한 프로덕션을 제공합니다. TensorFlow로 모델을 배포할 때는 애플리케이션에 따라 TensorFlow Serving 또는 TensorFlow Lite 중 하나를 사용합니다.


TensorFlow Serving

TensorFlow Serving은 사내 또는 클라우드 등 서버에 TensorFlow 모델을 배포할 때 사용하는 것으로, TensorFlow Extended(TFX) 엔드투엔드 머신 러닝 플랫폼 내에서 사용됩니다. Serving을 사용하면 모델 태그를 사용하여 모델을 잘 정의된 디렉터리에 쉽게 직렬화하고, 서버 아키텍처와 API를 정적으로 유지하면서 추론 요청을 하는 데 사용할 모델을 선택할 수 있습니다.

Serving을 사용하면 고성능 RPC를 위한 Google의 오픈 소스 프레임워크를 실행하는 특수 gRPC 서버에 모델을 쉽게 배포할 수 있습니다. gRPC는 다양한 마이크로서비스 생태계를 연결하기 위해 설계되었으므로 이러한 서버는 모델 배포에 매우 적합합니다. 전체적으로 Vertex AI를 통해 Google Cloud와 긴밀하게 통합되어 있으며, Kubernetes 및 Docker와 통합됩니다.


TensorFlow Lite

TensorFlow Lite(TFLite)는 모바일 또는 IoT/임베디드 장치에 TensorFlow 모델을 배포할 때 사용합니다. TFLite는 이러한 디바이스에 맞게 모델을 압축하고 최적화하며, 지연 시간, 연결성, 개인 정보 보호, 크기, 전력 소비 등 온디바이스 인공 지능에 대한 5가지 제약 조건을 보다 광범위하게 해결합니다. 동일한 파이프라인을 사용하여 표준 Keras 기반 SavedModel(Serving과 함께 사용)과 TFLite 모델을 동시에 내보내므로 모델 품질을 비교할 수 있습니다.

TFLite는 Android와 iOS는 물론 마이크로컨트롤러(ARM, Bazel 또는 CMake 포함) 및 임베디드 Linux(예: Coral 장치)에 모두 사용할 수 있습니다. Python, Java, C++, JavaScript, Swift(올해 기준 아카이브됨)를 위한 TensorFlow의 API는 개발자에게 다양한 언어 옵션을 제공합니다.


PyTorch

PyTorch는 배포를 더 쉽게 만드는 데 투자해 왔으며, 이전에는 이 분야에서 부진한 것으로 악명이 높았습니다. 이전에는 파이토치 사용자가 모델 위에 REST API를 구축하기 위해 Flask나 Django와 같은 것을 사용해야 했지만, 이제는 TorchServe와 PyTorch Live의 형태로 기본 배포 옵션이 제공됩니다.


TorchServe

TorchServe는 AWS와 Facebook(현재 Meta)의 협업으로 탄생한 오픈 소스 배포 프레임워크로, 2020년에 출시되었습니다. 엔드포인트 사양, 모델 아카이빙, 메트릭 관찰과 같은 기능을 갖추고 있지만, 아직 TensorFlow의 대안보다 오래되었습니다. TorchServe에서는 REST 및 gRPC API가 모두 지원됩니다.


PyTorch LIVE

PyTorch는 2019년에 Android, iOS, Linux에 최적화된 머신 러닝 모델을 배포하기 위한 엔드투엔드 워크플로우를 만들기 위해 설계된 PyTorch Mobile을 처음 출시했습니다.

모바일을 기반으로 2022년 말에 파이토치 라이브가 출시되었습니다. 이 솔루션은 JavaScript와 React Native를 사용하여 관련 UI를 갖춘 크로스 플랫폼 iOS 및 Android AI 기반 앱을 생성합니다. 온디바이스 추론은 여전히 파이토치 모바일에서 수행됩니다. 라이브는 부트스트랩을 위한 예제 프로젝트와 함께 제공되며, 향후 오디오 및 비디오 입력을 지원할 계획입니다.

 

 

배포 - 결론

현재 배포 측면에서는 여전히 텐서플로우가 우위를 점하고 있습니다. Serving과 TFLite는 파이토치 경쟁사보다 더 강력하며, 구글의 Coral 기기와 함께 로컬 AI에 TFLite를 사용할 수 있는 기능은 많은 산업에서 반드시 필요한 기능입니다. 반면 파이토치 라이브는 모바일에만 초점을 맞추고 있으며, 토치서브는 아직 초기 단계에 머물러 있습니다. 모델이 엣지 디바이스가 아닌 클라우드에서 실행되는 애플리케이션의 경우 경쟁이 더 치열합니다. 향후 몇 년 동안 배포 환경이 어떻게 변화할지 지켜보는 것은 흥미로울 것이지만, 현재로서는 파이토치 대 텐서플로 논쟁의 2라운드는 텐서플로의 승리로 돌아갑니다.

모델 가용성 및 배포 문제에 대한 마지막 참고 사항입니다: TensorFlow 배포 인프라를 사용하고 싶지만 PyTorch에서만 사용할 수 있는 모델에 액세스하고 싶은 경우, ONNX를 사용하여 PyTorch에서 TensorFlow로 모델을 포팅하는 것을 고려해 보세요.


PyTorch와 TensorFlow - 에코시스템 비교

2023년에 파이토치와 텐서플로우를 구분하는 마지막 중요한 고려사항은 각자가 속한 에코시스템입니다. PyTorch와 TensorFlow는 모두 모델링 관점에서 유능한 프레임워크이며, 현 시점에서 두 프레임워크의 기술적 차이는 쉬운 배포, 관리, 분산 교육 등을 위한 도구를 제공하는 주변 에코시스템보다 덜 중요합니다. 이제 각 프레임워크의 생태계를 살펴보겠습니다.

 

파이토치

Hub

허깅페이스와 같은 플랫폼 외에도 사전 학습된 모델과 리포지토리를 공유하기 위한 연구 중심 플랫폼인 공식 PyTorch Hub도 있습니다. Hub에는 오디오, 시각, 자연어 처리 등 다양한 모델이 있습니다. 또한 유명인 얼굴의 고품질 이미지를 생성하기 위한 GAN을 포함한 생성 모델도 있습니다.

 

 

PyTorch-XLA

Google의 클라우드 TPU에서 PyTorch 모델을 훈련하려면 PyTorch-XLA가 적합한 도구입니다. PyTorch-XLA는 이 두 가지를 XLA 컴파일러와 연결하는 Python 패키지입니다. PyTorch-XLA의 GitHub 리포지토리는 여기에서 확인할 수 있습니다.


TorchVision

TorchVision은 PyTorch의 공식 컴퓨터 비전 라이브러리입니다. 여기에는 모델 아키텍처와 인기 있는 데이터 세트를 포함해 컴퓨터 비전 프로젝트에 필요한 모든 것이 포함되어 있습니다. 더 많은 비전 모델을 보려면 TIMM(pyTorch 이미지 모델)을 확인할 수 있습니다. TorchVision GitHub 리포지토리는 여기에서 확인할 수 있습니다.


토치 텍스트

전문 분야가 컴퓨터 비전이 아닌 자연어 처리라면 TorchText를 확인해 볼 수 있습니다. 여기에는 NLP 영역에서 자주 볼 수 있는 데이터 세트와 이러한 데이터 세트 및 기타 데이터 세트에서 작업할 수 있는 데이터 처리 유틸리티가 포함되어 있습니다. 텍스트에 대한 번역 및 요약과 같은 작업을 수행할 수 있도록 fairseq도 확인해 보세요. TorchText GitHub 리포지토리는 여기에서 확인할 수 있습니다.


토치오디오

텍스트를 처리하기 전에 ASR을 사용하여 오디오 파일에서 텍스트를 추출해야 할 수도 있습니다. 이 경우 PyTorch의 공식 오디오 라이브러리인 TorchAudio를 확인해 보세요. TorchAudio에는 DeepSpeech 및 Wav2Vec과 같은 인기 있는 오디오 모델이 포함되어 있으며 ASR 및 기타 작업에 대한 워크스루와 파이프라인을 제공합니다. TorchAudio의 GitHub 리포지토리는 여기에서 확인할 수 있습니다.


스피치브레인

TorchAudio가 원하는 것과 맞지 않는다면 PyTorch용 오픈 소스 음성 툴킷인 SpeechBrain을 확인해 보세요. SpeechBrain은 ASR, 화자 인식, 검증 및 일기 작성 등을 지원합니다! 모델을 구축하지 않고 자동 챕터, 감정 분석, 엔티티 감지 등과 같은 기능을 갖춘 플러그 앤 플레이 도구를 원한다면 AssemblyAI의 자체 음성-텍스트 API를 확인해 보세요.


ESPnet

ESPnet은 엔드투엔드 음성 처리를 위한 툴킷으로, Kaldi의 데이터 처리 스타일과 함께 PyTorch를 사용합니다. ESPnet을 사용하면 엔드투엔드 음성 인식, 번역, 일기 작성 등을 구현할 수 있습니다!


AllenNLP

더 많은 NLP 도구를 찾고 있다면 PyTorch를 기반으로 구축되고 Allen Institute for AI가 지원하는 오픈 소스 NLP 연구 라이브러리인 AllenNLP를 확인해 보세요.


에코시스템 도구

컴퓨터 비전이나 자연어 처리에 맞춤화된 라이브러리 등 유용할 수 있는 다른 라이브러리는 PyTorch의 도구 페이지에서 확인하세요. 여기에는 최신 모범 사례를 사용하여 신경망을 생성하는 데 널리 사용되는 라이브러리인 fast.ai가 포함됩니다.


TorchElastic

TorchElastic은 2020년에 출시되었으며 AWS와 Facebook의 협업의 결과물입니다. 작업자 프로세스를 관리하고 재시작 동작을 조정하는 분산 훈련용 도구로, 훈련에 영향을 주지 않고 동적으로 변경할 수 있는 컴퓨팅 노드 클러스터에서 모델을 훈련할 수 있도록 지원합니다. 따라서 TorchElastic은 서버 유지 관리 이벤트나 네트워크 문제와 같은 문제로 인한 치명적인 장애를 방지하여 훈련 진행 상황을 잃지 않도록 합니다. TorchElastic은 Kubernetes와의 통합 기능을 갖추고 있으며 PyTorch 1.9+에 통합되었습니다.


TorchX

TorchX는 머신 러닝 애플리케이션의 빠른 구축과 배포를 위한 SDK입니다. TorchX에는 지원되는 스케줄러에 분산된 PyTorch 애플리케이션을 실행하기 위한 트레이닝 세션 관리자 API가 포함되어 있습니다. 이 키는 분산된 작업을 실행하는 동시에 TorchElastic에서 로컬로 관리되는 작업을 기본적으로 지원합니다.


Lightning

파이토치 라이트닝은 때때로 파이토치의 케라스라고 불립니다. 이 비교는 약간 오해의 소지가 있지만, Lightning은 PyTorch에서 모델 엔지니어링 및 학습 프로세스를 간소화하는 데 유용한 도구이며, 2019년 처음 출시된 이후 크게 발전해 왔습니다. Lightning은 객체 지향 방식으로 모델링 프로세스에 접근하여 프로젝트 전반에서 활용할 수 있는 재사용 및 공유 가능한 구성 요소를 정의합니다. Lightning에 대한 자세한 내용과 워크플로우가 바닐라 PyTorch와 어떻게 다른지 비교하려면 이 튜토리얼을 확인하세요.

 

 

TensorFlow


Hub


TensorFlow Hub는 미세 조정이 가능한 학습된 머신 러닝 모델의 저장소로, 몇 줄의 코드만으로 BERT와 같은 모델을 사용할 수 있습니다. Hub에는 이미지, 비디오, 오디오 및 텍스트 문제 도메인에 사용할 수 있는 모델과 함께 다양한 사용 사례에 대한 TensorFlow, TensorFlow Lite 및 TensorFlow.js 모델이 포함되어 있습니다. 여기에서 튜토리얼을 시작하거나 여기에서 모델 목록을 확인하세요.


모델 정원


바로 사용할 수 있는 사전 학습된 모델이 애플리케이션에 적합하지 않은 경우, 텐서플로우의 모델 가든은 SOTA 모델의 소스 코드를 제공하는 리포지토리입니다. 이 저장소는 모델의 작동 원리를 이해하거나 필요에 따라 모델을 수정하려는 경우 유용하며, 이는 전이 학습 및 미세 조정 외에 직렬화된 사전 학습된 모델로는 불가능합니다.

모델 가든에는 Google에서 관리하는 공식 모델, 연구자들이 관리하는 연구 모델, 커뮤니티에서 관리하는 선별된 커뮤니티 모델에 대한 디렉토리가 있습니다. 텐서플로우의 장기적인 목표는 허브에서 모델 가든의 사전 학습된 모델 버전을 제공하고, 허브에서 사전 학습된 모델이 모델 가든에서 소스 코드를 사용할 수 있도록 하는 것입니다.


확장(TFX)

TensorFlow Extended는 모델 배포를 위한 TensorFlow의 엔드투엔드 플랫폼입니다. 데이터를 로드, 유효성 검사, 분석 및 변환하고, 모델을 학습 및 평가하고, Serving 또는 Lite를 사용하여 모델을 배포한 다음 아티팩트와 해당 종속성을 추적할 수 있습니다. TFX는 Jupyter 또는 Colab과 함께 사용할 수 있으며, 오케스트레이션을 위해 Apache Airflow/Beam 또는 Kubernetes를 사용할 수 있습니다. TFX는 Google Cloud와 긴밀하게 통합되어 있으며, Vertex AI 파이프라인과 함께 사용할 수 있습니다.


Vertex AI

Vertex AI는 Google Cloud의 통합 머신 러닝 플랫폼입니다. 올해 출시되었으며 GCP, AI Platform, AutoML의 서비스를 하나의 플랫폼으로 통합하는 것을 목표로 합니다. Vertex AI는 서버리스 방식으로 워크플로를 오케스트레이션하여 머신 러닝 시스템을 자동화, 모니터링, 관리할 수 있도록 도와줍니다. 또한 Vertex AI는 워크플로우의 아티팩트를 저장하여 종속성과 모델의 학습 데이터, 하이퍼파라미터, 소스 코드를 추적할 수 있습니다.

 

미디어파이프

MediaPipe는 얼굴 인식, 다중 손 추적, 물체 감지 등에 사용할 수 있는 멀티모달, 크로스 플랫폼 적용 머신 러닝 파이프라인을 구축하기 위한 프레임워크입니다. 이 프로젝트는 오픈 소스이며 Python, C++, JavaScript 등 여러 언어로 바인딩되어 있습니다. MediaPipe 시작하기 및 즉시 사용 가능한 솔루션에 대한 자세한 내용은 여기에서 확인할 수 있습니다.


Coral

클라우드 기반 AI에 의존하는 다양한 SaaS 기업이 있지만, 많은 산업에서 로컬 AI에 대한 요구가 증가하고 있습니다. 이러한 요구를 해결하기 위해 개발된 Google Coral은 로컬 AI로 제품을 구축할 수 있는 완벽한 툴킷입니다. Coral은 2020년에 출시되었으며 배포 섹션의 TFLite 부분에서 언급한 개인정보 보호 및 효율성 등 온보드 AI 구현의 어려움을 해결합니다.

Coral은 프로토타이핑, 생산, 센싱을 위한 다양한 하드웨어 제품을 제공하며, 그중 일부는 기본적으로 AI 애플리케이션을 위해 특별히 제작된 더 강력한 Raspberry Pi입니다. Coral의 제품은 저전력 장치에서 고성능 추론을 위해 Edge TPU를 활용합니다. 또한 Coral은 이미지 세분화, 포즈 추정, 음성 인식 등을 위한 사전 컴파일된 모델을 제공하여 자체 로컬 AI 시스템을 만들려는 개발자에게 발판을 제공합니다. 모델을 생성하기 위한 필수 단계는 아래 순서도에서 확인할 수 있습니다.

 

 

TensorFlow.js

TensorFlow.js는 머신 러닝을 위한 JavaScript 라이브러리로, 브라우저와 서버 측 모두에서 Node.js를 사용하여 모델을 훈련하고 배포할 수 있습니다. Python 모델을 가져오는 방법에 대한 예제와 정보가 포함된 문서, 바로 사용할 수 있도록 사전 학습된 모델, 관련 코드가 포함된 라이브 데모를 제공합니다.


Cloud

TensorFlow Cloud는 로컬 환경을 Google Cloud에 연결할 수 있는 라이브러리입니다. 제공되는 API는 로컬 머신에서의 모델 구축 및 디버깅부터 Cloud 콘솔을 사용할 필요 없이 Google Cloud에서의 분산 학습 및 하이퍼파라미터 튜닝에 이르기까지 그 격차를 해소하도록 설계되었습니다.


Colab

Google Colab은 클라우드 기반 노트북 환경으로, Jupyter와 매우 유사합니다. GPU 또는 TPU 트레이닝을 위해 Colab을 Google Cloud에 쉽게 연결할 수 있습니다. PyTorch도 Colab과 함께 사용할 수 있습니다.


Playground

Playground는 신경망의 기본을 이해하기 위한 작지만 세련된 교육 도구입니다. 깔끔한 UI 안에 시각화된 단순하고 조밀한 네트워크를 제공합니다. 네트워크의 레이어 수와 크기를 변경하여 기능이 어떻게 학습되는지 실시간으로 확인할 수 있습니다. 또한 학습 속도와 정규화 강도와 같은 하이퍼파라미터를 변경하면 다양한 데이터 세트에서 학습 프로세스에 어떤 영향을 미치는지 확인할 수 있습니다. 플레이그라운드를 사용하면 학습 과정을 실시간으로 재생하여 학습 과정에서 입력이 어떻게 변환되는지 매우 시각적으로 확인할 수 있습니다. Playground에는 네트워크의 핵심을 이해할 수 있도록 구축된 오픈 소스 소규모 신경망 라이브러리도 함께 제공됩니다.


데이터 세트

Google 리서치의 데이터셋은 Google이 주기적으로 데이터셋을 공개하는 데이터셋 리소스입니다. 또한 Google은 더 광범위한 데이터 세트 데이터베이스에 액세스할 수 있는 데이터 세트 검색도 제공합니다. 파이토치 사용자는 물론 이러한 데이터세트도 활용할 수 있습니다.

 

생태계 - 결론

이번 라운드는 세 라운드 중 가장 근접한 라운드입니다. Google은 엔드투엔드 딥 러닝 워크플로우의 각 관련 영역에서 사용할 수 있는 제품을 확보하기 위해 많은 투자를 해왔지만, 이러한 제품이 얼마나 잘 다듬어졌는지는 이 환경에 따라 다릅니다. 그럼에도 불구하고 TFX와 함께 Google Cloud와의 긴밀한 통합은 엔드투엔드 개발 프로세스를 효율적이고 체계적으로 만들어 주며, Google Coral 기기로 모델을 쉽게 이식할 수 있다는 점에서 일부 산업에서는 텐서플로우가 압도적인 승리를 거머쥐고 있습니다. 그렇긴 하지만 TensorFlow가 점점 사라져가는 프레임워크인 것은 분명하며, 많은 애플리케이션에서 PyTorch로 빌드하는 팀이 TensorFlow 생태계를 활용할 수 있다는 점을 고려하면 ONNX의 빠른 발전은 이 과정을 더욱 악화시킬 뿐입니다. 이러한 이유로 작년과 달리 파이토치가 이 싸움에서 승리할 것으로 예상됩니다.

파이토치 대 텐서플로우 토론의 3라운드는 파이토치가 승리합니다.

 

PyTorch 2.0과 JAX

PyTorch 2.0

2022년 말, 파이토치 2.0이 발표되었으며, 이는 딥 러닝 프레임워크의 역사에서 매우 큰 변화를 의미합니다. PyTorch가 텐서플로우의 실수로부터 학습할 수 있는 이점을 가졌던 것처럼, PyTorch 2는 PyTorch 1의 "실수"로부터 학습할 수 있는 이점을 가집니다. 이러한 '실수'는 실제로 2016년에는 타당했던 설계 결정이지만 2023년에는 그렇지 않을 것입니다. 딥 러닝은 파이토치 1이 만들어졌을 때보다 훨씬 더 성숙해졌습니다. 작년에만 DALL-E 2, Stable Diffusion, ChatGPT와 같은 모델에서 상당한 진전을 보았습니다.

파이토치 2.0의 가장 큰 특징은 모델 컴파일 기능으로, 모델을 미리 컴파일하여 초고속으로 실행할 수 있습니다. PyTorch 2.0은 분산 학습을 더 간단하게 만들기 위해 노력했으며, 이는 PyTorch 딥 러닝 프로젝트의 라이프사이클이 단축될 수 있음을 의미합니다.

PyTorch 2.0의 첫 번째 안정 릴리스는 2023년 3월 초로 예정되어 있습니다.


JAX

Google의 JAX는 빠르게 인기를 얻고 있습니다. 딥 러닝 프레임워크 자체는 아니지만, 오토그래드와 손쉬운 분산 학습 기능을 갖춘 수치 컴퓨팅 라이브러리입니다. XLA를 기반으로 구축되었다는 사실과 함께, JAX는 딥 러닝의 미래를 위한 매우 강력한 후보임이 분명합니다.

한 가지 주의할 점은 JAX의 강력한 성능의 상당 부분이 PyTorch 및 TensorFlow 실무자에게는 낯설 수 있는 기능적으로 순수한 접근 방식을 취한다는 사실에서 비롯된다는 것입니다. 하지만 JAX를 둘러싼 딥 러닝 인프라는 매달 성숙해지고 있으며, 기능적으로 순수한 접근 방식이 JAX의 도입에 걸림돌이 되지 않는다면 앞으로 몇 년 안에 빠르게 채택될 것으로 예상합니다.

현재로서는 딥 러닝의 미래를 위한 싸움이 PyTorch 2.0 대 JAX의 싸움이 될 것이 분명하며, 누가 승자가 될지는 시간이 지나야 알 수 있을 것입니다.

 

 

파이토치 또는 텐서플로우 중 어떤 것을 사용해야 하나요?


예상하시다시피 PyTorch와 TensorFlow의 논쟁에는 정답이 하나도 없으며, 특정 사용 사례와 관련하여 한 프레임워크가 다른 프레임워크보다 우월하다고 말하는 것이 합리적일 뿐입니다. 어떤 프레임워크가 가장 적합한지 결정하는 데 도움을 드리기 위해 권장 사항을 아래 플로우 차트로 정리했으며, 각 차트는 관심 분야에 맞게 조정되었습니다.


산업 분야에 종사하는 경우 어떻게 해야 하나요?

 

산업 환경에서 딥 러닝 엔지니어링을 수행하는 경우 TensorFlow를 사용하고 있을 가능성이 높습니다. 이 경우에는 계속 사용하셔야 합니다. TensorFlow의 강력한 배포 프레임워크와 엔드투엔드 TensorFlow 확장 플랫폼은 모델을 제작해야 하는 사람들에게 매우 유용합니다. 모델 모니터링 및 아티팩트 추적과 함께 gRPC 서버에 쉽게 배포할 수 있는 것은 업계에서 사용하는 중요한 도구입니다. 향후 PyTorch로 마이그레이션하는 것을 고려할 수도 있지만, 지금은 현재 워크플로를 그대로 사용해도 됩니다.

반면에 프로젝트를 처음부터 새로 시작하는 경우에는 PyTorch로 빌드한 다음 TensorFlow의 도구로 배포하는 것이 좋습니다. 하나의 에코시스템을 사용하고 싶고 ONNX의 번거로움을 처리하고 싶지 않다면 TensorFlow를 사용하는 것도 좋은 선택입니다.

결론: 하나의 프레임워크를 선택해야 한다면 TensorFlow를 선택하세요.

 

제가 연구원이면 어떻게 하나요?

연구자라면 PyTorch를 사용하고 있을 가능성이 높으며 당분간 계속 사용하셔도 좋습니다. PyTorch는 사실상의 연구 프레임워크이며, PyTorch 2.0의 발표로 그 미래가 더욱 기대됩니다. JAX를 확인해보고(특히 TPU를 교육하는 경우) 얼리 어답터가 되는 것을 고려해 보시길 권하지만, 대부분의 연구자들은 올해에는 PyTorch를 계속 사용할 것입니다.

이 규칙에는 몇 가지 주목할 만한 예외가 있는데, 가장 주목할 만한 예외는 강화 학습을 연구하는 사람들이 TensorFlow 사용을 고려해야 한다는 것입니다. TensorFlow에는 강화 학습을 위한 기본 에이전트 라이브러리가 있으며, DeepMind의 Acme 프레임워크는 TensorFlow에서 구현됩니다. OpenAI의 Baselines 모델 리포지토리도 TensorFlow로 구현되어 있지만, OpenAI의 Gym은 TensorFlow 또는 PyTorch와 함께 사용할 수 있습니다. 연구에 TensorFlow를 사용하려는 경우, 더 높은 수준의 추상화를 위해 DeepMind의 Sonnet도 확인해야 합니다. 하지만 강화 학습이 점점 더 많은 딥 러닝 연구에 활용되고 있기 때문에 향후 몇 년 동안 강화 학습을 중심으로 더욱 강력한 PyTorch 생태계가 발전할 것으로 보입니다.

어떤 프레임워크를 선택하든, 특히 커뮤니티가 성장하고 더 많은 출판물에서 JAX를 활용하기 시작하는 2023년에 주목해야 합니다.

결론: 하나의 프레임워크를 선택해야 한다면 PyTorch를 선택하세요.

 

교수인 경우 어떻게 하나요?

교수의 경우 딥 러닝 코스에 어떤 프레임워크를 사용할지는 코스의 목표에 따라 달라집니다. 딥 러닝 이론뿐 아니라 전체 엔드투엔드 딥 러닝 프로세스에 대한 역량을 갖추고 바로 실무에 투입할 수 있는 딥 러닝 엔지니어를 배출하는 것이 강의의 초점이라면 TensorFlow를 사용해야 합니다. 이 경우 엔드투엔드 실습 프로젝트와 함께 TensorFlow 에코시스템 및 해당 도구에 대한 노출은 매우 유익하고 가치 있는 경험이 될 것입니다.

강의의 초점이 딥 러닝 이론과 딥 러닝 모델의 내부를 이해하는 것이라면 PyTorch를 사용해야 합니다. 특히 학생들이 딥 러닝 연구를 수행할 수 있도록 준비시키려는 고급 학부 과정이나 초기 대학원 과정을 가르치는 경우 더욱 그렇습니다.

이상적으로는 학생들이 각 프레임워크에 노출되어야 하며, 한 학기라는 시간 제약에도 불구하고 프레임워크 간의 차이점을 이해하는 데 시간을 할애하는 것이 유용할 것입니다. 강의가 다양한 주제를 다루는 여러 강의로 구성된 대규모 머신 러닝 프로그램의 일부인 경우, 두 가지 프레임워크를 모두 접하게 하는 것보다 강의 자료에 가장 적합한 프레임워크에 집중하는 것이 더 나을 수 있습니다.


최종 결론

보시다시피, 파이토치 대 텐서플로우의 논쟁은 미묘한 차이가 있으며, 그 환경은 끊임없이 변화하고 있으며, 오래된 정보는 이러한 환경을 더욱 이해하기 어렵게 만듭니다. 2023년에 파이토치와 텐서플로 모두 매우 성숙한 프레임워크이며, 두 딥러닝의 핵심 기능은 상당 부분 겹칩니다. 오늘날에는 모델 가용성, 배포 시간, 관련 에코시스템과 같은 각 프레임워크의 실용적인 고려 사항이 기술적 차이보다 우선합니다.

두 프레임워크 모두 훌륭한 문서와 많은 학습 리소스, 활발한 커뮤니티를 갖추고 있으므로 어느 프레임워크를 선택해도 실수하지 않을 것입니다.  PyTorch는 연구 커뮤니티에서 폭발적으로 채택된 후 사실상의 연구 프레임워크가 되었고 TensorFlow는 기존 산업 프레임워크로 남아 있지만, 두 영역 모두에서 각각의 사용 사례가 분명히 존재합니다.

profile

DataScience

@Ninestar

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!