기존 백엔드는 복구용으로 유지…새 버전 안정적이면 내년 초 2.16에서 제거

핵심 요약

  • PyTorch 2.15가 GPU 간 통신을 맡는 NCCL 백엔드를 재설계해 장애 진단과 복구를 개선했다. 느리거나 고장 난 GPU를 제외·교체하고 작업 기록으로 장애 원인을 살필 수 있다.

PyTorch 2.15가 엔비디아(Nvidia)의 집단 통신 라이브러리 NCCL과 연결하는 백엔드를 새로 작성해 대규모 AI 학습의 장애 진단과 복구를 개선했다. GPU 하나가 고장 났을 때 전체 학습 작업을 처음부터 다시 시작해야 하는 부담을 줄이는 데 초점을 맞췄다.

새 백엔드는 외부 오케스트레이터가 고장 나거나 느려진 GPU를 제외하고 대체 작업자를 배정할 수 있도록 재구성을 쉽게 했다. 장애 원인을 추적하는 ‘플라이트 레코더’도 추가했다. 이전에는 GPU 클러스터가 시간 초과나 교착 상태로 멈추면 일반적인 오류 메시지만 받았지만, 이제는 모든 연산을 연속된 스냅샷으로 기록해 장애 발생 후 살펴볼 수 있다.

통신 구조도 단순화했다. 기존 ProcessGroupNCCL은 프로세스 그룹마다 통신 객체를 수십 개씩 생성할 수 있어 간헐적인 교착 상태와 예측하기 어려운 성능을 초래했다. 새 백엔드는 초기화 때 프로세스 그룹 하나에 통신 객체 하나만 배정한다. 기본적으로 여러 통신 객체 사이의 간섭과 그에 따른 복잡성을 없애고, 병렬 처리가 필요하면 프로세스 그룹을 추가하도록 했다.

메타(Meta)에서 분산 컴퓨팅을 담당하는 소프트웨어 엔지니어이자 PyTorch 핵심 개발자인 트리스탄 라이스는 11월 5일 유튜브 생방송에서 기존 인터페이스에 기술 부채가 쌓여 재작성이 필요했다고 설명했다. 같은 ProcessGroupNCCL 이름을 쓰는 새 백엔드는 개발자가 새 기능을 추가하기도 쉽게 한다. 기존 버전은 문제 발생 시 되돌릴 수 있도록 2.15에 남겨뒀다. 새 백엔드가 예상대로 작동하면 내년 초로 예정된 2.16 릴리스에서 기존 버전을 제거한다.

이번 업데이트에는 비동기 단방향 데이터 전송을 위한 새 Python 전송 API도 포함됐다. 학습기와 생성기 사이에 가중치를 동기화하는 학습 작업에 적합하다. 애플(Apple) 기기의 병렬 처리 개선과 엔비디아 차세대 Blackwell GPU 지원도 담았다. 전체 업데이트에는 기여자 583명이 참여해 커밋 3,117건을 반영했다.

NCCL은 Nvidia Collective Communications Library의 약자로, 단일 노드 내부와 여러 노드로 이뤄진 클러스터에서 GPU 간 통신을 지원한다. 신경망 학습·추론 과정에서는 텐서, 그래디언트, 활성값, 가중치 등을 계속 주고받아야 한다. NCCL은 대규모 GPU 클러스터에서 병목을 일으킬 수 있는 표준 TCP 기반 네트워크 스택 대신 최적화된 통신 경로로 데이터를 옮겨 CPU 부담을 줄인다.

엔비디아는 SC15에서 NCCL을 처음 공개했고, 페이스북(Facebook) 개발진은 2016년 PyTorch를 만들면서 이를 채택했다. Lua 기반 머신러닝 라이브러리 Torch를 Python 기반으로 구현하려는 작업이었다. AI 소프트웨어 업체 노스플랭크(Northflank)의 공동 창업자 윌 스튜어트는 블로그에서 “모든 주요 머신러닝 연구소(오픈AI(OpenAI), 딥마인드(DeepMind), 메타, 엔비디아)가 PyTorch를 사용한다. 이는 확산 모델과 대규모 언어 모델부터 추천 시스템과 로보틱스까지 모든 것을 구동한다. 이처럼 널리 쓰이는 것은 우연이 아니다”라고 썼다.

인공지능(AI)과 스타트업 분야의 주요 소식을 전합니다.