PyTorch 2.14 nccl2 백엔드로 ProcessGroup을 열면 torchcomms 집단통신 경로를 기본 분산 스택에서 씁니다 | DAKER 커뮤니티

한 줄 요약
PyTorch 2.14의 nccl2 c10d 백엔드는 torchcomms 경로를 트리 안에 넣습니다. ProcessGroup을 nccl2로 열면 전체 Work 계약·논블로킹 커뮤니케이터·eager split을 기본 분산 스택에서 바로 씁니다.
레거시 nccl만 쓰던 팀이면, 백엔드 문자열만 바꿔도 집단통신 경로가 달라집니다. 오늘은 작은 월드 사이즈로 nccl2 ProcessGroup을 초기화해 보고, allreduce 한 번이 어떤 Work 핸들로 돌아오는지부터 확인하십시오. 참가자 노트에는 백엔드 이름과 빌드 플래그를 같이 적어둡니다. “분산이 된다”보다 “어떤 백엔드 계약으로 끝나는지”를 남기는 것이 재현에 도움이 됩니다.
재현해 볼 실험 조건
USE_C10D_NCCL이 켜진 2.14 빌드에서 백엔드를nccl2로 지정해 ProcessGroup을 만듭니다.- 같은 코드로 레거시
nccl(또는 명시적 legacy 경로)와 비교해, 커뮤니케이터가 eager로 잡히는지·Work 완료 대기 API가 동일한지 확인합니다. - 논블로킹 콜렉티브 한 개를 던진 뒤, 핸들이 준비될 때까지 다른 연산을 끼워 넣어 경로 차이를 로그로 남깁니다.
내결함성 재구성·단방향 윈도우는 같은 백엔드 계열 기능이지만, 이번 글에서는 백엔드 선택과 Work 계약에만 초점을 둡니다. 옵션 플래그로 이름만 바꾼 뒤 조용히 폴백되지 않는지부터 보십시오. 실험이 끝나면 사용한 env와 월드 사이즈를 한 줄로 고정해 두면, 다음 참가자가 같은 조건을 바로 따라올 수 있습니다.
실무에서 바로 볼 포인트
nccl2는 eager 전용입니다. 예전 lazy 초기화가 필요하면 호환 래퍼 경로를 따로 확인하십시오.- 학습 노트에 PyTorch 버전, 백엔드 문자열, 월드 사이즈, NCCL 관련 env를 남깁니다.
- DAKER 학습 보드에서는 “백엔드를 바꿨다”는 사실과 “콜렉티브가 같은 계약으로 끝나는지”를 한 줄로 적어두면 재현이 쉽습니다.
관련 DAKER 학습
설명용 생성 이미지입니다. 백엔드 동작은 로컬 ProcessGroup 초기화·콜렉티브 결과로 확인하십시오.