람쥐썬더

[COLAB] GPU가 작동 안되는 것 같음(volatile gpu-util 0) 본문

에러

[COLAB] GPU가 작동 안되는 것 같음(volatile gpu-util 0)

람쥐썬더123 2022. 6. 14. 17:39

학습시키는데 언젠가부터 GPU가 먹지 않는 느낌이 들었다..(몇달전부터)

 

MNIST도 그랬고 DACON DATA 학습할때도 그랬고 똑같은 모델을 학습시키는데도 나는 안먹고 남은 잘먹고 짜증이 마구마구 났음, PRO + 까진 아니더라도 9.99딸라 주고 PRO 쓰는데도 이러니까 뭔가 돈버리는 느낌

 

암만봐도 이건 아니다 싶어서 여러 방면으로 찾아봤는데 코랩은 뭐 CUDNN이든 CUDA던 기본적으로 만들어져있어서

만질게 노트설정에서 하드웨어가속기 GPU 로 바꿔놓으라는 말밖에 없었다.

 

GPU 당연히 설정해놓고 잡히기는 하는지 확인해보면 잘잡고

nvidia-smi 로 확인해봐도 분명히 GPU:0 잘 잡혀있는데 왜 그러나 싶어서

학습돌려놓고 터미널켜서 확인해보니 이게 웬걸 GPU 메모리는 분명히 잡아먹는데  volatile gpu-util 이 0%로 연산을 전혀 하지 않았다..

 

 

먼일이고 하고 찾아보니

DATALOADER 에서 입출력할때 병목(Bottle Neck) 현상 이라는데 거기까진 아직 잘 모르겠고 그래서 어찌 해결해야 하나 찾아봤는데 딱히 방법이 없음

 

막 이코드 저코드 머 GPU 0번으로 다시 설정하고 토치로도 해보고 별 별 생 난리를 다쳤는데 해결안됨

 

그래서 진짜 설마 PATH 문젠가 하고 drive/폴더1/폴더2/폴더3/~ 으로 설정되어있던 dataset 경로를

/content로 옮겨서 돌려봤는데

 

 

잘된다.. 데이터가 달라진것도 없고 그냥 폴더 세개 경로만 앞으로 당겨왔을 뿐인데 된다는게

drive 하나하나 파헤치고 이미지 끄집어오는 시간보다 GPU 연산 속도가 더 빨라서 그런건가?? 암튼 좀 어이없이 해결돼서 뭔가 허망했다

 

 

해결:

데이터셋 PATH를 폴더 깊이 저장하지 않고 CONTENT에 가깝게 저장해서 학습돌리면 GPU 연산이 잘 먹는다

 

 

 

의문점:

아니 그럼 정리하려고 폴더 여러개 겹쳐서 만들어놓는건데 이러면 커널 시작할때마다 매번 CONTENT에 데이터를 불러와줘야 되는건지??????????????????????????????????????????????????????????????

그게 아니면 병목을 해결할 방법이 없는건지 좀 의문이다..

 

 

 

===================================== 회고 ========================================

 

당시에는 프로세스별 처리 기법이나 이런걸 잘 몰랐는데 알고 보니 참 기본적인데 많이 부족했구나 싶다.

 

이래서 데이터 엔지니어링도 참 중요하구나 생각되기도 하고, 코랩 속도가 좀 느린것 같기도 하고 ㅎ..