>  기사  >  기술 주변기기  >  PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환

PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환

WBOY
WBOY앞으로
2023-04-13 08:34:02982검색

PyTorch 2.0 공식 버전이 드디어 출시되었습니다!

PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환

지난 12월, PyTorch 재단은 PyTorch 컨퍼런스 2022에서 PyTorch 2.0의 첫 번째 미리보기 버전을 출시했습니다.

이전 버전 1.0에 비해 2.0은 파괴적인 변화를 겪었습니다. PyTorch 2.0에서 가장 큰 개선 사항은 torch.compile입니다.

새로운 컴파일러는 PyTorch 1.0의 기본 "eager 모드"보다 훨씬 빠르게 코드를 즉시 생성하여 PyTorch 성능을 더욱 향상시킬 수 있습니다.

PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환

2.0 외에도 TorchAudio, TorchVision 및 TorchText를 포함한 독립 실행형 라이브러리는 물론 트리에 있는 라이브러리를 포함한 PyTorch 도메인 라이브러리에 대한 일련의 베타 업데이트가 출시되었습니다. 커뮤니티 지원 모드를 제공하기 위해 TorchX 업데이트도 동시에 출시됩니다.

PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환

주요 내용 요약

- torch.compile은 PyTorch 2.0의 기본 API이며, 컴파일된 모델을 래핑하고 반환합니다. torch.compile은 완전한 추가 기능(및 선택 사항) 기능이므로 2.0 버전은 이전 버전과 100% 호환됩니다.

- torch.compile의 기본 기술인 Nvidia 및 AMD GPU가 탑재된 TorchInductor는 OpenAI Triton 딥 러닝 컴파일러를 사용하여 고성능 코드를 생성하고 하위 수준 하드웨어 세부 정보를 숨깁니다. OpenAI Triton에 의해 생성된 커널 구현의 성능은 손으로 작성한 커널 및 cublas와 같은 전문 CUDA 라이브러리와 비슷합니다.

- Accelerated Transformers는 SPDA(Scaled Dot Product Attention)를 구현하기 위해 맞춤형 커널 아키텍처를 사용하여 훈련 및 추론을 위한 고성능 지원을 도입합니다. API는 torch.compile()과 통합되어 있으며, 모델 개발자는 새로운 scaled_dot_product_attention() 연산자를 호출하여 스케일링된 내적 어텐션 커널을 직접 사용할 수도 있습니다.

- MPS(Metal Performance Shaders) 백엔드는 Mac 플랫폼에서 GPU 가속 PyTorch 교육을 제공하고 300개 이상의 운영자를 대상으로 가장 일반적으로 사용되는 상위 60개 작업에 대한 지원을 추가합니다.

- Amazon AWS는 AWS Graviton3을 기반으로 C7g 인스턴스에서 PyTorch CPU 추론을 최적화합니다. PyTorch 2.0은 Resnet50 및 Bert의 개선을 포함하여 이전 버전에 비해 Graviton의 추론 성능을 향상시킵니다.

- TensorParallel, DTensor, 2D 병렬, TorchDynamo, AOTAutograd, PrimTorch 및 TorchInductor 전반에 걸친 새로운 프로토타이핑 기능 및 기술.

PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환

컴파일하세요, 그래도 컴파일하세요!

​PyTorch 2.0의 최신 컴파일러 기술에는 TorchDynamo, AOTAutograd, PrimTorch 및 TorchInductor가 포함됩니다. 이 모든 것은 C++(Python과 호환됨)가 아닌 Python으로 개발되었습니다.

또한 다시 컴파일하지 않고도 다양한 크기의 벡터를 보낼 수 있는 동적 모양을 지원합니다.

  • TorchDynamo​

Python Frame Evaluation Hooks의 도움으로 PyTorch 프로그램을 안전하게 얻을 수 있습니다. 이 주요 혁신은 지난 5년간 PyTorch의 안전한 그래프 캡처(안전한 그래프 캡처) 연구 개발 결과를 요약한 것입니다.

  • AOTAutograd​

는 고급 역추적을 생성하기 위한 추적 자동 비교로 PyTorch autograd 엔진을 오버로드합니다.

  • PrimTorch​

