PyTorch 2.6 주요 변경 사항
이번 PyTorch 2.6 업데이트에서는 여러 가지 중요한 개선이 이루어졌습니다:
- torch.compile이 이제 Python 3.13에서 지원됩니다.
- 새로운 성능 최적화 옵션인 torch.compiler.set_stance가 추가되었습니다.
- AOTInductor의 여러 가지 개선 사항이 포함되었습니다.
- 이 외에도 X86 CPU에서 FP16(Floating Point 16) 지원이 추가되었습니다.
Conda 채널을 활용한 배포 중단
이번 PyTorch 2.6 릴리즈부터 Conda를 활용한 PyTorch 공식 배포가 중단되었습니다. 자세한 내용은 PyTorch 공식 Anaconda 채널 지원 종료 공지(Deprecating PyTorch’s official Anaconda channel)를 참고해주세요.
빌드 플랫폼 변경
이번 릴리즈에서는 실험적인 리눅스 바이너리(CUDA 12.6.3, Linux Aarch64, Linux ROCm 6.2.4, Linux XPU 포함)가 CXX11_ABI=1
로 빌드되었으며, manylinux 2.28 빌드 플랫폼을 사용합니다.
향후 PyTorch 2.7 릴리즈에서는 모든 리눅스 빌드를 manylinux 2.28
및 CXX11_ABI=1
로 전환할 계획입니다. 자세한 내용 및 논의는 [RFC] PyTorch 차기 wheel 빌드 플랫폼: Manylinux-2.28을 참조하세요.

