[우분투 환경설정] 우분투 22.04 성장 기록 [2/n]: 3DGS 도전

우병주·2024년 7월 28일
0

0. about

  • 지난 포스팅에 이어서 환경설정을 계속 이어나간다
  • cuda, cudnn이 잘 됬는지는 모르겠지만 우선 말한대로 pytorch등의 나머지 전부는 프로젝트 별로 conda 환경 내에만 설치하겠다 ㅎㅎ!

1. 3DGS 프로젝트 도전!

  • 링크: 공식 3DGS github
  • 처음 도전할 프로젝트는 3DGS이다 ㅎㅎ
  • 공식 repo를 local에 클론 부터 합시다. ssh는 문제가 있어서 http로 아래처럼 submodule까지 해준다.
cd Desktop
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
cd gaussian-splatting
  • 그 다음, 바로 conda환경을 파일로 만들어줬다
conda env create --file environment.yml
  • 어라라..? 잘 만들고 있다가 (토치까지 다 깔아놓고) diff_gaussian_rasterizationsimple_knn까는데 문제가 생겼다 ㅠㅠㅠㅠㅠ. 문제의 원인은 다음과 같다.
RuntimeError:
      The detected CUDA version (12.2) mismatches the version that was used to compile
      PyTorch (11.6). Please make sure to use the same CUDA versions.
  • 히히 어쩐지 repo에 쿠다 툴킷 11을 위한거지 12를 위한게 아니라고 하더니 히히
  • 방법 1) Multi CUDA
    • 데스크탑에 여러 버전의 쿠다를 깔아서 CUDA_PATH의 symbolic link를 zshrc 스크립트에서 왔다갔다 바꿔가기
    • 오리지널 3DGS 레포에 맞는 11.6을 사용할 수 있다는게 장점
    • 쿠다 2개나 깔면 무겁기도 하고 무섭기도 하다는게 단점
  • 방법 2) cuda 12.2를 밀고 cuda 11.6을 깔기
    • 무서워잉 차라리 멀티쿠다 할래잉
    • 무서운 이유: 그래픽카드 드라이브다 보니 내가 잘못 밀어서 화면이 안나올까바 무서움 ㅎㅎ; 예전에 듀얼모니터 하려고 우분투 그래픽 드라이브 밀었다가 인터넷 끊긴 벽돌 우분투 만든 경험이 있음.
  • 방법 3) cuda 12.2로 3DGS 빌드하기
    • 깃헙 이슈 방법대로 해보자잇
    • 어차피 이제부터 cuda 12로 만들어질 3DGS연구가 나올 예정이기도 하며(이미 몇 개 봄), 멀티 쿠다가 무겁고 무서움
    • 원래의 권장사항이 아니므로 3DGS가 잘 안될 수도 있음
  • 나의 결정은, 방법 3 먼저 해보고, 안되면 방법 1를 하는 것이다!

2. cuDNN 경로 수정

  • 적절한 파이토치 버전 찾으려다가 cuDNN이 걱정 됬다. zshrc에 등록해도 남들 처럼 버전 확인이 안되드라...
  • GPT님께 물어봤더니.. 나 처럼 apt-get으로 설치한 놈은 다른 경로에 가 있을거니 경로를 검색해서 강제로 usr/local/cuda/includecudnn.h를 복사하거나 symbolic link 걸어두라고 하더라 ㅎㅎ!
  • 하라면 해야지.. 참고로 헤더파일은 요런식으로 찾았다 (GPT가 알려줌)
sudo find / -name 'cudnn.h'
sudo cp /usr/include/cudnn*.h /usr/local/cuda/include/
sudo cp /usr/lib/x86_64-linux-gnu/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
  • 그럼 버전 확인이 된다!

3. 3DGS with CUDA 12.2

  • 다시 가보자잇!!
  • 우리가 원래 깔아야 하는 환경은 다음과 같다.
name: gaussian_splatting
channels:
  - pytorch
  - conda-forge
  - defaults
dependencies:
  - cudatoolkit=11.6
  - plyfile
  - python=3.7.13
  - pip=22.3.1
  - pytorch=1.12.1
  - torchaudio=0.12.1
  - torchvision=0.13.1
  - tqdm
  - pip:
    - submodules/diff-gaussian-rasterization
    - submodules/simple-knn
  • 형님이 알려주신 cuda 12로 하는 방법은 다음과 같다.
