1 | anaconda의 기능인 프로젝트 내에 environment.yaml 파일을 이용해 가상환경을 설치하고, github 페이지에 써진대로 설치를 진행한다. | |||
2 | 프로젝트에서 필요로 하는 scannet 데이터를 받았다. 1TB짜리 scene(총 수백개??)를 통째로 받을 수도 있고, 나는 쉘스크립트와 리눅스 파일경로 지정을 경험할 겸 sh 파일로 다운로드 받는 python 파일 실행 코드를 짜서 200개정도 scene들을 받았다. | |||
3 | 위에서 받은 scene을 github에서 정해준 폴더로 만들어서 넣어준다. | |||
4 | data preparation 코드를 실행해준다. 이때에도 에러가 나는 경우가 있다. (1. 신나게 코드가 실행되다가 오류가 나거나, 2. 그냥 실행 자체가 안되거나 3. 부등식 판정 오류 4. 또 무언가 새로운 것..?). |
|||
4-1. 1의 경우 | 최소한 pytorch와 cuda가 설치된 것으로 보이며, gpu 개수나 동시 실행 프로세스의 개수가 너무 많아 램이 과부하가 걸리는 상황으로, generator.py의 argparse(매개변수 기본 설정)을 본인이 원하는 대로 수정해준다. (나는 아예 n_gpu=1, n_worker=1등 다 1로 맞추고 우선 실행되는지부터 확인해봤다) 혹은, 자신이 설치한 cuda 버전의 환경변수를 제대로 입력하지 않은 것이 원인일 수도 있다. 5-3-3 확인. |
|||
4-2. 2의 경우 | pytorch와 cuda가 전혀 anaconda 가상환경에 설치되지 않은 상황이다. 5의 순서를 따른다. | |||
4-3. 3의 경우 | data preparation 명령어 중에 파일 경로를 잘못 설정해주어, 뭔가 data preparation을 하기에 충분한 파일 개수가 아니라는 에러 문구가 떴었다. 파일 경로를 제대로 확인해주어 해결한다. 이것도 아니면 코드를 건드리든 해서 오류를 넘기는게 좋아보인다. | |||
5 | data preparation이 진행이 되지 않는다면, 나는 아래의 검증과정을 거쳤다. | |||
문제의 원인..? | 의외로, environment.yaml 에서 pytorch와 cuda를 받는 행위는 우리가 생각한대로 잘 작동하지 않는다. pytorch가 깔려있는지, cuda가 연동되어 있는지, cuda에 그래픽카드가 물려있는지 순서대로 확인한다.하나라도 맞지 않다면 자신의 그래픽카드와 cuda의 호환성을 확인해본다. 보통 프로젝트의 yaml파일은 pytorch와 cuda를 호환성이 잘 맞는 버전으로 연동시킨다. 그래서 그래픽 카드와 cuda 사이의 호환성 문제(특히 rtx 3000번 그래픽카드의 cuda 11버전부터 호환성) 일 확률이 높고, 때문에 아래 과정을 진행했다. |
|||
5-1. pytorch 설치 확인 | 직접 pytorch 1.6.0 + cuda10.2 인 버전을 다운 받는다. cuda도 관련된 버전을 다운 받는다. 진짜 cuda가 같이 설치되는 줄 알았는데, 아니더라. | |||
5-2. cuda 연동 확인 | cuda가 설치되었는지 터미널에서 nvcc -V 명령어로 확인한다. 자신이 설치한 버전이 나왔는지 확인해본다. 그리고, pytorch에 cuda가 연동되었는지도 간단히 터미널로 확인한다. python import torch torch.__version__ torch.cuda.is_available() |
|||
5-3. cuda 그래픽카드 인식 확인 | cuda가 그래픽카드를 제대로 물고있는지 확인한다. torch.cuda.get_device_name(0) 나의 경우, 프로젝트에서 권장하는 pytorch 1.6.0이 cuda 11을 공식적으로 지원하지 않았다. 하지만 그래픽카드를 rtx 3000세대를 사용하여 불가피하게 cuda 11을 사용해야했다. |
|||
1 | 2-1에서 설치한 cuda를 명확히 삭제해준다. nvcc -V 로 'not found nvcc' 가 뜨는지 확인. |
|||
2 | 자신의 그래픽카드가 지원하는 최소 cuda 버전을 설치한다. 나는 11.3을 받고 싶어 다음 링크에서 시키는대로 하다가 오류가 났다. 마지막 명령어는 꼭 내가 써준 걸로 하자. https://developer.nvidia.com/cuda-11.3.0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_local sudo apt-get -y install cuda-11-3 sudo apt-get -y install cuda 가 절대 아니다!!!!(이건 자동으로 최신 cuda를 다운받게 한다) |
|||
3 | 설치 후 환경변수를 잘 설정해줘야 한다. 혹시나 다른 프로젝트에서 다른 cuda 버전을 사용하더라도, 환경변수를 지금 필요한 버전 주소 (/usr/local/cuda-11.x)를 추가해주면 된다. 꼭 해야한다. | |||
1 | 현재 환경변수 확인 echo $LD_LIBRARY_PATH /usr/local/cuda-11.0/lib64 echo $PATH /usr/local/cuda-xx.x/bin 내가 설치한 버전이 있는지 찾아보자. 당연히 엄청 많은 데이터가 나오는데, 내가 설치한 cuda 버전이 있는지 확인하고, 없으면 아래에서 추가를 하면 된다. echo $CUDA_HOME /usr/local/cuda (난 이걸 안했는데도 실행이 잘 되었다) 참고 env(전체 환경변수 확인) |
|||
2 | 환경변수 지정 export PATH=$PATH:/usr/local/cuda-xx.x/bin export CUDADIR=/usr/local/cuda-xx.x export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-xx.x/lib 참고문헌: https://m31phy.tistory.com/125 |
|||
6 | data preparation을 정상적으로 진행했다면, inference on scannet test-set을 진행했다. |
|||
특이사항 | 1 | 관련된 패키지가 하나도 설치되지 않은 것으로 나와 일일이 pip 명령어를 써가며 설치했는데, 버전 지정을 하나도 안해도 거의 다 해결되었다. |
||
2 | torch-sparse, torch-scatter 부분부터 pip로는 호환성(pytorch 1.6.0이 cuda 11.3을 지원 안하는 문제) 때문에 설치가 진행되지 않아 오프라인으로 whl 파일을 다운받아 설치를 진행했다. | |||
1 | 여기에서 자신의 파이썬 버전에 맞는 torch-sparse, torch-scatter를 다운받는다. https://pytorch-geometric.com/whl/torch-1.6.0%2Bcu102.html |
|||
2 | 다운받은 파일이 있는 주소로 디렉토리를 변경해준다. | |||
3 | 오프라인 pip 패키지 설치 python -m pip install torch_scatter-2.0.6-cp37-cp37m-linux_x86_64.whl 이런 식으로 whl 파일을 변수로 넣어주어 설치를 진행한다. 여기선 오류가 딱히 발생하지 않았다. |
|||
3 | cannot import name 'PointTensor' from 'torch_sparse' 에러가 발생했다. 이거는 내가 torchsparse 패키지가 아닌, torch_sparse 패키지를 깔아서 생긴 문제였다. pip install torchsparse, 에러가 난다면 https://github.com/mit-han-lab/torchsparse 에 써진 과정을 따라한다. 이때에, ValueError: Unknown CUDA arch (8.6) or GPU not supported .... legacy-install-failure 이런 에러가 뜨거나 하면, 환경변수를 다시 살펴보자. 에러내용 자체는 이런 gpu에는 깔 수 가 없다지만 github torchsparse/issues 에 보면 깔 수 있다고 나온다. |
|||
1 | echo $LD_LIBRARY_PATH 로 환경변수가 현재 사용하는 cuda버전과 일치하는지 확인한다. | |||
2 | 환경변수를 설정해도 안된다면,, pytorch 버전이 cuda와 맞지 않게 설치한걸 torchsparse가 알아차리고 뭐라고 하는 중이다. pytorch를 cuda-11.0을 최초로 지원하는 pytorch1.7.1로 깔아주자. 이전 버전을 굳이 삭제하지 않아도 설치할 때 알아서 삭제한다. https://pytorch.org/get-started/previous-versions/ 여기서 # CUDA 11.0 용 torch 1.7.1 설치 pip install torch==1.7.1 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html |
|||
3 | 다시 https://github.com/mit-han-lab/torchsparse 여기서 시키는 대로 설치하니 드디어 성공했다. | |||
4 | 다시 inference on scannet test-set를 실행하며 없는 패키지들을 마저 설치해주니(yacs 등..) inference가 실행된다. | |||
pickle로 data preparation을 끝낸 후에, 이제 main.py를 돌려 inference on scannet dataset 을 할 순서다.
관련된 패키지가 하나도 설치되지 않은 것으로 나와 일일이 설치하던 중에 특이사항 몇가지가 있다.
1. 처음보는 온갖 패키지들은 버전 하나도 지정안해줘도 잘 설치가 되었다.
2. 그래픽카드를 3080ti를 쓰는 이유로 cuda arch_86과 cuda 11.3을 사용하고 있는데, pytorch 1.6을 사용하기로 권장하는 Neural Recon의 configuration에 따라 cuda 10.2까지만 지원하는 pytorch1.6 을 그냥 연결해서 사용한다.
3. torch-sparse, torch-scatter는 다음 링크에서 받아서 사용했다.
https://pytorch-geometric.com/whl/torch-1.6.0%2Bcu102.html
직접 사용한 두개의 파일 링크는 다음과 같다.
torch_sparse-0.6.9-cp37-cp37m-linux_x86_64.whl
torch_scatter-2.0.6-cp37-cp37m-linux_x86_64.whl
4. 이제 나오는 오류는
'건축 컴퓨터 비전 > 3D Reconstruction' 카테고리의 다른 글
2022 3d reconstruction 논문 목록 (0) | 2022.07.07 |
---|---|
Neural Recon 실행기 #2 (0) | 2022.03.24 |
pytorch cuda 연결 안됨 (1) | 2022.03.23 |