GPU 인식까지는 됩니다.
근데 문제는 이걸로 학습을 돌리면, GPU 사용을 안하는 것 같아요.
1) 작업관리자로 확인해도,
2) driver로 확인해도 (nvidia-smi)
GPU 사용을 안하는 것 같습니다.
파이썬 프로세스가 실제로 돌아가는 것 같긴 한데 말이죠...
시도해본건
1. CPU로 인한 보틀넥 있을 수 있을 수 있다.
-> 적용 가능한 최대의 리소스를 줘봤는데도 동일했다.
정도가 있습니다.
GPU 인식까지는 됩니다.
근데 문제는 이걸로 학습을 돌리면, GPU 사용을 안하는 것 같아요.
1) 작업관리자로 확인해도,
2) driver로 확인해도 (nvidia-smi)
GPU 사용을 안하는 것 같습니다.
파이썬 프로세스가 실제로 돌아가는 것 같긴 한데 말이죠...
시도해본건
1. CPU로 인한 보틀넥 있을 수 있을 수 있다.
-> 적용 가능한 최대의 리소스를 줘봤는데도 동일했다.
정도가 있습니다.
기본적인거이긴 한데, model.to("cuda:0") inputs.to("cuda:0")
함?
이게 문제였네요. 감사합니다.
문제는 누가 학습과정을 코드로 짜서 보내줬는데, 1. 데이터랑 모델 둘 다 gpu에 있었음 2. 실제로 돌려봤는데 너무 오래 걸림 이어서 다시 살펴봤는데, epoch 안에서 device로 데이터를 보내줘서 cpu병목이었던 것 같아요. 배치도 작고, 데이터 사이즈도 안큰데 그걸 매 iteration마다 gpu로 보내줬으니... 덕분에 문제 해결했습니다. 감사합니다
음 매 epoch마다 데이터를 디바이스로 보내는건 일반적인형태아닌가 - dc App
수업 실습 코드 같은거 돌려보고 있었는데, 1. 학습이 너무 오래 걸림 2. GPU사용은 안잡힘 3. 학습 데이터가 작다. 요래서 매번 GPU로 데이터를 보내는게 문제인가 싶었어요. 근데 바꿨는데도 여전히 오래 걸리는걸 보면 다른 원인이 있을 것 같네요..
어느 프로세스에서 시간이 오래 걸리는 지를 로그를 찍어보셈. 1) iter 돌리면서 데이터로더가 데이터 가져오는 과정 2) 가져온 데이터 gpu로 보내는 과정 3) 모델에 데이터 넣어서 출력 나오는 과정 4) 출력 나온 거 가지고 로스 계산하는 과정 5) 로스 계산한 거 가지고 백프롭하는 과정 전부 다 시간 찍어보고 어디서 오래 걸리는 지 파악하는 것부터 시작해야 함