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

nccl2를 기본으로
설명용 생성 이미지입니다.

한 줄 요약
PyTorch 2.14의 nccl2 c10d 백엔드는 torchcomms 경로를 트리 안에 넣습니다. ProcessGroupnccl2로 열면 전체 Work 계약·논블로킹 커뮤니케이터·eager split을 기본 분산 스택에서 바로 씁니다.

레거시 nccl만 쓰던 팀이면, 백엔드 문자열만 바꿔도 집단통신 경로가 달라집니다. 오늘은 작은 월드 사이즈로 nccl2 ProcessGroup을 초기화해 보고, allreduce 한 번이 어떤 Work 핸들로 돌아오는지부터 확인하십시오. 참가자 노트에는 백엔드 이름과 빌드 플래그를 같이 적어둡니다. “분산이 된다”보다 “어떤 백엔드 계약으로 끝나는지”를 남기는 것이 재현에 도움이 됩니다.

재현해 볼 실험 조건

  1. USE_C10D_NCCL이 켜진 2.14 빌드에서 백엔드를 nccl2로 지정해 ProcessGroup을 만듭니다.
  2. 같은 코드로 레거시 nccl(또는 명시적 legacy 경로)와 비교해, 커뮤니케이터가 eager로 잡히는지·Work 완료 대기 API가 동일한지 확인합니다.
  3. 논블로킹 콜렉티브 한 개를 던진 뒤, 핸들이 준비될 때까지 다른 연산을 끼워 넣어 경로 차이를 로그로 남깁니다.

내결함성 재구성·단방향 윈도우는 같은 백엔드 계열 기능이지만, 이번 글에서는 백엔드 선택과 Work 계약에만 초점을 둡니다. 옵션 플래그로 이름만 바꾼 뒤 조용히 폴백되지 않는지부터 보십시오. 실험이 끝나면 사용한 env와 월드 사이즈를 한 줄로 고정해 두면, 다음 참가자가 같은 조건을 바로 따라올 수 있습니다.

실무에서 바로 볼 포인트

관련 DAKER 학습

설명용 생성 이미지입니다. 백엔드 동작은 로컬 ProcessGroup 초기화·콜렉티브 결과로 확인하십시오.