상황: NeRF 계열 공부중 pytorch3d 를 기존 3090 사용 서버에서 잘 쓰고 있었는데 

서버 옮기면서 CUDA 버전 충돌로 가상환경 설치 실패 2일차...

선배에게 CUDA toolkit-dev에 대한 설명 듣고 이틀더 삽질 후 결국 성공!

누군가 검색해서 들어온 후 도움이 되기를 바라면서 + 내가 나중에 이 error 또 겪을까봐 남기는 로그

 

서버환경: 

CUDA Version: 12.1 

Driver Version: 530.30.02

GPU: Geforce RTX 3090 (ref)

Ubuntu: 18.04 LTS

 

설치해야하는 모듈: pytorch 및 pytorch3d (implicitron 포함)

 

결론: pytoch3d 가이드에서 주는 모듈 설치 순서는 의외로 굉장히 중요하다

stackoverflow 만만세

 

pytorch3d 요약: 

아래 코드가 다 돌아간다면 pytorch3d 자체의 문제는 아닌 것 같다가 내 결론

3번째 줄은 당연 Implicitron을 사용하는 사람들에게 해당하고, 마지막 줄은 대표적인 pytorch3d 설치 경로문제에서 

import 가 안되는 모듈인 것 같다 

import torch
import pytorch3d
import pytorch3d.implicitron
from pytorch3d import _C

아래 순서는 중간중간 기록한 것이 아니라 틀릴 수 있음

 

첫번째 Error: python 3.8 + pytorch 13.1 + conda install pytorch3d

-> pytorch3d 설치를 위해 검사하는 중  CUDA version이 11.7 인데(pytorch 설치 CUDA 버젼) 9.1CUDA를 사용하는 모듈이 있어서 

충돌이 일으켰다는 에러메세지가뜸 

=> 9.1..?을 사용한다는 메세지가 뜨기는 하는데 워낙 충돌로 뜨는 모듈이 많아서 뭐가 뭔지 모르겠는 상황

이래저래 검색을 해봐서 뚜렷한 해결책이 없어서 연구실 동료들한테 SOS 침

=> 선배가 nvcc -V로 뜨는 local CUDA version을 11.7로 맞춰주면 된다는 정보 입수

=> 아직 local CUDA랑 기존 CUDA의 차이를 모르겠는데 공부 필요..

 

첫번째 해결책: 아무튼 torch 설치 -> CUDA toolkit-dev 설치 -> pytorch3d 순으로 설치하면 된다는 꿀정보와 함께 

