PyTorch 2.13: LLM 학습 GPU 메모리 최대 4배 절감, FlexAttention 12.3배 빨라져
PyTorch 2.13이 526명의 기여자로부터 3,328개의 커밋과 함께 출시됩니다. 주요 신기능: nn.LinearCrossEntropyLoss로 LLM 학습 시 최대 4배 GPU 메모리 절감, Apple Silicon에서 FlexAttention 최대 12.3배 가속, 분산 학습을 현대화하는 새로운 torchcomms 백엔드.
이 기사는 AI가 1차 출처를 기반으로 생성했습니다.
PyTorch 2.13이 2026년 7월 8일, 이전 버전 대비 526명의 기여자로부터 3,328개의 커밋과 함께 출시됩니다. 이번 릴리스는 ML 엔지니어들이 만성적으로 겪어온 세 가지 고통을 직접 해소하는 변화를 담고 있습니다. 대형 모델 학습 시 GPU 메모리, Apple Silicon에서의 어텐션 속도, 분산 학습의 복잡성입니다. 그 외에도 Arm Armv9-A, Intel XPU, Python 3.15로 플랫폼 지원이 확장되며, safetensors 형식이 외부 라이브러리 없이 네이티브로 지원됩니다.
손실 융합: GPU 메모리 최대 4배 절감
PyTorch 2.13에서 가장 인상적인 신기능은 새로운 클래스 **nn.LinearCrossEntropyLoss**입니다. 처음에는 기술적 세부 사항처럼 보이지만, 대형 어휘로 언어 모델을 학습하는 모든 이에게 그 함의는 상당합니다.
LLM 학습의 표준 흐름은 이렇습니다. 최종 선형 레이어가 모델의 은닉 상태를 어휘 공간(예: 10만 토큰)에 투영하고, 그다음 크로스 엔트로피 손실이 정답과 비교하여 오차를 계산합니다. 문제는 중간 결과물의 크기에 있습니다. 10만 개 이상의 어휘를 가진 모델에서 이 선형 투영은, 역전파 중 기울기를 계산하기 위해 GPU에 저장해야 하는 거대한 텐서를 필요로 합니다.
nn.LinearCrossEntropyLoss는 이 두 단계를 하나의 연산으로 융합합니다. 투영과 손실이 함께 계산되고, 커널은 전체 중간 결과를 구체화하여 VRAM에 보관하지 않습니다. 결과는 대형 어휘를 가진 모델 학습 시 최대 4배 낮은 최대 GPU 메모리 점유율입니다. API는 드롭인 대체품으로 설계되었으며, 레이블 스무딩, 가중치 연결(weight tying), z-loss 정규화와 함께 동작하고, 마이그레이션에는 최소한의 코드 변경만 필요합니다.
LinearCrossEntropyLoss가 그토록 중요한 이유
80GB VRAM을 갖춘 현대적인 GPU를 사용하더라도, LLM 학습은 사용 가능한 배치 크기, 모델이 볼 수 있는 시퀀스 길이, 실행 가능한 모델 크기를 결정하는 메모리 한계에 직면합니다. 메모리 장벽은 추상적인 것이 아닙니다. 가용 하드웨어로 수행할 수 있는 실험과 그렇지 못한 실험을 결정합니다.
최대 메모리 점유율을 4배 줄인다는 것은 실질적으로, 동일한 GPU에서 더 큰 모델을 학습하거나, 더 큰 배치를 사용하거나, 더 긴 컨텍스트로 작업할 수 있음을 의미합니다. 수백 개의 GPU 클러스터에 접근하지 못하는 연구 실험실과 스타트업에게, 이것은 비싼 장비를 구입하지 않고도 달성 가능한 것을 바꿔주는 실질적인 진보입니다.
Apple Silicon의 FlexAttention: 최대 12.3배 빨라져
PyTorch 2.13은 MPS 백엔드(Apple Silicon)에 FlexAttention을 제공합니다. 장문 컨텍스트 모델에서 사용되는 슬라이딩 윈도우 어텐션 같은 희소(sparse) 어텐션 패턴에서, 속도 향상은 SDPA(Scaled Dot-Product Attention) 대비 최대 12.3배입니다.
구체적인 수치가 모든 것을 말해줍니다. 256개 요소의 슬라이딩 윈도우를 가진 32,768 토큰 시퀀스는 동일한 Apple Silicon 칩에서 표준 SDPA의 약 431ms 대신 FlexAttention으로 약 35ms를 요구합니다. 이 차이는 Mac에서의 장문 컨텍스트 추론을 이론적으로 실현 가능한 것에서 실용적으로 빠른 것으로 전환시킵니다.
FlexAttention을 위한 결정론적 역전파도 추가되었습니다. torch.use_deterministic_algorithms(True)로 활성화되는 비트 단위 재현 가능한 기울기는 장문 시퀀스에서 1% 미만의 시간 오버헤드를 가집니다. 기울기 재현성은 디버그와 실행 간 일관성이 기대되는 프로덕션 학습 파이프라인에 중요합니다.
새로운 컴파일 백엔드와 분산 학습
PyTorch 2.13은 Inductor를 위한 CuTeDSL 「네이티브 DSL」 백엔드를 도입합니다. NVIDIA GPU에서의 GEMM과 RMSNorm 연산을 위한 Triton의 대안입니다. 커널 컴파일은 GIL 병목을 제거하는 서브프로세스 풀 덕분에 빨라졌습니다. 병렬 커널 컴파일이 파이썬의 Global Interpreter Lock에서 더 이상 블록되지 않아, 전체 컴파일 과정이 멀티코어 시스템에서 더 빨라집니다.
분산 학습 측면에서, 새로운 라이브러리 torchcomms가 분산 학습을 위한 현대적인 통신 계층으로 기존 c10d 백엔드를 대체합니다. 구조화된 로깅, collective 트레이싱, 향상된 장애 허용성을 제공합니다. 클러스터의 일부가 일시적으로 다운될 때의 그레이스풀 타임아웃과 부분 노드 그룹 복구 지원이 포함됩니다. FSDP2는 통신 오버랩을 획득합니다. reduce-scatter와 all-gather 연산이 이제 병렬로 실행될 수 있으며(set_separate_reduce_scatter_group을 통해 옵트인), 빠른 네트워크 연결을 갖춘 클러스터에서 분산 학습 처리량을 높입니다.
통합 두통을 덜어주는 실용적인 세부 사항: **torch.load("foo.safetensors")**가 이제 외부 safetensors 라이브러리 없이 네이티브로 작동합니다. 형식이 자동으로 감지되고 로드됩니다.
더 넓은 플랫폼: Arm, Intel XPU, Python 3.15 및 호환성 변경
PyTorch 2.13은 여러 방면에서 동시에 플랫폼 지원을 확장합니다.
Arm Armv9-A: torch.compile이 128비트 및 256비트 SVE 기능 전파와 함께 Neoverse V2 시리즈와 AWS Graviton4 AArch64 프로세서를 지원합니다. Armv9-A 아키텍처 기반의 클라우드 서버가 이제 컴파일된 PyTorch를 위한 정식 플랫폼이 됩니다.
Intel XPU 텔레메트리: Intel XPU 장치 추적을 위한 새로운 API들, torch.xpu.device_memory_used(), CPU 활용률, 전력 소비, 클럭 속도, 온도가 추가되어 ML 엔지니어에게 지금까지 CUDA 장치에서만 가능했던 가시성을 제공합니다.
Python 3.15: Linux(x86_64 및 aarch64)에서 바이너리 지원이 추가되며, 프리 스레드 변형(3.15t)도 포함됩니다. 참고: Python 3.15에서 torch.compile은 아직 지원되지 않고, 3.15용 torchvision 바이너리 패키지는 빌드되지 않았습니다. 두 가지 모두 향후 버전에서 제공됩니다.
CUDA: 기본 버전이 CUDA 13.0으로 변경됩니다. CUDA 12.8 및 12.9 빌드는 바이너리 패키지 매트릭스에서 제거됩니다.
호환성 변경: 명명된 텐서(named tensors)가 이번 릴리스로 PyTorch에서 최종적으로 제거됩니다. 여러 버전 전부터 예고된 강력한 지원 중단입니다. 분산 컬렉티브 all_gather_into_tensor와 reduce_scatter_tensor가 all_gather_single과 reduce_scatter_single로 이름이 변경됩니다. Bazel 빌드가 제거되고, CPython 3.13t가 Linux 바이너리 매트릭스에서 제외됩니다.
Apple Silicon MPS 백엔드는 대규모 내부 마이그레이션을 거칩니다. 복사, 형변환, 감소, 정렬, scatter/gather, embedding backward 연산이 이제 네이티브 Metal 컴퓨트 커널로 직접 실행되어, 첫 번째 실행 지연 시간을 느리게 만들었던 MPSGraph 컴파일 오버헤드를 제거합니다.
직접 저자에게 자세한 내용을 듣고 싶은 사용자를 위해: 2026년 7월 22일 태평양 표준시 오전 11시에 Alban Desmaison, Andrey Talman, Piotr Białecki와의 라이브 Q&A가 진행됩니다(사회자: Chris Gottbrath).
자주 묻는 질문
- nn.LinearCrossEntropyLoss란 무엇이며 왜 중요한가요?
- nn.LinearCrossEntropyLoss는 최종 선형 프로젝션과 크로스 엔트로피 손실을 하나의 연산으로 융합하여, 대형 어휘를 가진 모델의 최대 GPU 메모리 점유율을 최대 4배 줄여줍니다. nn.Linear와 nn.CrossEntropyLoss 조합의 드롭인 대체품입니다.
- PyTorch 2.13에서 Apple Silicon의 FlexAttention은 얼마나 빨라졌나요?
- 슬라이딩 윈도우 어텐션 같은 희소(sparse) 어텐션 패턴에서 SDPA 대비 최대 12.3배 빨라졌습니다. 32,768 토큰 시퀀스의 경우 지연 시간이 약 431ms에서 약 35ms로 떨어집니다.
- torchcomms란 무엇이며 기존 시스템을 무엇으로 대체하나요?
- torchcomms는 c10d를 대체하는 분산 학습을 위한 새로운 통신 백엔드입니다. 구조화된 로깅, collective 트레이싱, 그레이스풀 타임아웃, 더 많은 노드 수에서의 향상된 장애 허용성을 제공합니다.