[팀프로젝트] - 에러 정리

반응형

문제상황 1 - 실습 환경 문제 

 

가장 큰 문제.

일단 학습할 때, 비싼 4080을 잘 사용하지 못한다. 

맥만 사용해서 아직 익숙하지 않아서 그런지 윈도우 우분투 듀얼 부팅 세팅에 실패하고 

wsl2 로 우분투를 사용 중인데 안된다. 

일요일에 모두 초기화 하고 처음부터 다시 환경 세팅을 해봐야 할 것 같다. 

 

++ 블로그마다 조금씩 차이가 있어서 이것저것 참고하다가 실패했는데 , 엔비디아 공식 문서를 보는게 좋을 듯하다.

지금와서 보니까 엔비디아 드라이브 버전도 그렇고 쿠다 버전이 12.1인데 좀 수상하다.

우선 파이토치를 import 하고 

device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using {device} device")

를 실행해봅니다.

Using cuda device

잘 나온다. 근데 문제는 NVIDIA-smi 에서 GPU가 사용되지 않는다고 나온다. ㅜ

 


문제상황 2 - vit , deit pytorch 학습 중 공통적으로 발생한 에러

 

TypeError: default_collate: batch must contain tensors, numpy arrays, numbers, dicts or lists; found <class 'dgl.heterograph.DGLHeteroGraph'>

 

모아님 피드백 :

에러 원인

(1) collate_fn함수 torch는 무조건 데이터 input으로 tensor, arrays, numbers, dict, lists , 5개만 허용되는데,다른 타입의 데이터가 들어와서 발생한 에러입니다!
파일 확인해보니 하기 코드가 있더라구요 ! 실제로 이 코드로 batch를 뽑으신건진 확인할 수가 없어서 제 추측이 틀릴 수도 있습니다 😢
이 코드를 사용하면, model의 Input값인 graph_batch를 dgl 객체로 뱉어내는데용 dgl객체는 Pytorch가 Input값으로 허용하지 않는 타입이라 에러가 발생한 것 같습니다 !! Pytorch는 Tensor형으로 변환된 객체만 허용한다고 생각하면 편할 것 같네요 !
💁‍♀️ 따라서 이 collat_fn 함수로 데이터를 뽑으면 안될 것 같습니다. 또한 이 Dataset 코드에서는 albumentation의 증강 코드를 통과하는 과정에서 알아서 배치사이즈가 전부 일치됩니다 ! 그래서 따로 collate_fn 함수를 정의해서 전달해주지 않아도 됩니다 !
제가 (2) test_loop 코드를 수정한 이후에 , 학습 진행해봤는데요 문제없이 작동되는 거까지 확인했습니다!
한 번 테스트해보시고 다시 알려주세요!!

 이 부분은 환경 세팅을 다시 하고 해봐야겠다.

반응형