딥 러닝을 위해 PyTorch를 선택해야하는 이유

Nov 26 2020
PyTorch는 딥 러닝 프로그래머에게 많은 것을 제공합니다
딥 러닝과 머신 러닝은 지난 몇 년 동안 모든 사람들 사이에서 가장 인기있는 단어였으며 이에 대한 완벽한 설명이 있습니다. 머신 러닝을 통해 시스템은 경험을 통해 학습 할 수 있었으며 딥 러닝은 광범위한 데이터 세트를 사용하여 머신 러닝을 대규모로 확장했습니다.

딥 러닝머신 러닝 은 지난 몇 년 동안 모든 사람들 사이에서 가장 인기있는 단어였으며 이에 대한 완벽한 설명이 있습니다.

머신 러닝을 통해 시스템은 경험을 통해 학습 할 수 있었으며 딥 러닝은 광범위한 데이터 세트를 사용하여 머신 러닝을 대규모로 확장했습니다. ML 및 DL에있는이 부스트로 상승했다 다양한 프로그래밍 언어 도서관 와서 활성화 프로그래머 , 연구원데이터 과학자를 생각할 수없는을 달성 할 수 있습니다. 최고의 Deep Leaning 라이브러리에 대한 가장 강력한 경쟁자 중 일부는 TensorFlowPyTorch 입니다. 지금은 PyTorch에 더 중점을 둘 것입니다.

파이 토치

Facebook Lua의 Torch 라이브러리를 기반으로하는 2016 년 프로그래밍 장면을 위해 PyTorch 출시했습니다 .

PyTorch는 무료 오픈 소스 머신 러닝 라이브러리 이며 현재 v1.4 입니다. PyTorch는 거의 3 년 동안 출시되었으며 더 나은 위치에 있기 위해 많은 개선을 거쳤습니다. PyTorch는 다른 경쟁 제품보다 빠르고 Pythonic 느낌이 들도록 만들어졌습니다. 또한 C, C ++ 및 Tensor 컴퓨팅을 지원 합니다.

Google 트렌드 — 시간 경과에 따른 PyTorch 관심

구글 트렌드 (출처)

딥 러닝을 위해 PyTorch를 선택해야하는 이유

PyTorch를 시도하지 말아야하는 이유에 대해 설명하기 전에, 다음은 PyTorch가 탄생하는 데 도움 이 된 독특하고 흥미로운 딥 러닝 프로젝트 및 라이브러리 몇 가지입니다 .

CheXNet : 딥 러닝을 통해 흉부 X- 레이에서 방사선 전문의 수준의 폐렴 감지.

Horizon : 응용 강화 학습을위한 플랫폼 (Applied RL)

PYRO : Pyro는 Python으로 작성되고 백엔드에서 PyTorch가 지원하는 범용 확률 프로그래밍 언어 (PPL)입니다.

도토NVIDIA 3D 깊은 학습을 가속화시킬 수있는 PyTorch 라이브러리로

● 프로젝트에 컴퓨터 비전을 구현하기위한 TorchCV

● 딥 러닝을위한 도구 세트로서의 PyDLT

fastai 라이브러리는 신경망 훈련 프로세스를 최적화합니다.

그리고 훨씬 더.

TensorFlow 및 PyTorch를 기반으로 빌드 된 몇 가지 프레임 워크 및 프로젝트입니다. Github와 TF 및 PyTorch의 공식 웹 사이트에서 자세한 내용을 확인할 수 있습니다.

TensorFlow의 세계 에서 PyTorch강점 을 가지고 자체적으로 보유 할 수 있습니다. 다음은 PyTorch가 딥 러닝 프로젝트에 적합한 이유를 설명하는 몇 가지 주요 내용입니다 .

1. PyTorch는 더 Pythonic입니다

PyTorch 좀 더 비단뱀적인 방식으로 코드를 작성할 수있는 프레임 워크입니다 . 또한 순진한 파이썬 코드를 사용하여 지원하는 종류의 역 동성 놀랍습니다.

PyTorch는 다른 라이브러리와 비교할 때 Python을 더 선호하는 경향이 있습니다. 그것은 PyTorch 상대적이기 때문이다 이해하기 쉽고 더 느낌과 자연 , 기본파이썬 코드와 일치 .
Python으로 작업 한 사람이라면 손실 함수, 최적화 프로그램, 변환, 데이터 로더 및 더 많은 클래스와 같은 PyTorch를 사용하여 모든 것을 집에있는 것처럼 느낄 것입니다.