는 2000개 이상의 PyTorch 연산자를 약 250개의 기본 연산자 폐쇄 세트로 요약하며, 개발자는 이러한 연산자를 위한 완전한 PyTorch 백엔드를 구축할 수 있습니다. PrimTorch는 PyTorch 함수 또는 백엔드 작성 프로세스를 크게 단순화합니다.

  • TorchInductor​

TorchInductor는 여러 가속기 및 백엔드를 위한 빠른 코드를 생성할 수 있는 딥 러닝 컴파일러입니다. NVIDIA GPU의 경우 OpenAI Triton을 핵심 빌딩 블록으로 사용합니다.

PyTorch 재단은 2.0의 출시가 "C++에서 Python으로의 복귀"를 촉진할 것이며 이것이 PyTorch의 실질적이고 새로운 방향이라고 덧붙였습니다.

"우리는 '열심히 실행'하는 것의 성능 한계를 첫날부터 알고 있었습니다. 2017년 7월, 우리는 PyTorch용 컴파일러를 개발하는 첫 번째 연구 프로젝트를 시작했습니다. 컴파일러는 PyTorch 프로그램이 빠르게 실행되도록 해야 하지만 PyTorch 경험을 희생하지 않으면서 유연성과 사용 편의성을 유지하여 연구자가 다양한 탐색 단계에서 동적 모델과 프로그램을 사용할 수 있도록 해야 합니다. "

물론 컴파일되지 않은 "열심히 모드"는 동적 실시간 코드 생성기를 사용하며 2.0에서도 계속 사용할 수 있습니다. 개발자는 porch.compile 명령을 사용하여 단 한 줄의 코드만 추가하여 컴파일 모드로 신속하게 업그레이드할 수 있습니다.

사용자들은 2.0의 컴파일 시간이 1.0에 비해 43% 향상되었음을 확인할 수 있습니다.

이 데이터는 이미지 분류, 대상 감지, 이미지 생성 및 다양한 NLP 작업을 포함하여 Nvidia A100 GPU에서 PyTorch 2.0을 사용하여 163개의 오픈 소스 모델에 대해 PyTorch Foundation에서 실시한 벤치마크 테스트에서 나온 것입니다.

이 벤치마크는 HuggingFace Transformers, TIMM 및 TorchBench의 세 가지 범주로 나뉩니다.

PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환

NVIDIA A100 GPU 열성 모드 torch.compile 다양한 모델의 속도 향상 성능

PyTorch Foundation에 따르면 새 컴파일러는 Float32 정밀 모드를 사용할 때 21% 더 빠르게 실행됩니다. 자동 혼합 정밀도(AMP) 모드를 사용하면 51% 더 빨라집니다.

이 163개 모델 중 torch.compile은 93%의 모델에서 정상적으로 실행될 수 있습니다.

"PyTorch 2.x의 로드맵에서 우리는 성능과 확장성 측면에서 컴파일 모델을 더욱 발전시키기를 희망합니다. 일부 작업은 아직 시작되지 않았습니다. 일부 작업은 대역폭 부족으로 인해 구현되지 않았습니다. . "

PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환

Training LLM이 2배 빨라졌습니다

또한 성능은 PyTorch 2.0의 또 다른 주요 초점이자 개발자들이 아낌없이 홍보하는 초점이기도 합니다.

사실 새로운 기능의 하이라이트 중 하나는 이전에 Better Transformers로 알려진 Accelerated Transformers입니다.

PyTorch 2.0 공식 버전에는 새로운 고성능 PyTorch TransformAPI 구현이 포함되어 있습니다.

PyTorch 프로젝트의 목표 중 하나는 최첨단 변환기 모델의 훈련과 배포를 더 쉽고 빠르게 만드는 것입니다.

Transformers는 GPT-3, GPT-4 등 OpenAI 모델을 포함해 현대의 ​​생성 인공지능 시대를 구현하는 데 도움이 되는 기반 기술입니다.

PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환

PyTorch 2.0 Accelerated Transformers에서는 맞춤형 커널 아키텍처 방법(스케일링 내적 주의 SDPA라고도 함)을 사용하여 훈련 및 추론을 위한 고성능 지원을 제공합니다.

Transformer를 지원할 수 있는 하드웨어 유형이 많기 때문에 PyTorch 2.0은 여러 SDPA 사용자 정의 커널을 지원할 수 있습니다. 한 단계 더 나아가 PyTorch는 특정 모델 및 하드웨어 유형에 대해 최고 성능의 커널을 선택하는 사용자 정의 커널 선택 로직을 통합합니다.

