:pytorch:PyTorch 2.5가 출시되었습니다🎉

:pytorch: PyTorch 2.5 소개

:pytorch:PyTorch 2.5(파이토치 2.5)는 다양한 성능 향상 및 호환성 확장을 통해 머신 러닝과 딥러닝 작업을 더욱 효율적으로 처리할 수 있게 돕습니다. 이번 릴리스의 주요 특징 중 하나는 CuDNN 백엔드를 통한 SDPA(Scaled Dot Product Attention)의 성능 개선으로, 최신 NVIDIA H100 GPU에서 더욱 빠른 처리 속도를 제공합니다. 또한, 모델의 중복 컴파일을 피하면서도 컴파일 시간을 줄일 수 있는 지역 컴파일 기능을 통해 반복되는 네트워크 모듈을 효율적으로 처리할 수 있습니다.

TorchInductor는 CPP 백엔드에 대한 지원을 강화하여 FP16(반정밀도 부동소수점) 연산, CPU 벡터화, AOT(Advance of Time) 모드 등을 포함해 성능을 크게 향상시켰습니다. 이번 PyTorch 2.5 릴리스는 504명의 기여자들이 4,000건 이상의 커밋을 통해 만들어졌습니다.

:pytorch: PyTorch 2.5의 주요 기능

CuDNN 백엔드 (SDPA 지원)

CuDNN을 통한 FlashAttention 백엔드는 torch.nn.functional.scaled_dot_product_attention 연산에 대한 성능 향상을 제공합니다. 특히 NVIDIA H100 GPU를 사용할 경우 FlashAttention V2 대비 최대 75% 더 빠른 성능을 구현할 수 있습니다. 이는 SDPA(Scaled Dot Product Attention)를 사용하는 모든 H100 이상의 GPU에서 기본적으로 활성화됩니다.

Regional Compilation (지역 컴파일) 기능

PyTorch 2.5는 torch.compile을 통해 지역 컴파일을 지원합니다. 이 기능은 반복적으로 사용되는 신경망 모듈(e.g., 대형 언어 모델(LLM)에서 사용되는 트랜스포머(Transformer) 레이어)을 전체 모델을 재컴파일하지 않고도 효율적으로 처리할 수 있습니다. 이로 인해 컴파일 시간이 크게 단축되며, 성능 저하도 1%에서 5%로 최소화됩니다.

TorchInductor CPU 백엔드 최적화

TorchInductor의 CPU 백엔드는 이번 릴리스에서 크게 개선되었습니다. CPP 백엔드 코드 생성, FX 합성(fusions)을 통한 커스터마이즈된 CPU 커널 처리 등 다양한 최적화가 이루어졌습니다. 특히, 템플릿 기반 GEMM 연산, 벡터화 지원 및 Symbolic Shape 처리가 포함된 성능 개선이 이뤄졌습니다. 이 최적화는 리눅스 및 윈도우 OS 모두에서 호환되며, PyTorch의 기본 Python 래퍼 뿐만 아니라 CPP 래퍼 및 AOT-Inductor 모드도 지원합니다. 193개의 모델을 테스트한 결과, TorchInductor는 97.5%의 경우에서 기존 방법보다 빠른 성능을 보였습니다.

PyTorch 2.5에 추가된 기능: Beta Stage

CuDNN 백엔드 (SDPA에 대한 Fused Flash Attention)

NVIDIA H100 GPU에서 CuDNN의 Fused Flash Attention 백엔드는 이전 버전 대비 최대 75% 더 빠른 성능을 제공하며, 이는 기본적으로 SDPA를 사용하는 모든 H100 이상의 GPU에서 활성화됩니다.

Torch Compile Regional Compilation 기능

지역 컴파일은 torch.dynamo.config.inline_inbuilt_nn_modules 설정이 기본적으로 활성화되어 반복되는 신경망 모듈을 재컴파일하지 않고 컴파일 시간을 크게 줄일 수 있는 기능입니다. 이 옵션은 특히 트랜스포머 레이어와 같은 반복적인 모듈을 사용하는 대형 모델에서 성능을 극대화하며, 성능 저하는 1%에서 5% 정도로 유지됩니다.

