PyTorch 2.12 주요 변경 사항
PyTorch 2.12가 CUDA 성능, export, ROCm 지원을 크게 강화했다.
PyTorch 2.12는 CUDA 성능, export, graph capture, 분산 학습, ROCm, MPS를 전반적으로 강화했다. 이번 버전은 2,926개 커밋과 457명의 기여자로 완성됐다.
핵심 변화는 다음과 같다.
- CUDA batched
linalg.eigh가 cuSolversyevj_batched채택으로 이전 대비 최대 100배 빨라졌고, CuPy와의 오랜 성능 격차도 해소했다. torch.accelerator.Graph가 CUDA, XPU, out-of-tree backend를 아우르는 장치 비종속(device-agnostic) graph capture/replay API로 추가됐으며, backend별 구현은GraphImplInterface로 등록해 자율성을 유지한다.c10::Stream과torch.Stream에는is_capturing()가 들어갔다.torch.export.save/load는 Microscaling (MX) quantization 포맷과float8_e8m0fnudtype를 지원해 MXFP4, MXFP6, MXFP8 같은 압축 모델도 export할 수 있게 됐다.Adagrad에fused=True가 추가돼 Adam, AdamW, SGD처럼 단일 커널 최적화 경로를 제공한다.torch.cond는 CUDA 12.4의 conditional IF nodes를 활용해 CUDA Graph 안에서 캡처·재생되며, 현재는 eager와 cudagraphs backend에서 동작하고 Inductor 지원은 다음 단계로 남았다.addcdiv는 FMA 기반 lowering으로 CUDA와 XPU에서 수치 일관성을 높였고, optimizer-heavy training loop에서 컴파일 성능과 재현성을 함께 챙긴다.
분산 학습에서는 custom op가 ProcessGroup 객체를 직접 받을 수 있게 됐고, all_reduce와 reduce_scatter 같은 c10d functional collective도 객체와 문자열 이름을 모두 받는다. Profiler Events API는 flow ID, flow type, activity type, unfinished events, Python function events를 노출하고, NCCL collective trace는 새 seq_num으로 rank 간 상관분석이 쉬워졌다. FlightRecorder는 기존 nccl과 xccl에 더해 ncclx, gloo, torchcomms까지 지원 범위를 넓혔고, singleton race condition도 수정됐다.
플랫폼 쪽에서는 CUDA Graph에 enable_annotations가 추가돼 collective op name, process group, message size 같은 메타데이터를 trace에 넣을 수 있고, Green Context에는 workqueue limit이 추가됐다. ROCm 7.02 이상에서는 expandable segments가 들어갔고, rocSHMEM symmetric memory collectives와 FlexAttention 2-stage pipelining도 추가됐다. ROCm 7.12 이상에서는 hipSPARSELt가 기본 활성화되며, MI350X(gfx950)에서 FP8 semi-structured sparsity도 지원한다. Apple Silicon binary wheels에는 macOS 26 기반 Metal-4 오프라인 shader compilation이 추가됐고, 미리 컴파일한 .metallib를 직접 불러오는 전용 API도 포함됐다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.