TensorFlow, PyTorch 및 JAX: 어떤 딥 러닝 프레임워크가 귀하에게 더 적합합니까?
번역가 | Zhu Xianzhong
리뷰어 | Ink
딥 러닝은 매일 다양한 형태로 우리 삶에 영향을 미칩니다. Siri, Alexa, 사용자 음성 명령을 기반으로 한 휴대폰의 실시간 번역 앱, 스마트 트랙터, 창고 로봇, 자율주행차를 구동하는 컴퓨터 비전 기술 등 매달 새로운 발전을 가져오는 것 같습니다. 이러한 딥 러닝 애플리케이션은 거의 모두 TensorFlow, PyTorch 또는 JAX의 세 가지 프레임워크로 작성되었습니다.
그렇다면 어떤 딥러닝 프레임워크를 사용해야 할까요? 이 기사에서는 TensorFlow, PyTorch 및 JAX를 높은 수준에서 비교합니다. 우리의 목표는 커뮤니티 지원 및 사용 용이성과 같은 요소를 고려하면서 자신의 강점을 활용하는 앱 유형에 대한 아이디어를 제공하는 것입니다.
TensorFlow를 사용해야 할까요?
"IBM을 사서 해고된 사람은 없다"는 1970년대와 1980년대 컴퓨터계의 슬로건이었습니다. 금세기 초에는 TensorFlow를 사용한 딥러닝도 마찬가지였습니다. 그러나 우리 모두가 알고 있듯이 1990년대에 접어들면서 IBM은 "후순위로 밀려났습니다." 그렇다면 TensorFlow는 2015년 처음 출시된 지 7년이 지난 오늘날, 그리고 앞으로의 새로운 10년에도 여전히 경쟁력이 있을까요?
물론이죠. TensorFlow가 항상 가만히 있었던 것은 아닙니다. 첫째, TensorFlow 1.x는 Python이 아닌 방식으로 정적 그래프를 작성하지만 TensorFlow 2.x에서는 Eager 모드를 사용하여 모델을 작성하여 작업을 즉시 평가할 수도 있으므로 PyTorch와 더 유사한 느낌을 줍니다. 상위 수준에서 TensorFlow는 하위 수준에서 개발을 용이하게 하기 위해 Keras를 제공하고 속도를 높이기 위해 XLA(가속 선형 대수, 가속 선형 대수) 최적화 컴파일러를 제공합니다. XLA는 GPU 성능을 향상시키는 데 마법 같은 역할을 하며, Google의 TPU(Tensor Processor Unit)의 성능을 활용하는 주요 방법으로 대규모 모델 학습에 탁월한 성능을 제공합니다.
두 번째로, TensorFlow는 가능한 모든 것을 잘하기 위해 수년 동안 노력해 왔습니다. 예를 들어 성숙한 플랫폼에서 잘 정의되고 반복 가능한 방식으로 모델을 제공하고 싶습니까? TensorFlow를 제공할 준비가 되었습니다. 모델 배포를 웹, 스마트폰과 같은 저전력 컴퓨팅 또는 사물 인터넷과 같은 리소스가 제한된 장치로 재배치하고 싶습니까? 이 시점에서 TensorFlow.js와 TensorFlow Lite는 모두 매우 성숙해졌습니다.
분명히 Google이 프로덕션 배포를 실행하기 위해 여전히 100% TensorFlow를 사용하고 있다는 점을 고려하면 TensorFlow가 사용자의 확장 요구 사항을 충족할 수 있다고 확신할 수 있습니다.
그러나 최근 프로젝트에는 무시할 수 없는 몇 가지 요소가 있습니다. 간단히 말해서, 프로젝트를 TensorFlow 1.x에서 TensorFlow 2.x로 업그레이드하는 것은 실제로 매우 잔인합니다. 일부 회사에서는 새 버전에서 제대로 작동하도록 코드를 업데이트하는 데 필요한 노력을 고려하여 코드를 PyTorch 프레임워크로 이식하기로 결정했습니다. 또한, TensorFlow는 과학 연구 분야에서도 추진력을 잃어 몇 년 전부터 PyTorch가 제공하는 유연성을 선호하기 시작했으며, 이로 인해 연구 논문에서 TensorFlow의 사용이 지속적으로 감소했습니다.
그리고 "케라스 사건"도 아무런 역할을 하지 못했습니다. Keras는 2년 전에 TensorFlow 배포판의 통합 부분이 되었지만 최근에는 자체 출시 계획에 따라 별도의 라이브러리로 다시 통합되었습니다. 물론 Keras를 제외한다고 해서 개발자의 일상 생활에 영향을 미치지는 않지만, 작은 업데이트 버전의 프레임워크에서 이렇게 극적인 변화가 발생한다고 해서 프로그래머가 TensorFlow 프레임워크를 사용하는 데 대한 확신을 갖게 되는 것은 아닙니다.
TensorFlow는 실제로 신뢰할 수 있는 프레임워크이며 광범위한 딥 러닝 생태계를 갖추고 있으며 사용자는 TensorFlow에서 모든 규모의 애플리케이션과 모델을 구축할 수 있습니다. 이렇게 하면 같이 일할 수 있는 좋은 회사가 많이 생길 거예요. 하지만 오늘날에는 TensorFlow가 첫 번째 선택이 아닐 수도 있습니다.
PyTorch를 사용해야 할까요?
PyTorch는 더 이상 TensorFlow를 따르는 "신생 기업"이 아니지만 오늘날 딥 러닝의 주요 원동력입니다. 아마도 주로 연구용이지만 생산 애플리케이션용으로 점점 더 많이 사용되고 있습니다. TensorFlow 및 PyTorch 개발에 대한 기본 접근 방식이 Eager 모드가 되면서 PyTorch의 autograd에서 제공하는 보다 Python적인 접근 방식이 정적 그래프와의 전쟁에서 승리하는 것으로 보입니다.
TensorFlow와 달리 PyTorch의 핵심 코드는 버전 0.4에서 변수 API가 더 이상 사용되지 않으므로 큰 중단이 발생하지 않았습니다. 이전에는 변수에 자동으로 생성된 텐서가 필요했지만 이제는 모든 것이 텐서입니다. 하지만 그렇다고 해서 모든 곳에 실수가 없다는 말은 아닙니다. 예를 들어, PyTorch를 사용하여 여러 GPU에서 훈련했다면 DataParallel과 최신 DistributedDataParaller 사이에 차이점이 있을 수 있습니다. 항상 DistributedDataParallel을 사용해야 하지만 실제로 DataParaller를 사용하는 것에 반대할 것은 없습니다.
XLA/TPU 지원 측면에서 PyTorch는 항상 TensorFlow 및 JAX에 뒤처졌지만 2022년 현재 상황은 많이 개선되었습니다. 이제 PyTorch는 TPU 가상 머신에 대한 액세스, 레거시 TPU 노드 지원, 코드 변경 없이 CPU, GPU 또는 TPU에서 실행되는 코드의 간단한 명령줄 배포를 지원합니다. PyTorch를 사용하여 자주 작성하는 상용구 코드 중 일부를 처리하고 싶지 않다면 Pytorche Lightning과 같은 더 높은 수준의 확장 기능을 사용하면 훈련 루프를 다시 작성하는 대신 실제 작업에 집중할 수 있습니다. 반면, PyTorch Mobile에 대한 작업은 계속되지만 TensorFlow Lite에 비해 성숙도가 훨씬 낮습니다.
프로덕션 측면에서 PyTorch는 이제 Kubeflow와 같은 프레임워크에 구애받지 않는 플랫폼과 통합될 수 있으며 TorchServe 프로젝트는 확장, 측정항목 및 배치 추론과 같은 배포 세부 정보를 처리합니다. 이 모든 기능은 PyTorch 개발자가 직접 관리하는 작은 패키지에서 사용할 수 있습니다. MLOps의 반면에 PyTorch는 스케일링을 지원합니까? 괜찮아요! Meta는 수년간 프로덕션 환경에서 PyTorch를 실행해 왔습니다. 따라서 PyTorch가 대규모 워크로드를 처리할 수 없다고 말하는 사람은 거짓말을 하고 있습니다. 그럼에도 불구하고 PyTorch는 JAX만큼 사용자 친화적이지 않을 수 있는 상황이 있습니다. 특히 많은 수의 GPU 또는 TPU가 필요한 매우 힘든 훈련의 경우 더욱 그렇습니다.
마지막으로, 여전히 사람들이 언급하고 싶지 않은 까다로운 문제가 있습니다. 지난 몇 년간 PyTorch의 인기는 Hugging Face의 Transformers 라이브러리의 성공과 거의 불가분의 관계에 있습니다. 예, Transformers는 이제 TensorFlow 및 JAX도 지원하지만 원래는 PyTorch 프로젝트였으며 여전히 프레임워크와 긴밀하게 통합되어 있습니다. Transformer 아키텍처의 등장, 연구를 위한 PyTorch의 유연성, Hugging Face의 모델 센터를 통해 출시 후 며칠 또는 몇 시간 내에 수많은 새로운 모델을 도입할 수 있는 기능을 통해 PyTorch가 이러한 분야에서 왜 그렇게 인기가 있는지 쉽게 알 수 있습니다.
JAX를 사용해야 하나요?
TensorFlow에 관심이 없다면 Google에서 다른 서비스를 제공할 수도 있습니다. JAX는 Google에서 구축, 유지 관리 및 사용하는 딥 러닝 프레임워크이지만 공식 Google 제품은 아닙니다. 그러나 지난 1년 정도 동안 Google/DeepMind 논문과 제품 릴리스에 주목하면 Google의 많은 연구가 JAX로 이동했음을 알 수 있습니다. 따라서 JAX는 "공식" Google 제품은 아니지만 Google 연구원들이 한계를 뛰어넘기 위해 사용하는 제품입니다.
JAX가 정확히 무엇인가요? JAX에 대해 생각하는 간단한 방법은 다음과 같습니다. "마술 지팡이"를 사용하여 Python 함수를 마법처럼 벡터화하고 이러한 모든 함수의 파생 계산을 처리할 수 있는 NumPy의 GPU/TPU 가속 버전을 상상해 보세요. 마지막으로 코드를 가져와 XLA(Accelerated Linear Algebra) 컴파일러에 맞게 최적화하는 JIT(Just-In-Time) 구성 요소를 제공하여 TensorFlow 및 PyTorch의 성능을 크게 향상시킵니다. 현재 일부 코드는 실제 최적화 작업 없이 JAX에서 다시 구현하기만 하면 4~5배 더 빠르게 실행됩니다.
JAX가 NumPy 수준에서 작동한다는 점을 고려하면 JAX 코드는 TensorFlow/Keras(또는 심지어 PyTorch)보다 훨씬 낮은 수준에서 작성됩니다. 다행스럽게도 JAX를 둘러싼 생태계는 작지만 성장하고 있으며 일부 확장이 이루어지고 있습니다. 신경망 라이브러리를 사용하시겠습니까? 확신하는. 그 중에는 Google의 Flax와 DeepMind(또한 Google)의 Haiku가 있습니다. 또한 Optax는 모든 최적화 요구 사항에 사용할 수 있으며 PIX는 이미지 처리 등에 사용할 수 있습니다. Flax와 같은 것을 사용하면 신경망 구축이 상대적으로 쉬워집니다. 여전히 몇 가지 골치 아픈 문제가 있다는 점에 유의하세요. 예를 들어, 숙련된 사람들은 JAX가 다른 많은 프레임워크와 다르게 난수를 처리하는 방식에 대해 자주 이야기합니다.
그렇다면 모든 것을 JAX로 변환하고 이 최첨단 기술을 활용해야 할까요? 이 질문은 사람마다 다릅니다. 훈련하는 데 많은 리소스가 필요한 대규모 모델을 조사하는 경우 이 접근 방식을 권장합니다. 또한 결정론적 교육을 위한 JAX와 수천 개의 TPU Pod가 필요한 기타 프로젝트에 관심이 있다면 시도해 볼 가치가 있습니다.
요약
그래서 결론은 무엇인가요? 어떤 딥러닝 프레임워크를 사용해야 합니까? 불행하게도 이 질문에 대한 단 하나의 대답은 없습니다. 모든 것은 작업 중인 문제의 유형, 처리할 모델을 배포하려는 규모, 심지어 다루고 있는 컴퓨팅 플랫폼에 따라 다릅니다.
그러나 텍스트 및 이미지 분야에서 일하고 이러한 모델을 프로덕션에 배포할 목적으로 중소 규모의 연구를 수행하고 있다면 현재로서는 PyTorch가 최선의 선택일 것입니다. 최신 버전으로 판단하면 이러한 유형의 애플리케이션 공간에 가장 적합합니다.
낮은 컴퓨팅 장치에서 모든 성능을 얻으려면 TensorFlow와 매우 강력한 TensorFlow Lite 패키지를 사용하는 것이 좋습니다. 마지막으로, 수백, 수천억 개 또는 그 이상의 매개변수가 포함된 학습 모델을 보고 주로 연구 목적으로 학습하는 경우 JAX를 사용해 볼 시간이 될 수 있습니다.
원본 링크: https://www.infoworld.com/article/3670114/tensorflow-pytorch-and-jax-choosing-a-deep-learning-framework.html
번역가 소개
Zhu Xianzhong, 51CTO 커뮤니티 편집자, 51CTO 전문 블로거, 강사, 웨이팡 대학의 컴퓨터 교사이자 프리랜스 프로그래밍 업계의 베테랑입니다.
위 내용은 TensorFlow, PyTorch 및 JAX: 어떤 딥 러닝 프레임워크가 귀하에게 더 적합합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Editor | Radish Skin 2021년 강력한 AlphaFold2가 출시된 이후 과학자들은 단백질 구조 예측 모델을 사용하여 세포 내 다양한 단백질 구조를 매핑하고 약물을 발견하며 알려진 모든 단백질 상호 작용에 대한 "우주 지도"를 그려 왔습니다. 방금 Google DeepMind는 단백질, 핵산, 소분자, 이온 및 변형된 잔기를 포함한 복합체에 대한 결합 구조 예측을 수행할 수 있는 AlphaFold3 모델을 출시했습니다. AlphaFold3의 정확도는 과거의 많은 전용 도구(단백질-리간드 상호작용, 단백질-핵산 상호작용, 항체-항원 예측)에 비해 크게 향상되었습니다. 이는 단일 통합 딥러닝 프레임워크 내에서 다음을 달성할 수 있음을 보여줍니다.

