PyTorch 2.8이 출시되었습니다🎉

PyTorch 2.8 소개

PyTorch는 2.8 버전을 통해 더욱 진화된 기능과 성능 최적화를 선보였습니다. 이번 릴리즈에는 새로운 컴파일러 기능과 다양한 하드웨어 플랫폼에 대한 지원을 포함하고 있으며, 특히 대규모 모델의 학습 및 추론에 필요한 성능과 유연성을 확보하는 데 초점을 맞추고 있습니다. 컴파일러 기반 기능의 고도화뿐 아니라, 개발자 경험 개선, 오류 방지 메커니즘 강화 등도 이 버전의 핵심 개선사항으로 꼽힙니다.

이번 릴리즈는 PyTorch 2.7 이후 총 4,164개의 커밋과 585명의 기여자이 함께 하였으며, PyTorch 커뮤니티의 활발한 참여와 협업이 다시 한 번 강조되었습니다. 특히 torch.compile을 중심으로 하는 TorchInductor의 성능 및 안정성 개선, Wheel Variants를 통한 플랫폼 최적화된 배포, 다양한 양자화 형식 및 분산 학습 지원 확대는 PyTorch의 적용 가능성을 한층 넓힐 것으로 기대합니다.

PyTorch 2.8의 주요 기능 요약

  • libtorch 제한적 안정 ABI 도입 : torch::stable::Tensor를 포함하여 C++/CUDA 확장을 버전 간 안정적으로 빌드 가능

  • Intel CPU에서 고성능 LLM 양자화 추론 지원 : A16W8, DA8W8, A16W4 등의 포맷 지원과 GEMM 최적화로 높은 효율성 달성

  • Wheel Variants (실험적) :

    • GPU 및 플랫폼 특성을 감지하여 최적화된 PyTorch 휠을 자동 설치.
    • Python 패키징 표준으로 제안 예정
  • ROCm 7 및 AMD gfx950 아키텍처 지원 강화 :

    • TorchInductor 및 AOTInductor에서 matmul, conv2d, _scaled_mm 등 템플릿 최적화
  • Control Flow Operators :

    • cond, while_loop, scan, map 등 복잡한 제어 흐름을 추론 및 내보내기 대상으로 컴파일 가능
  • CUTLASS 백엔드 공식 지원 :

    • TorchInductor와 AOTInductor 모두에서 mm, fp8 mm, addmm, bmm 등 GEMM 연산 최적화 가능

PyTorch 2.8의 실험적 API 기능들 (API-UNSTABLE FEATURES)

