기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
집합 통신 초기화 개선 사항
NCCL 및 Gloo는 분산 훈련 프로세스 전반에 걸쳐 집합 작업(예: 전체 감소 및 브로드캐스트)을 가능하게 하는 기본 통신 라이브러리입니다. 그러나 기존 NCCL 및 Gloo 초기화는 장애 복구 중에 병목 현상을 일으킬 수 있습니다.
표준 복구 프로세스에서는 모든 프로세스가 중앙 집중식 TCPStore에 연결하고 루트 프로세스를 통해 조정해야 하므로 재시작 중에 특히 문제가 되는 비용이 많이 드는 오버헤드가 발생합니다. 이 중앙 집중식 설계는 필수 TCPStore 연결로 인한 조정 오버헤드, 각 재시작 시 복구 지연이 전체 초기화 시퀀스를 반복해야 함, 루트 프로세스 자체에서 단일 장애 지점이라는 세 가지 중요한 문제를 생성합니다. 이렇게 하면 훈련이 초기화되거나 다시 시작될 때마다 비용이 많이 드는 중앙 집중식 조정 단계가 적용됩니다.
HyperPod 체크포인트 없는 훈련은 이러한 조정 병목 현상을 제거하여 초기화를 "루트 없는" 및 "TCPStoreless."
루트 없는 구성
Rootless를 활성화하려면 다음 환경 변수를 노출하면 됩니다.
export HPCT_USE_ROOTLESS=1 && \ sysctl -w net.ipv4.ip_local_port_range="20000 65535" && \
HPCT_USE_ROOTLESS: 0 또는 1. 를 사용하여 루트 없는 설정 및 해제
sysctl -w net.ipv4.ip_local_port_range="20000 65535": 시스템 포트 범위 설정
Rootless를 활성화하는 예제를
루트리스
HyperPod 체크포인트리스 훈련은 NCCL 및 Gloo 프로세스 그룹을 위한 새로운 초기화 방법인 Rootless 및 TCPStoreless를 제공합니다.
이러한 최적화를 구현하려면 NCCL, Gloo 및 PyTorch를 수정해야 합니다.
타사 라이브러리 APIs를 확장하여 이전 버전과의 호환성을 유지하면서 Rootless 및 Storeless NCCL 및 Gloo 최적화 활성화
최적화된 경로를 조건부로 사용하고 프로세스 중 복구 문제를 처리하도록 프로세스 그룹 백엔드 업데이트
글로벌 그룹 카운터를 통해 대칭 주소 패턴을 유지하면서 PyTorch 분산 계층에서 값비싼 TCPStore 생성 우회
다음 그래프는 분산 훈련 라이브러리의 아키텍처와 체크포인트 없는 훈련의 변경 사항을 보여줍니다.
NCCL 및 Gloo
이러한 패키지는 집합 통신의 핵심 기능을 수행하는 독립적인 패키지입니다. ncclCommInitRank와 같은 주요 APIs를 제공하여 통신 네트워크를 초기화하고, 기본 리소스를 관리하고, 집합 통신을 수행합니다. NCCL 및 Gloo에서 사용자 지정을 변경한 후 Rootless 및 Storeless는 통신 네트워크의 초기화를 최적화합니다(예: TCPStore에 대한 연결 건너뛰기). 원래 코드 경로 또는 최적화된 코드 경로를 유연하게 사용하도록 전환할 수 있습니다.
PyTorch 프로세스 그룹 백엔드
프로세스 그룹 백엔드, 특히 ProcessGroupNCCL 및 ProcessGroupGloo는 해당 기본 라이브러리의 APIs를 호출하여 ProcessGroup APIs를 구현합니다. 타사 라이브러리의 APIs를 확장하므로 타사 라이브러리를 올바르게 호출하고 고객의 구성을 기반으로 코드 경로 전환을 수행해야 합니다.
최적화 코드 경로 외에도 프로세스 그룹 백엔드를 변경하여 프로세스 중 복구를 지원합니다.