각 PyTorch 예제 (Vision 및 NLP)의 코드는 공통 구조를 공유합니다.

PyTorch 예제 (소스)
PyTorch 예제 (소스)

2. 사용하기 쉬움

PyTorch와 비교할 때 TensorFlow는 상대적으로 가파른 학습 곡선을 가지고 있습니다. Python 프로그래머는 PyTorch를 조정하는 데 시간이 덜 필요하므로 Python 프레임 워크의 확장처럼 느껴질 것입니다. 손쉬운 디버깅훌륭한 간단한 API 세트는 프로그래머가 PyTorch를 쉽게 익힐 수 있도록하는 데 중요한 역할을합니다.

3. 유용한 라이브러리

훌륭한 커뮤니티 지원은 커뮤니티에 대한 큰 열정과 기여를 가져옵니다. 프로그래머는 PyTorch를 사용하여 관심있는 모든 사람이 엿볼 수있는 몇 가지 프로젝트를 만들었습니다. Computer Vision , Natural Language Processing 및 Generative Libraries와 같은 다양한 도메인에서 이러한 프로젝트 중 소수의 조합 목록은 다음 과 같습니다.

● pro_gan_pytorch를 사용하여 ProGAN 기능 활용

● 베이지안 최적화 사용을위한 BoTorch

● 대화 모델 공유, 학습 및 테스트를위한 ParlAI

● 신경 기계 번역 시스템 구현을위한 OpenNMT-py

● 다국어 단어 삽입을위한 MUSE

● scikit-learn 코드를 PyTorch와 통합하기위한 skorch

4. 손쉬운 데이터 병렬화

PyTorch의 데이터 병렬 처리는 효율적이며 데이터를 일괄 처리분할 한 다음 처리를 위해 여러 GPU로 전송됩니다. 이 기술을 사용하여 PyTorch는 CPU에서 GPU로 워크로드의 상당 부분을 이동할 수 있습니다. 들어 데이터 병렬 처리 , 그것은 torch.nn.DataParallel 클래스를 사용합니다.

Distributed Data-Parallel 은 PyTorch의 기능으로, Data-Parallel과 결합하여 단일 GPU에 충분한 대용량 데이터 세트 및 모델을 요구하는 사용 사례를 처리 할 수 ​​있습니다. GPU 풀에 대한 모든 작업이 완료되면 결과가 수집, 병합되어 Data-Parallel에 의해 다시 전송됩니다.

Pytorch 데이터 병렬 (소스)

5. 연구자에게 우수

PyTorch는 프레임 워크 작업을하는 연구원의 최소 70 %가 사용하는 것으로 입증 되었기 때문에 연구원들 에게 신의 선물입니다 . 애플리케이션 개발을위한 업계 최고의 선택 임에도 불구하고 TensorFlow는 아직이 측면에서 PyTorch를 따라 잡지 못했습니다. 그 뒤에있는 한 가지 이유 는 PyTorch가 더 나은 성능을 제공해야하는 단순성과 사용 편의성 때문일 수 있습니다 .

6. 모바일 준비

v1.3부터 PyTorch는 Android 및 iOS 장치에 대한 배포 지원을 추가했습니다. 이 기능은 PyTorch의 모든 이점을 엣지 장치에 제공하여 낮은 지연 시간을 요구하는 애플리케이션을 충족시킵니다. PyTorch 모바일의 목표는 모바일 플랫폼 용 기본 API를 지원하여 개발주기를 줄이고 Caffe2와 같은 모바일 프레임 워크로 내보낼 필요를 없애는 것입니다. 이를 통해 기기의 설치 공간을 크게 줄일 수 있습니다. 더 나은 제어를 위해 빌드 스크립트의 정밀한 미세 조정에 대한 지원도 추가되었습니다.

PyTorch Mobile 시작하기 :

Android에서 시작하기

iOS에서 시작하기

7. 쉬운 디버깅

PyTorch는 각 줄에 액세스 할 수있는 옵션과 각 줄 다음에 인쇄하는 일반적인 방법이있을 때 디버그하기 쉽습니다. 가장 중요한 점은 PyTorch의 개체와 작업에 기호 참조가 아닌 실제 데이터가 포함되어 있어 프로그래머의 삶이 더 쉬워진다는 것입니다. PyTorch의 표준 디버거 중 일부는 다음과 같습니다.

ipdb

pdb

● PyCharm

