현재 vision ai 모델을 학습중인데, 동일한 모델을 학습하고 있습니다.
4090 1개는 1에폭에 14초,
3090 4개는 1에폭에 28초가 걸립니다.
이게 너무 이상하다 생각되어 확인해보았습니다.
gpu 병목이라 생각되어 3090 4개 환경에서 GPU-Utill은 거의 100%로 나오고 등락률도 크지 않습니다..
뭐가 문제일까요 고수님들의 의견을 듣고 싶습니다ㅠㅠ
현재 vision ai 모델을 학습중인데, 동일한 모델을 학습하고 있습니다.
4090 1개는 1에폭에 14초,
3090 4개는 1에폭에 28초가 걸립니다.
이게 너무 이상하다 생각되어 확인해보았습니다.
gpu 병목이라 생각되어 3090 4개 환경에서 GPU-Utill은 거의 100%로 나오고 등락률도 크지 않습니다..
뭐가 문제일까요 고수님들의 의견을 듣고 싶습니다ㅠㅠ
나도 3090 4개 묶어 쓰는데 4개라고 시간이 1/4이 되진 않더라
GPU 4개 속도차이가 크면 제일 느린 놈한테 맞춰가느라 병목걸리는 것 같음
같은 코드를 GPU 1개씩 4놈 다 따로 돌려보면서 시간 재봐
초반엔 온도 낮아서 빠른것처럼 보이다가 몇에폭 지난 뒤에 급속도로 느려질때 있음 그건 발열 못잡아서 쓰로틀링 걸리는 거니까 그때 속도를 재야함
이건 너무 여러 가능성이 있음.. 괜히 Gpu 여러개 넣으면 대가리 아픈게 아님. 작업 분할이 비효율적이라 그런거 일 수도 있고, Gradient 동기화의 문제, 데이터 로딩 문제 등등. 하나씩 체크해가면서 줄여나가야지 뭐
gpu 다 쓴다고 병목이 없단말이 아님...
global batch size 동일한거 맞음?
쉽게 이야기하면 gpu에서 소요되는 연산 시간보다 cpu에서 소요되는 연산 시간이 훨씬 커서 그럼. 이거 자체가 하나의 연구 주제이고 고려해야 될 사항이 많음. 그래서 어줍잖게 gpu 여러개 살바에는 하나만 사라고 하는거임.
전기세는 누가냄?
감사합니다. 형님들 이유는 GPU_per_samples 라는 변수가 GPU 개수에 따라 batch를 할당하는데, gpu 4개라서 4배의 batch가 되었고, 정해진 epoch 만큼 학습하는게 아니라 정해진 iteration만큼 학습해서 결국 데이터를 4배 더 많이 사용하는 꼴이었네요.. 결론적으로 4090 하나보다 3090 4개가 두배 빠른 거였습니다! 감사합니다 고수형님들