Java 프레임워크에 대한 상용 지원의 비용/성능 평가에는 다음 단계가 포함됩니다. 필요한 보증 수준과 SLA(서비스 수준 계약) 보장을 결정합니다. 연구지원팀의 경험과 전문성. 업그레이드, 문제 해결, 성능 최적화와 같은 추가 서비스를 고려하십시오. 위험 완화 및 효율성 향상을 기준으로 비즈니스 지원 비용을 평가합니다.

PHP 프레임워크의 학습 곡선은 언어 숙련도, 프레임워크 복잡성, 문서 품질 및 커뮤니티 지원에 따라 달라집니다. PHP 프레임워크의 학습 곡선은 Python 프레임워크에 비해 높고 Ruby 프레임워크에 비해 낮습니다. Java 프레임워크에 비해 PHP 프레임워크는 학습 곡선이 적당하지만 시작하는 데 걸리는 시간이 더 짧습니다.

경량 PHP 프레임워크는 작은 크기와 낮은 리소스 소비를 통해 애플리케이션 성능을 향상시킵니다. 그 특징은 다음과 같습니다: 작은 크기, 빠른 시작, 낮은 메모리 사용량, 향상된 응답 속도 및 처리량, 리소스 소비 감소 실제 사례: SlimFramework는 500KB에 불과한 REST API를 생성하며 높은 응답성과 높은 처리량을 제공합니다.

