ProcessGroup 제자리 재구성으로 랭크 장애 뒤에도 클러스터 웜 상태를 유지한 채 복구합니다 | DAKER 커뮤니티
한 줄 요약
PyTorch 2.14에서 Backend·ProcessGroup이 제자리 재구성 인터페이스를 노출합니다. 랭크가 죽어도 프로세스 그룹을 통째로 부수고 다시 만들지 않고, abort 훅과 집단통신 전후 훅을 같은 경로로 묶어 그룹을 다시 세울 수 있습니다. Gloo에도 장애 허용 지원이 붙었습니다.
대규모 분산 학습에서 한 랭크만 죽으면 예전에는 웜 상태를 버리고 전체를 재시작했습니다. 오늘은 작은 다중 프로세스 잡에서 한 랭크를 의도적으로 끊은 뒤, 재구성 API로 그룹을 살리는 흐름만 따라가 보십시오. Flight Recorder로 행을 보는 실험과는 목적이 다릅니다.
재현해 볼 실험 조건
- 작은 world size(예: 2~4)로 ProcessGroup을 연 뒤, 간단한 allreduce 루프를 워밍업합니다.
- 한 랭크를 종료·중단한 뒤, 문서화된 재구성 경로로 그룹을 제자리에서 다시 붙입니다.
- 재구성 전후 집단통신이 다시 통과하는지, 웜 상태(옵티마이저·캐시)를 얼마나 남길 수 있는지 기록합니다. Flight Recorder 덤프와 동시에 돌리지 마십시오.
nccl2 백엔드 미리보기와 함께 쓰일 수 있지만, 이번 글의 축은 “그룹을 부수지 않고 다시 맞추는 것”입니다. 재현 노트에 백엔드 이름과 훅 호출 순서를 남깁니다.
실무에서 바로 볼 포인트
- 랭크 장애 시 전체 재시작 대신 제자리 재구성이 가능한지부터 확인하십시오.
- abort·pre/post collective 훅을 같은 경로에 묶었는지 점검합니다.
- Flight Recorder 진단 실험과 변수를 섞지 말고, 복구 경로만 분리해 측정합니다.
관련 DAKER 학습
설명용 생성 이미지입니다. 동작은 작은 분산 잡에서 랭크 중단 후 재구성 성공 여부로 확인하십시오.