torch.load()
의 weights_only
매개변수 기본값 변경
PyTorch 2.6부터 중요한 보안 개선 조치로 인해 torch.load의 weights_only 매개변수 기본값이 변경되었습니다. 이 변경 사항으로 인해 이전 버전과의 호환성이 깨질 수 있습니다.
자세한 내용은 포럼 게시글을 확인하세요.
추가 기능 목록
이번 PyTorch 2.6에 추가된 Beta 및 Prototype 기능들은 다음과 같습니다:
Beta 기능 | Prototype 기능 |
---|---|
torch.compiler.set_stance | Improved PyTorch user experience on Intel GPUs |
torch.library.triton_op | FlexAttention support on X86 CPU for LLMs |
torch.compile support for Python 3.13 | Dim.AUTO |
New packaging APIs for AOTInductor | CUTLASS and CK GEMM/CONV Backends for AOTInductor |
AOTInductor: minifier | |
AOTInductor: ABI-compatible mode code generation | |
FP16 support for X86 CPUs |
(참고) PyTorch의 기능 구분: Stable / Beta / Prototype
PyTorch는 새로운 기능을 도입할 때 다음의 Stable / Beta / Prototype의 3가지 단계를 거쳐 도입됩니다:
-
Stable(안정적인 기능): 이러한 기능은 장기적으로 유지되며, 일반적으로 주요한 성능 제한이나 문서화의 공백이 없어야 합니다. 또한, 이전 버전과의 호환성을 유지할 것으로 예상되지만, 호환성이 깨지는 변경 사항이 발생할 수 있으며, 이러한 경우 한 릴리스 전에 사전 공지가 제공됩니다.
-
Beta(베타 기능): 이러한 기능은 사용자 피드백을 기반으로 API가 변경될 가능성이 있거나, 성능 개선이 필요하거나, 연산자(operator) 전반에 대한 지원이 아직 완전하지 않기 때문에 베타로 태그 지정됩니다. 베타 기능의 경우, 해당 기능이 안정적인(Stable) 분류로 이어질 수 있도록 지원할 것을 약속하지만, 이전 버전과의 호환성을 유지할 것을 보장하지는 않습니다.
-
Prototype(프로토타입 기능): 이러한 기능은 일반적으로 PyPI 또는 Conda와 같은 바이너리 배포판에 포함되지 않으며(예외적으로 런타임 플래그 뒤에서 제공될 수 있음), 피드백 및 테스트를 위한 초기 단계에 있습니다.
PyTorch 2.6의 Beta 기능 목록 
torch.compiler.set_stance
이 기능을 사용하면 torch.compile
이 컴파일된 함수 호출 간에 서로 다른 동작(“stance”)을 지정할 수 있습니다.
예를 들어, eager_on_recompile
설정을 사용하면 PyTorch는 다시 컴파일이 필요할 때 즉시 실행 방식(eager execution)으로 코드를 실행하며, 가능하면 캐시된 컴파일된 코드를 재사용합니다.
자세한 내용은 set_stance
문서 및 torch.compiler.set_stance
를 활용한 동적 컴파일 제어 튜토리얼을 참조하세요.
torch.library.triton_op
torch.library.triton_op
은 사용자 정의 Triton 커널을 기반으로 하는 사용자 정의 연산자(custom operator) 를 생성하는 표준 방법을 제공합니다.
사용자가 Triton 커널을 직접 정의하여 맞춤형 연산자로 변환할 경우, torch.library.triton_op
을 사용하면 torch.compile
이 내부 구현을 분석할 수 있어, Triton 커널을 최적화할 수 있습니다.
자세한 내용은 triton_op
문서 및 torch.compile
을 활용한 사용자 정의 Triton 커널 튜토리얼을 참조하세요.
torch.compile
의 Python 3.13 지원
기존의 torch.compile
은 Python 3.12까지 지원했지만, 이제 Python 3.13에서도 최적화된 모델 실행이 가능합니다.
AOTInductor의 새로운 패키징 API
새로운 패키지 형식인 PT2 아카이브(PT2 Archive) 가 도입되었습니다.
이 패키지는 AOTInductor 실행에 필요한 모든 파일을 포함한 ZIP 파일로, 사용자가 필요한 모든 항목을 쉽게 공유할 수 있도록 합니다.
또한, 여러 개의 모델을 하나의 아티팩트(artifact)로 패키징할 수 있으며, 패키지 내부에 추가 메타데이터(metadata) 저장 기능도 제공됩니다.
자세한 내용은 torch.export AOTInductor 튜토리얼을 확인하세요.
AOTInductor: Minifier
AOTInductor API 사용 중 오류가 발생할 경우, AOTInductor Minifier를 활용하여 오류를 재현할 수 있는 최소한의 nn.Module
을 생성할 수 있습니다.
자세한 내용은 AOTInductor Minifier 문서를 참조하세요.
AOTInductor: ABI 호환 모드 코드 생성
AOTInductor가 생성한 모델 코드는 PyTorch C++ 라이브러리에 의존합니다.
PyTorch는 빠르게 발전하는 프로젝트이므로, 기존 AOTInductor에서 컴파일된 모델이 새로운 PyTorch 버전에서도 실행 가능해야 합니다(AOTInductor의 하위 호환성 유지).
이를 위해, PyTorch의 libtorch 내에서 안정적인 C 인터페이스를 정의하고, AOTInductor가 해당 API만 사용하도록 설정하여 응용 프로그램 바이너리 인터페이스(ABI) 호환성을 유지합니다.
향후 PyTorch 버전에서도 AOTInductor로 컴파일된 모델이 안정적으로 실행될 수 있도록 보장할 예정입니다.
x86 CPU에서 FP16 지원 (Eager 및 Inductor 모드)
Float16 데이터 타입(FP16)은 메모리 사용량 감소 및 연산 속도 향상을 위해 AI 추론 및 학습에 널리 사용됩니다.
최근 출시된 Intel® Xeon® 6 프로세서(P-Cores 포함)는 AMX(Advanced Matrix Extensions) 기반으로 Float16을 네이티브로 지원합니다.
PyTorch 2.5에서 FP16 지원이 프로토타입 기능으로 도입되었으며, 이번 PyTorch 2.6에서는 Eager 모드 및 torch.compile
+ Inductor 모드 모두에서 더욱 안정적으로 동작하도록 개선되었습니다.
이제 다양한 워크로드에서 기능성과 성능이 검증된 Beta 수준 기능으로 제공됩니다.
PyTorch 2.6의 Prototytpe 기능 목록 
Intel GPU에서 PyTorch 사용자 경험 향상
Intel GPU에서 PyTorch 실행이 더욱 간소화되었습니다.
- 간편한 설치 지원:
torch-xpu
pip wheel을 원클릭 설치하여 딥러닝 워크로드를 실행할 수 있습니다. 또한, Intel GPU 개발 소프트웨어 번들을 설치하고 활성화하는 복잡한 과정이 제거되었습니다. - **Windows 바이너리 배포 지원: ** 이제 Windows에서도
torch-core
,torchvision
,torchaudio
바이너리가 Intel GPU에서 실행 가능하도록 배포되었습니다. - 지원되는 GPU 모델 확장: 기존 Intel® Core™ Ultra 프로세서 및 Intel® Arc™ A-Series 그래픽 외에, 최신 Intel® Arc™ B-Series 그래픽도 지원됩니다.
- SYCL 커널을 활용한
Aten
연산자 지원 강화: Intel GPU에서 Eager 모드 실행을 더욱 원활하게 지원하도록 최적화되었습니다. 또한,torch.compile
에서 Intel GPU를 위한 성능 최적화 및 버그 수정이 포함되었습니다.
자세한 내용은 Intel GPU 지원 가이드를 참조하세요.
x86 CPU에서 LLM을 위한 FlexAttention 지원
PyTorch 2.5에서 처음 도입된 FlexAttention은 다양한 Attention 변형을 최적화할 수 있는 유연한 API를 제공합니다.
이번 PyTorch 2.6에서는 x86 CPU에서 FlexAttention이 지원되며, TorchInductor의 C++ 백엔드를 활용하여 동작합니다.
이 때, 기존 C++ 템플릿 기능을 확장하여 LLM 추론에서 중요한 PageAttention과 같은 다양한 Attention 변형을 지원합니다. 또한, CPU에서 최적화된 성능을 제공하며, FlexAttention API를 활용하여 간편하게 Attention 연산을 구성할 수 있습니다.
Dim.AUTO
Dim.AUTO
는 torch.export
와 함께 동적 크기(dynamic shape)를 자동으로 추론할 수 있는 기능을 제공합니다. 이를 통해 최소/최대 범위, 차원 간 관계, 정적/동적 동작을 자동으로 감지할 수 있습니다.
이를 통해 기존 named-Dims 접근 방식보다 더 직관적인 경험을 제공하며, 사용자는 모델의 동적 동작을 미리 완벽히 이해하지 않아도 됩니다. 또한, 모델 종속적이지 않은 일반적인 코드 작성이 가능하므로, 동적 크기 내보내기(export)가 더욱 쉬워집니다.
자세한 내용은 torch.export
튜토리얼을 참조하세요.
AOTInductor에서 CUTLASS 및 CK GEMM/CONV 백엔드 지원
CUTLASS 및 CK 백엔드를 활용하면 GEMM 연산을 자동으로 최적화할 수 있습니다. 이제 C++ 런타임 환경에서 실행되는 AOTInductor에서도 해당 백엔드를 사용할 수 있습니다. 불필요한 커널 바이너리 컴파일을 제거하여 컴파일 속도를 향상하고 동적 크기 지원을 강화합니다.