When will you grow up?

[Error] torch.distributed.elastic.multiprocessing.errors.ChildFailedError 오류 본문

02. Study/Error

[Error] torch.distributed.elastic.multiprocessing.errors.ChildFailedError 오류

미카이 2024. 12. 8. 21:42

Multi-GPU Training 중 발생한 오류 해결 사례 공유

최근 Multi-GPU Training을 진행하던 중 아래와 같은 오류가 발생하여 학습이 중단되는 상황을 겪었습니다.

 

torch.distributed.elastic.multiprocessing.errors.ChildFailedError

 

이 오류를 해결하기 위해 다양한 방법을 시도해 보았고, 결국 마지막 방법으로 문제를 해결할 수 있었습니다. 이 글에서는 오류를 해결하기 위해 시도했던 과정과 해결 방법을 공유하고자 합니다.

 

1. 오류 발생 원인 추정

이 오류의 원인은 보통 다음과 같은 상황에서 발생할 수 있습니다:

  • RAM 부족
  • GPU Memory 부족
  • PyTorch 버전 문제
  • Batch Size 설정 문제

위 원인들을 하나씩 점검하며 해결 방법을 적용해 보았습니다.

 

 

2. 시도한 해결 방법

(1) shm(SHared Memory) 확장

Multi-GPU 환경에서 데이터를 로드하는 과정에서 공유 메모리 부족 문제가 발생할 수 있습니다. 이를 해결하기 위해 --shm-size 옵션을 사용하여 Docker 컨테이너의 공유 메모리를 확장했습니다.

docker run --shm-size=8g ...

그러나 이 방법만으로는 문제가 해결되지 않았습니다.

 

(2) PyTorch 버전 변경

사용 중이던 PyTorch 버전이 2.0.4였는데, 이를 최신 버전인 2.4.0으로 업데이트해 보았습니다. PyTorch는 버전 간 성능 최적화나 버그 픽스가 포함되므로, 이를 변경하면 문제가 해결되는 경우도 많습니다.

업데이트 명령은 다음과 같습니다:

pip install torch==2.4.0

하지만, 이 역시 제가 직면한 문제의 직접적인 원인을 해결하지는 못했습니다.

 

(3) Batch Size 조절

기본적으로 설정된 Batch Size는 128이었습니다. 이를 줄여서 GPU 메모리 사용량을 낮춰 보기로 했습니다. Batch Size를 64로 절반 줄인 후 다시 학습을 실행했더니, 오류 없이 학습이 진행되는 것을 확인했습니다.

 

코드별 다양한 예시가 있겠지만, 내 학습의 경우 batch_size를 다음과 같이 수정할 수 있었다.

train_loader = DataLoader(dataset, batch_size=64, shuffle=True)

 

 

이 글이 비슷한 문제를 겪고 있는 분들께 도움이 되길 바랍니다! 🚀

 

 

 

 

참고

https://discuss.huggingface.co/t/torch-distributed-elastic-multiprocessing-errors-childfailederror/28242

https://github.com/Vision-CAIR/MiniGPT-4/issues/237

'02. Study > Error' 카테고리의 다른 글

AttributeError: module 'cv2.dnn' has no attribute 'DictValue'  (0) 2024.08.12
Comments