TorchInductor CPU 백엔드 최적화

TorchInductor의 CPU 백엔드가 더욱 최적화되었습니다. CPP 백엔드 코드 생성FX 합성 기능이 강화되었으며, Linux와 Windows에서 모두 사용할 수 있습니다. 특히, 벡터화를 활용한 성능 최적화와 다양한 연산 템플릿을 통한 속도 향상이 이루어졌습니다. 이 백엔드는 SDPA를 비롯한 다양한 연산에서 성능을 극대화하며, 현재까지 테스트된 대부분의 모델에서 기존 방식보다 빠른 결과를 보여주고 있습니다.

PyTorch 2.5에 추가된 기능: Prototype Stage

FlexAttention API

FlexAttention API는 다양한 주의(attention) 메커니즘(e.g., 슬라이딩 윈도우, 인과 마스크, PrefixLM)을 몇 줄의 PyTorch 코드만으로 구현할 수 있게 해줍니다. 이 API는 torch.compile을 활용하여 메모리 할당을 줄이고 최적화된 FlashAttention 커널을 생성합니다. 이를 통해 일반적인 주의 메커니즘 대비 성능 향상을 기대할 수 있습니다.

Compiled Autograd

Compiled Autograd는 전체 역전파 패스를 캡처할 수 있는 기능을 제공합니다. 이 기능은 AOT 디스패처로 추적된 역전파 그래프와 달리, 역전파 실행 시점에서 추적을 연기하여 더 유연하게 동작합니다. 또한, 역전파 훅을 그래프에 기록할 수 있습니다.

Flight Recorder

Flight Recorder는 분산 환경에서 발생할 수 있는 문제를 디버깅할 수 있도록 도와주는 새로운 도구입니다. 작업이 멈추거나 충돌하는 경우 관련 로그를 기록하여 문제가 발생한 랭크나 머신을 신속하게 파악할 수 있습니다.

Max-autotune 모드 (GEMM 템플릿 활용)

Max-autotune 모드는 CPU 백엔드에서 다양한 연산의 최적화된 구현을 선택하여 성능을 극대화하는 기능입니다. 특히, GEMM 관련 연산에서 높은 성능 향상을 제공하며, FP32, BF16, FP16, INT8 데이터 타입을 지원합니다.

TorchInductor CPU (Windows 지원)

이번 릴리스에서 TorchInductor는 Windows 운영 체제에서도 사용할 수 있도록 지원이 확장되었습니다. MSVC, Clang, Intel 컴파일러 등 다양한 컴파일러를 지원하며, Windows에서 PyTorch를 더욱 유연하게 사용할 수 있게 되었습니다.

FP16 지원 (CPU 경로)

FP16(Float16)은 신경망 훈련 및 추론에서 자주 사용되는 낮은 정밀도의 부동소수점 타입입니다. 이번 릴리스에서는 CPU 경로에서도 FP16이 지원되며, 이를 통해 성능 개선을 기대할 수 있습니다.

Autoload Device Extension

PyTorch는 이제 외부 디바이스 확장을 자동으로 로드하는 기능을 제공합니다. 이를 통해 사용자는 확장 기능을 수동으로 로드하지 않아도 되며, 환경 변수로 이 기능을 비활성화할 수 있습니다.

Intel GPU 지원 강화

이번 PyTorch 2.5에서는 Intel GPU에 대한 지원이 대폭 강화되었습니다. 특히 Intel® 데이터 센터 GPU 및 Intel® Arc™ GPU에서 성능이 크게 개선되었으며, Windows 환경에서 Intel® GPU를 지원하는 기능도 도입되었습니다.

PyTorch 2.5 릴리즈 블로그

곧 번역을 해서 올리도록 하겠습니다 :smiley:

더 상세한 PyTorch 2.5 릴리즈 내용 및 커밋, 이슈 확인하기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

3개의 좋아요