CUDA toolkit-dev 가 설치하는데 제법 여러시간 소요된다는 절망적인 정보를 함께 얻음... :(

 

CUDA toolkit- dev 설치 방법

: conda install -y -c conda-forge cudatoolkit-dev

 


두번째 Error: (정확히 재보진 않았지만) 약 3-4시간 안쪽으로 걸리는 CUDA toolkit-dev 여러번 설치했는데도 자꾸 꼬임 ㅜ

현상: pip install pytorch3d 로 설치하면 0.7.3버젼이 아닌 0.3.0버젼이 설치되서

from pytorch3d import implicitron하면

"No Module Named implicitron"이 뜨거나 implicitron 안의 일부 모듈이 없다고 뜸

=> implicitron이 설치에러가 많은 듯하여  pytorch3d 공식 문서에 들어가면 여러 issue log에서 도움을 받을 수 있다

 

https://github.com/facebookresearch/pytorch3d/tree/main/projects/implicitron_trainer

 

GitHub - facebookresearch/pytorch3d: PyTorch3D is FAIR's library of reusable components for deep learning with 3D data

PyTorch3D is FAIR's library of reusable components for deep learning with 3D data - GitHub - facebookresearch/pytorch3d: PyTorch3D is FAIR's library of reusable components for deep learning...

github.com

 

 

두번째 해결책: 사실 이건 내가 고오집 부려서 일어난 일인듯....

순서가 틀리면, 특히 저 iopath 설치 순서를 잘못 맘대로 설치하면 환경이 여러번 꼬인다,,,, 

 

pytorch3d 공식 문서와 내가 돌리려고 하는 코드의 매뉴얼을 조합해보면 아래와 같다

conda create -n pytorch3d python=3.8
conda activate pytorch3d
conda install -c conda-forge ninja # 내가 돌릴려는 code의 매뉴얼
conda install -c conda-forge cxx-compiler=1.3.0 # 내가 돌릴려는 code의 매뉴얼
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch
conda install -y -c conda-forge cudatoolkit-dev

conda install -c fvcore -c iopath -c conda-forge fvcore iopath
pip install "git+https://github.com/facebookresearch/pytorch3d.git@v0.7.2"
# or
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"

3,4번째 줄은 현재 내가 돌릴려고 하는 코드의 추천 매뉴얼이고 pytorch3d 공식 문서에 해당하는 내용은 아님!!

5번째 줄 pytorch 설치는 내 서버 환경에서는

pytorch 1.11.0 + cudatoolkit 11.3 

pytorch 1.13.1 + cudatoolkit 11.7

위 두개의 조합이 성공했다 

아래 pytorch install 링크에서 각자 환경에 맞게 설치할 것 !! 

https://pytorch.org/get-started/previous-versions/

 

PyTorch

An open source machine learning framework that accelerates the path from research prototyping to production deployment.

pytorch.org

 


세번째 Error: 여까지 이틀 버리고 드디어 pytorch3d.implicitron까지 전부 import가 되고 코드는 돌아가는데..!

새로운 에러 등장... 이쯤에서 걍 다른 서버쓸까 고민함...

그것도 해결책을 검색해보면 죄다 GPU 공간이 없어서 생기는 문제라는 데 나는 아니라구요.. 

사용하려는 GPU memory도 비어있고, GPU 인식 순서가 잘못 인식된 것도 아닌데 

자꾸 아래 메세지 두개가 떴다 

(웃긴건 어떨땐 1번 메세지, 어떨땐 2번 메세지가 뜸... 둘다 검색해보면 GPU memory 문제라고 하는 사람들만 있음 ㅜㅜ )

 

1. RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED

2. RuntimeError: CUDA error: out of memory                                                                                                                
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.                                 
For debugging consider passing CUDA_LAUNCH_BLOCKING=1. 

 

https://discuss.pytorch.org/t/runtimeerror-cudnn-error-cudnn-status-not-initialized/115286

 

RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED

I am doing training and put the dataset inside the data folder. The Structure looks like this. –data -----mars ---------bbox_train ---------bbox_test ---------info Many developers said that this is a label problem but I am not not sure because labels are

discuss.pytorch.org

 

세번째 해결책: 일단 위의 글을 참고하긴 했는데.. 어쩔땐 저 1번 에러가 결국 CUDA와 torch 버젼의 충돌때문에 일어난다는 거인듯?

원인만 파악하고 나의 경우엔 torch 만 돌릴때는 문제가 없었기 때문에 해답을 못찾았고

더 검색한 끝에 

2번 메세지 문제 해결 + GPU인식 문제 해결을 동시에 하기 위해 아래 코드처럼 python을 실행시키면 된다는 도움을 받았다 


CUDA_LAUNCH_BLOCKING=1 && export CUDA_VISIBLE_DEVICES=0 && python ~~~

 

저 CUDA_LAUNCH_BLOCKING=1 커맨드가 뭘 해결하는 건지는 일단 

실험이 마무리되는 대로 더 공부해야겠지만 드디어 장장 4일의 삽질끝에 가상환경 세팅 완료 !!!

 

다시 행복 대학원생으로 돌아가서 실험만 하면 된다......

이 글을 검색해서 들어오는 모든 3D 연구자들 화이팅 ✌️

+ Recent posts