conda create -n gs3 python=3.10
conda activate gs3
conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia
# verify pytorch installation
pip install plyfile tqdm
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn
  • 그런데 cuda 12.2를 위한 적절한 토치나 토치비전을 못찾겠어서 알아서 깔리는 대로 할 예정이다 ㅎㅎ!
    conda install pytorch torchvision torchaudio pytorch-cuda=12.2 -c pytorch -c nvidia
  • 하하.. 안되서 왜 안되나 봤더니 cuda 12.2를 위한 파이토치가 없다고 한다 (이게 말이 됨?)
  • https://github.com/pytorch/pytorch/issues/111786
  • 깃헙 이슈를 보면 하드웨어 제약으로 시간이 없어서 12.2를 위한 파이토치 빌드를 할 수가 없었다고 한다. ㅋㅋㅋ

4. CUDA 12.2 삭제후 12.1 재설치 ㅋㅋ

  • 걍 화딱지 나서 12.2 지우기로 함. 파이토치 안되는 쿠다를 왜 씀?
  • 어제 형님의 0번부터 다시 해보자 아 ㅋㅋ
# 기본
sudo apt-get update
sudo apt install -y ubuntu-drivers-common
# 쿠다 재설치를 위한 전부 삭제
sudo apt-get purge 'nvidia*'
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /usr/local/cuda*
  • 위의 삭제과정을 거치면, 이제 nvidia-sminvcc -V 둘다 명령어를 찾을 수 없다고 나옴 ㅇㅇ
sudo ubuntu-drivers devices
  • 위 명령어로 recommended가 535인거 다시 한 번 확인
sudo apt install nvidia-driver-535
sudo reboot
  • 그 다음 어제랑 똑같이 진행했다.. 달라진 점은 12.1.1로 진행했다는 점.. 535가 아닌 530이 파일명인게 걸렸지만.. 문제 없이 일단 됬다.

5. cuDNN 재설치

  • 이왕 하는 김에 형님 말씀 끝까지 따르는게 좋은거 같아서 (apt-get은 쓰레기인거 같다) tar 파일로 cuDNN 다시 설치하기로 했다.
  • apt-get으로 설치한 cuDNN삭제하려고 다음 명령어로 일일이 찾고 삭제했다.
# cudnn 이름이 포함된 패키지 모두 찾기
dpkg -l | grep cudnn
# 특정 이름 패키지 삭제하기 * N번 노가다
sudo apt-get remove --purge cudnn
# 위는 하나의 예시고, 일일이 패키지 다 지움
  • cuDNN tar은 젤 최신걸루 골랐다 그냥. 찾아보니
    cuda <-> cudnn 사이에 관계가 있고, pytorch <-> cuda 사이에 관계가 있는거라 cuda 12.1이랑만 호환되면 pytorch랑은 신경 쓸 필요 없었다.
  • 저걸 데스크톱에 저장하고, 다음과 같이 압축풀기, 경로 이동, 복사, 권한 부여를 하면 된다.
cd Desktop
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
  • 버전 확인까지 완료..

6. 3DGS with cuda 12.1.....

  • 이제 안되면 나 그냥 연구 안한다.
  • 그으대로 했더니 됬다 ㅠ
conda create -n gs3 python=3.10
conda activate gs3
conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia
# verify pytorch installation
pip install plyfile tqdm
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn
  • 이제 진짜 연구 시작해보자잇!
  • 우선 뭐부터 해야하는지 몰라서 SIBR_viewers 부터 세팅 마저 해보자! 공식 리드미 대로
# Dependencies
sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev
# Project setup
cd SIBR_viewers
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release # add -G Ninja to build faster
  • 에서 cmake가 없으다신다.
  • 이 블로그 보면서 차근차근 cmake를 얻어보자
wget https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1.tar.gz
tar -xvf cmake-3.30.1.tar.gz
cd cmake-3.30.1
./bootstrap --prefix=/usr
  • 수행도중에 이번에는 openssl을 깔라고 하신다. 그것도 Development 키트로?
sudo apt update
sudo apt install openssl -y
sudo apt install libssl-dev -y
# 다시 이전 명령어 수행하면 정상 수행된다잉
./bootstrap --prefix=/usr
make
sudo make install
  • 참고) make 돌아가는데 시간이 꽤 걸림

    기억하기: cmake를 콘다 안에서 해버림 ㅎㅎ 나중에 다른 콘다 만들면 cmake 또 해버리죠

  • cmake --version으로 깔린거 확인 가능
  • 진짜 다시 SIBR_viewers 세팅을 마무리하자
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release # add -G Ninja to build faster
cmake --build build -j24 --target install
  • 완료!
  • 다음 명령어로 학습된거 다운받은거 켜보자
# with path in gaussian-splatting
# folder room is in gaussian-splatting
./SIBR_viewers/install/bin/SIBR_remoteGaussian_app --path room

  • 뭔가 뜸 ㄷㄷㄷ 이제 스플랫 보려면
# with path in gaussian-splatting
# folder room is in gaussian-splatting
./SIBR_viewers/install/bin/SIBR_gaussianViewer_app --m room/

0개의 댓글

관련 채용 정보