애플리케이션 시나리오를 기반으로 최고의 Go 프레임워크를 선택하세요. 애플리케이션 유형, 언어 기능, 성능 요구 사항 및 생태계를 고려하세요. Common Go 프레임워크: Gin(웹 애플리케이션), Echo(웹 서비스), Fiber(높은 처리량), gorm(ORM), fasthttp(속도). 실제 사례: REST API(Fiber) 구축 및 데이터베이스(gorm)와 상호 작용. 프레임워크를 선택하세요. 주요 성능을 위해서는 fasthttp를 선택하고, 유연한 웹 애플리케이션을 위해서는 Gin/Echo를, 데이터베이스 상호작용을 위해서는 gorm을 선택하세요.

Editor | Radish Skin 단백질 기능을 이해하고 분자 치료법을 개발하려면 단백질이 어떤 역할을 하는지 세포 유형을 파악하고 단백질 간의 상호 작용을 분석해야 합니다. 그러나 생물학적 맥락에서 단백질 상호작용을 모델링하는 것은 기존 알고리즘에 있어 여전히 어려운 일입니다. 최근 연구에서 하버드 의과대학 연구원들은 상황 인식 단백질 표현을 생성하기 위한 기하학적 딥러닝 방법인 PINNACLE을 개발했습니다. PINNACLE은 다중 기관 단일 세포 아틀라스를 활용하여 맥락화된 단백질 상호 작용 네트워크를 학습하고 24개 조직의 156개 세포 유형 컨텍스트에서 394,760개의 단백질 표현을 생성합니다. 본 연구는 “Contextual AImodels forsingl”이라는 개념을 기반으로 합니다.