개발자가 PyTorch의 이전 버전보다 더 빠르게 모델을 훈련할 수 있도록 지원하므로 속도 향상의 영향은 상당합니다.

새 버전에서는 SPDA(Scaled Dot Product Attention)를 처리하는 맞춤형 커널 아키텍처를 사용하여 추론을 위한 빠른 경로 아키텍처를 확장함으로써 훈련 및 추론을 위한 고성능 지원이 가능합니다.

fastpath 아키텍처와 유사하게 사용자 정의 커널은 PyTorch Transformer API에 완전히 통합됩니다. 따라서 기본 Transformer 및 MultiHeadAttention API를 사용하면 사용자는 다음을 수행할 수 있습니다.

- 상당한 속도 향상을 확인합니다.

- 교차 주의를 사용하는 모델, 변환기 디코더 및 훈련 모델을 포함한 더 많은 사용 사례 지원

- 고정 및 가변 시퀀스 길이 변환기 인코더에 대한 빠른 경로 추론의 지속적인 사용 및 자기주의 메커니즘.

다양한 하드웨어 모델과 Transformer 사용 사례를 최대한 활용하기 위해 여러 SDPA 사용자 정의 코어가 지원되며 사용자 정의 코어 선택 로직은 특정 모델 및 하드웨어 유형에 대해 가장 높은 성능의 코어를 선택합니다.

기존 Transformer API 외에도 개발자는 새로운 scaled_dot_product_attention() 연산자를 호출하여 scaled dot product attention attention 커널을 직접 사용할 수 있으며, torch.compile()과 PyTorch 2 Transformers의 통합을 가속화합니다.

모델을 사용하는 동안 (추론 또는 훈련을 위한) PT2 컴파일의 추가 가속화를 얻으려면 model = torch.compile(model)을 사용하여 모델을 전처리할 수 있습니다.

현재 Transformer 모델, 특히 가속화된 PyTorch 2 Transformer를 사용하는 대규모 언어 모델 훈련에서 상당한 가속화를 달성하기 위해 사용자 정의 커널과 torch.compile()의 조합이 사용되었습니다.

PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환

사용자 정의 커널과 torch.compile을 사용하여 대규모 언어 모델 훈련을 위한 상당한 가속화 제공

HuggingFace Transformers의 수석 관리자인 Sylvain Gugger는 PyTorch에서 발표한 성명에서 다음과 같이 썼습니다. 프로젝트 "단 한 줄의 코드만 추가하면 PyTorch 2.0은 Transformers 모델을 훈련할 때 1.5배에서 2.0배의 속도 향상을 제공합니다. 이는 혼합 정밀도 훈련 출시 이후 가장 흥미로운 일입니다!"

PyTorch와 Google의 TensorFlow는 가장 널리 사용되는 두 가지 딥러닝 프레임워크입니다. 전 세계 수천 개의 기관에서 PyTorch를 사용하여 딥 러닝 애플리케이션을 개발하고 있으며 그 사용량이 증가하고 있습니다.

PyTorch 2.0의 출시는 딥 러닝 및 인공 지능 애플리케이션의 개발을 가속화하는 데 도움이 될 것이라고 Lightning AI의 최고 기술 책임자이자 PyTorch Lightning의 주요 유지 관리자 중 한 명인 Luca Antiga는 다음과 같이 말했습니다.

" PyTorch 2.0은 딥 러닝 프레임워크의 미래를 구현합니다. 사용자 개입 없이 PyTorch 프로그램을 캡처하는 기능, 즉시 사용 가능한 프로그램 생성 및 엄청난 기기 내 가속 기능은 AI 개발자에게 완전히 새로운 차원의 가능성을 열어줍니다. "

참조:

https://www.php.cn/link/d6f84c02e2a54908d96f410083beb6e0

https://www.php.cn/link/89b9e0a6f6d150 5fe13dea0f18a2dcfa

https://www.php.cn/link/3b2acfe2e38102074656ed938abf4ac3


위 내용은 PyTorch 2.0 공식 버전 출시! 코드 한 줄로 속도 2배 향상, 이전 버전과 100% 호환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제