PyTorch 2.14에서 Inductor simple_overlap 기본 활성화, 분산 학습의 통신·연산 겹침 어떻게 볼까 | DAKER 커뮤니티

통신-연산 겹침

분산 학습에서는 연산 자체보다 통신이 병목이 되는 순간이 자주 생깁니다. 특히 작은 모델이나 짧은 스텝에서는 all-reduce 같은 집단통신이 임계 경로에 남아 GPU가 기다리는 시간이 눈에 띄기도 합니다.

PyTorch 2.14에서는 이런 지점을 확인할 만한 변화가 있습니다. Inductor의 simple_overlap 재정렬이 기본으로 켜지면서, torch.compile된 분산 학습에서 집단통신이 독립 연산과 겹치도록 스케줄됩니다. 별도 설정 없이 기본 동작이 달라졌다는 점이 이번 변화의 핵심입니다.

PyTorch 2.14 Inductor의 simple_overlap 재정렬이 기본으로 켜지며, torch.compile된 분산 학습에서 집단통신과 독립 연산이 자동으로 겹치도록 스케줄됩니다.

무엇이 달라졌나

예전에는 통신이 임계 경로에 그대로 남거나, overlap를 직접 켜야 하는 경우가 있었습니다. 이제는 2.14에서 torch.compile를 사용하는 분산 학습 워크로드라면, 기본값 자체를 전제로 프로파일을 보는 것이 좋습니다.

중요한 것은 설정을 얼마나 바꿨는지가 아니라, 기본값에서 실제로 통신과 연산이 겹쳐 보이는지 확인하는 일입니다. 재현 메모를 남길 때도 백엔드, 월드 사이즈, 컴파일 여부, 그리고 프로파일에서 관찰한 한 줄 정도를 적어두면 비교에 도움이 됩니다.

재현해 볼 실험 조건

가볍게 확인하려면 간단한 선형층과 손실, 그리고 한 번의 집단통신 예를 들어 all-reduce가 들어간 미니 루프를 만들면 됩니다. 같은 루프를 eager와 torch.compile로 각각 실행한 뒤, 프로파일러나 NCCL 또는 통신 타임라인에서 통신과 연산의 겹침 여부를 비교해 보면 됩니다.

가능하다면 overlap를 끈 설정과 기본값을 한 줄로 대비해 두는 것도 좋습니다. 이렇게 하면 2.14의 기본 동작 차이를 더 분명하게 남길 수 있습니다.

이번 확인의 초점은 Inductor 기본 overlap이며, 기본값에서 겹침이 보이는지 살피는 것이 재현에 가장 직접적입니다.

이번 실습에서 범위를 좁혀 볼 부분

컴파일-온-원-랭크나 Flight Recorder는 다른 축의 주제입니다. 이번 실습에서는 Inductor의 기본 overlap만 확인하는 편이 좋습니다. 범위를 넓히기보다, 통신과 연산이 실제로 겹치는지 한 가지 관찰에 집중하는 편이 결과를 해석하기 쉽습니다.

실험이 끝나면 PyTorch 버전, 디바이스, 월드 사이즈를 같은 조건으로 남겨두면 됩니다. 같은 워크로드라도 이 정보가 빠지면 비교가 어려워질 수 있습니다.

실무에서 바로 볼 포인트

분산 학습과 torch.compile를 함께 쓰는 워크로드라면, 2.14에서는 overlap 기본값을 전제로 벤치마크를 보는 것이 자연스럽습니다. 또한 학습 노트에는 eager와 compile의 프로파일 관찰을 함께 남겨두는 것이 좋습니다. 이번 확인에서는 백엔드 전용 훅 실습과 섞지 않고, 스케줄 겹침 자체만 따로 보는 편이 더 명확합니다.

관련 DAKER 학습

참고 자료

https://pytorch.org/blog/pytorch-2-14-release-blog/

여러분의 환경에서는 eager와 torch.compile 사이에서 통신·연산 겹침이 어떻게 보였는지 궁금합니다.