이슈를 작성하게 된 계기
HCA(InfiniBand NIC)가 여러 개 장착된 두 서버를 이용하여 멀티 노드 학습을 실험하고 있었음
NCCL_IB_HCA 환경 변수에 여러 개를 할당해도 계속 하나의 HCA만 사용하는 것이 의아하여 이슈를 작성함
답변
NCCL이 2개의 HCA를 사용하지 않는 이유는 시스템에 다른 병목 현상이 존재하기 때문임
2개의 HCA를 사용하도록 강제하려면 토폴로지(xml)에서 port speed를 절반으로 직접 수정 후 NCCL_TOPO_FILE 환경 변수에 경로를 넣어주면 되지만 2개의 HCA를 사용하면 4개의 GPU SM을 사용하게 되므로 학습과 관련된 계산 자원이 줄어들게 됨
따라서 NCCL은 GPU의 SM 사용을 최적화하기 위해 가능한 최소한의 NIC를 사용하려고 함
해결
답변대로 토폴로지를 nic의 speed를 낮추거나 pci의 link_speed를 높이는 쪽으로 수정하니 여러 개의 HCA를 사용함
이슈 링크
'깃' 카테고리의 다른 글
[깃] 이슈 정리: Copy License not working (0) | 2024.06.05 |
---|---|
[깃] 이슈 정리: Numpy reader test (GDS) (0) | 2024.05.30 |
[깃] 이슈 정리: main_process_ip not working (0) | 2024.05.30 |
[깃] 빗버킷 파이프라인으로 AWS ECR 및 Lambda에 배포 (0) | 2023.03.21 |
[깃] 자주 쓰는 명령어 (1) | 2021.04.01 |