Editor | KX 분자가 서로 어떻게 상호 작용하는지 완전히 이해한다면 생물학에 대해 배울 것이 거의 없을 것입니다. 왜냐하면 우리가 세상을 인식하는 방식을 포함한 모든 생물학적 현상은 궁극적으로 세포 내 생체 분자의 행동과 상호 작용에서 비롯되기 때문입니다. 최근 출시된 알파폴드3(AlphaFold3)는 단백질, 핵산, 리간드의 서열로부터 직접 생체분자 복합체의 3차원 구조를 예측할 수 있다. 이는 생체분자가 어떻게 상호작용하는지에 대한 우리의 장기적인 탐구에서 상당한 진전을 의미합니다. AlphaFold3은 서열에서 직접 복합체의 3차원 구조를 예측하여 생체분자 상호작용에 대한 통찰력을 제공하는 획기적인 기술입니다. 1. 생체분자의 코드 세포 기능을 지정하는 생체분자(예: 단백질 또는 핵산)의 1차원(1D) 서열입니다.

Go 프레임워크 학습에는 다섯 가지 오해가 있습니다. 프레임워크에 대한 과도한 의존과 제한된 유연성입니다. 프레임워크 규칙을 따르지 않으면 코드를 유지 관리하기가 어려워집니다. 오래된 라이브러리를 사용하면 보안 및 호환성 문제가 발생할 수 있습니다. 패키지를 과도하게 사용하면 코드 구조가 난독화됩니다. 오류 처리를 무시하면 예기치 않은 동작과 충돌이 발생합니다.