아래 기능들은 현재 실험적인 기능들이며, 이후 PyTorch 릴리즈에서 변경될 수 있습니다:

  • [API-Unstable] torch::stable::Tensor :

    • 제한적 ABI 안정성 도입으로 C++/CUDA 확장 재빌드 문제 완화
    • 지속적으로 확장 중이며, 간단한 예제로 구현된 libtorch의 안정적 확장은 여기에서 확인 가능
  • [API-Unstable] Intel CPU용 양자화 LLM 추론 :

    • A16W8, DA8W8, A16W4 등 다양한 양자화 형식 지원
    • TorchInductor 기반 GEMM 템플릿 최적화로 높은 CPU 성능 달성
    • 더 상세한 내용은 RFC에서 확인 가능
  • [API-Unstable] Wheel Variants :

    • GPU/하드웨어 환경에 따라 가장 적합한 PyTorch 패키지를 자동 설치
    • 실험적(RFC)인 기능으로, 향후 Python 공식 패키징 시스템(Python Upstream) 포함을 목표로 함
    • 호환성은 보장되지 않으니 주의 필요
    • 향후 패키징 전략의 방향성 관련 블로그 공개 및 PyTorch 2.8 Live Q&A 진행(8/14) 예정
    • Linux x86/aarch64 및 macOS에서는 아래 명령어로 실행 가능:
      curl -LsSf https://astral.sh/uv/install.sh | INSTALLER_DOWNLOAD_URL=https://wheelnext.astral.sh sh
      
    • Windows x86에서는 아래 명령어로 실행 가능:
      powershell -ExecutionPolicy Bypass -c “$env:INSTALLER_DOWNLOAD_URL=‘https://wheelnext.astral.sh’; irm https://astral.sh/uv/install.ps1 | iex
      
  • [API-Unstable] Inductor CUTLASS 백엔드 공식 통합 :

    • NVIDIA GEMM 템플릿 커널을 Inductor 백엔드로 활용
    • 최대 16%까지 성능 향상 확인 (triton 대비)
    • 상세한 내용은 PyTorch Compiler YouTube 시리즈의 이 영상에서 확인 가능
  • [API-Unstable] Inductor Graph Partition for CUDAGraph :

    • CUDA 연산만 포함된 함수에서 CPU 호출 오버헤드를 줄이기 위한 CUDAGraph 최적화
    • CUDAGraph 미지원 연산들을 자동 분리하여 파티셔닝하고, 가능한 부분만 CUDAGraph로 실행
      • CUDAGraph 미지원 연산 예: CPU 연산, 디바이스 복사, 안전하지 않은 커스텀 연산 등
    • 추론 속도 향상과 그래프 안정성 개선에 기여
  • [API-Unstable] torch.compile 계층적 컴파일 (Hierarchical Compilation) :

    • 중첩 컴파일 영역(nested_compile_region) 을 표시하여 한 번만 컴파일 후 재사용 가능
    • LLM의 Transformer처럼 동일한 구조가 여러 번 반복되는 모델에서 컴파일 시간 단축 가능
  • [API-Unstable] 제어 흐름 연산자(Control Flow Operators) 라이브러리 :

    • cond, while_loop, scan 등 동적 제어 흐름 내보내기/최적화 지원
    • 추론 성능 유지하면서 복잡한 모델 구조 표현 가능
  • [API-Unstable] HuggingFace SafeTensors 지원 :

    • DCP(Distributed Checkpointing)에서 SafeTensors 저장/로드/재샤딩 지원
    • SafeTensor가 사실상의 표준으로 자리잡아 DCP에서도 체크포인트 저장/로드/재샤딩 기능 지원
  • [API-Unstable] SYCL 커널 확장 지원 (Intel GPU) :

    • 사용자 정의 연산을 SYCL로 구현하여 XPU 백엔드에서 실행 가능
    • 현재 이 기능은 Linux 사용자들에게 한정적으로 제공되며, 튜토리얼은 여기에서 확인 가능
  • [API-Unstable] XPU 장치에서의 A16W4 양자화 :

    • Intel GPU에서 TorchAO를 활용한 A16W4 양자화 지원
    • BF16/FP16 활성화와 RTN, AWQ 양자화 방식 선택 가능
  • [API-Unstable] Intel GPU 분산 백엔드 XCCL 도입 :

    • XPU 환경에서 DDP, FSDP, TP, PP 등 분산 학습 구성 지원
    • allreduce, allgather, reducescatter 등 통신 연산 완전 지원
    • 튜토리얼은 여기에서 확인 가능

주요 주의 사항 및 비호환 변경

  • CUDA 12.8 및 12.9 환경에서는 Maxwell, Pascal, Volta 아키텍처 지원이 제거되었습니다. sm50~sm70 GPU 사용자는 CUDA 12.6을 사용해야 합니다. (관련 이슈: #157517, #158478, #158744)

  • PyTorch 2.8이 macOS Ventura에서 GPU 가속(MPS 백엔드)을 지원하는 마지막 버전입니다. PyTorch 2.9부터는 macOS Sonoma(2023년 9월 출시) 이상이 필요합니다.

  • torch.ao.quantization 모듈은 다다음 릴리즈인 PyTorch 2.10에서 제거될 예정이며, 앞으로는 새로운 양자화 프레임워크인 torchao를 사용해야 합니다. (관련 이슈: #153892)

  • torch.nn.Hardshrink() 등에서 지원하지 않는 dtype 입력 시 오류 유형이 RuntimeError → NotImplementedError로 변경되었습니다. (관련 이슈: #155470)

  • 이제 사용자 정의 autograd.Function에서 view 객체에 대한 바꿔치기(in-place) 연산이 이제 명확히 오류로 처리됩니다. (관련 이슈: #153094)

  • torch.export.export_for_inference() 함수는 제거되었으며, export_for_training().run_decompositions() 로 대체되었습니다. (관련 이슈: #149078)

성능 및 버그 수정

  • TorchInductor 및 CUTLASS에서 다양한 GEMM 최적화가 적용되어, CPU와 GPU 모두에서 연산 성능이 개선되었습니다.

  • MPS에서 LayerNorm, SDPA, cumsum 등 다수 연산자 성능이 향상되었으며, Apple Silicon 기반 환경에서 컴파일러를 활용한 성능 개선이 가능해졌습니다.

  • torch.compile과 Inductor 관련 컴파일러 설정 및 환경변수들이 재정리되고 통합되었습니다.

  • 다양한 분산 학습 구성 요소(FSDP, DDP, DTensor, NCCL 등)에서 성능 개선, 오류 방지, 통신 안정성이 강화되었습니다.

:scroll: PyTorch 2.8 출시 블로그

:github: PyTorch 2.8 릴리즈노트




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

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

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

4개의 좋아요