예를 들어, pdb의 "pdb.set_trace ()"함수를 사용하여 코드에 중단 점을 배치하여 오류의 원인을 드릴 다운 할 수 있습니다. 또한 PyTorch의 동적 계산 그래프는 코드가 실행되는 동안 동적 수정 및 신속한 디버깅 을 허용합니다 .

pdb (source)를 사용한 PyTorch 디버깅

8. ONNX 지원

Open Neural Network Exchange 는AI 프로그래머가 다양한 프레임 워크, 도구 및 라이브러리에서 상호 교환 적으로 작업 할 수있는 공통 기반을 제공함으로써 인공 지능 을위한 오픈 소스 생태계 역할을합니다. ONNX는 여러 프레임 워크 및 하드웨어에서 작동하는 표준 파일 형식을 제공하여이를 수행합니다.

PyTorch와 관련하여 ONNX는 PyTorch 및 Caffe2, MXNet, TensorFlow 등과 같은 광범위한 기타 프레임 워크에 대한 기본 지원을 제공합니다. ONNX를 사용하면 AI 프로그래머가 PyTorch 모델 을 다른 프레임 워크가 통합 할 수있는 개방형 형식으로 쉽게 내보내고 마이그레이션 할 수 있습니다.

PyTorch 네이티브 ONNX 지원 (소스)

9. 동적 계산 그래프 지원

모든 모델을 방향성 비순환 그래프로 보는 PyTorch는 계산 그래프를 정의하는 동적 접근 방식을 제공합니다. 다른 프레임 워크는 정적 그래프 정의를 허용하지만 PyTorch는 이동 중에 자유롭게 조작 할 수 있는 동적 계산 그래프 생성을 지원합니다 . PyTorch의 이러한 동적 측면에서 가장 많은 이점을 얻는 요소 중 하나는 다른 많은 것 중에서도 Recurrent Neural Networks입니다.

10. 강력한 커뮤니티 지원

PyTorch는 또한 뛰어난 커뮤니티 지원을 제공합니다 . PyTorch의 집문서를 자세히 의 각 기능에 대해. 라이브러리에 대한 모든 최신 업데이트가 잘 설명되어 있습니다. 새로 추가 될 때마다 도움이되는 자습서 및 관련 리소스를 찾아 귀중한 실습 느낌을 얻을 수 있습니다.

PyTorch Forum 은 초보자가 질문을 게시하고 베테랑이 동료 프로그래머와 아이디어를 공유 할 수있는 우수하고 적극 권장되는 장소입니다. 하루에 100 개가 넘는 게시물이있는 커뮤니티는 매우 활동적이며 사람들이 PyTorch에 참여하도록 장려합니다.

다음은 PyTorch 개발자 커뮤니티 , 리소스자습서 를 통해 기여하고 배우고 질문에 대한 답변을 얻을 수 있습니다.

PyTorch 토론 양식

PyTorch Slack 커뮤니티

PyTorch 예

PyTorch 문서

Github Pytorch 가이드

PyTorch 초보자 참고 자료

PyTorch 출시 노트

Pytorch를 사용한 딥 러닝 : 60 분 블리츠

Colab에서 Google 드라이브의 가이드 데이터 사용

중국어 문서 및 자습서

한국어 튜토리얼

결론

딥 러닝 프로그래머를위한 방대한 수의 직관적 인 기능을 갖춘 PyTorch는 다양한 기술 수준의 사람들에게 많은 것을 제공합니다. 쉬운 진입 점을 제공 함에도 불구하고 PyTorch는 특정 측면에서 더 나은 성능을 제공 할뿐만 아니라 추가 고유 기능을 제공하는 기능을 제공하므로 가볍게 받아 들여서는 안됩니다. 우리는 PyTorch의 기능에 대해 가장 일반적으로 언급 된 몇 가지를 논의하여 회의적인 PyTorch로 이동하는 데 도움이됩니다.

더 흥미로운 자료 —

이 기사가 도움이 되었기를 바랍니다. 아래는 여러분이 좋아하기를 바라는 흥미로운 자료입니다.

저자 정보

클레어 D . 에서 콘텐츠의 장인과 상인이다 Digitalogy - 사전 심사 및 최고 수준의 개발자와 디자이너와 연결 사람들이 전 세계에 걸쳐 자신의 특정 요구에 따라하는 기술 소싱 및 사용자 정의 중매 시장. 와 연결 Digitalogy링크드 인 , 트위터 , 인스 타 그램 .