
180 GiB GPU × 16개 = 총 2.8 TiB
이번에는 accelerate 기반으로 분산학습을 어떻게 성공시켰는지 정리한다. 코드는 이미 있었고, 실행 환경만 맞추면 됐다.
해당 서버는 NAS로 구성돼 있어 추가 설정은 필요 없었다.
실행 config를 서버별로 다르게 두고, 각 서버에서 실행만 하면 됐다.
서버 1·2가 같은 마스터 포트(보통 29500)로 서로 연결돼 있어야 한다.
서버 1, 2 중 마스터를 정한다. 여기서는 서버 1을 마스터로 사용했다.
hostname -I
출력에서 가장 앞에 나오는 IP가 메인 내부 IP다.
서버 1에서 리스닝:
nc -l 29500
서버 2에서 연결 테스트:
nc -vz 10.x.x.xx 29500
아래처럼 나오면 성공이다.
Connection to 10.x.x.xx 29500 port [tcp/*] succeeded!
방화벽은 건드리지 말 것.
방화벽 해제로 시도했다가 서버 이상 동작으로 장애가 난 사례가 있었다.
연결 확인 후 accelerate로 학습을 돌리면 된다. 학습이 오래 걸리므로 nohup이나 tmux를 많이 쓸 텐데, 여기서는 tmux 사용 방식 때문에 문제가 있었다.
증상
원인 추정
해결
이런 이슈를 피하려면
nohup으로 돌리는 방식이 더 단순하다.
코드 설정(accelerate config 등)을 어떻게 했는지 정리할 예정이다.