Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Trikang

[리눅스, RTX 4090] NeRF & 3D Gaussian Splatting 실험 환경 설정(CUDA 환경설정, Tanks and Temples 데이터셋, nerfstudio) 본문

공부/ML

[리눅스, RTX 4090] NeRF & 3D Gaussian Splatting 실험 환경 설정(CUDA 환경설정, Tanks and Temples 데이터셋, nerfstudio)

Trikang 2024. 3. 1. 02:53

우선 실험에 필요한 데이터 셋을 받는다. 이번에는 Nerf Synthetic, LLFF, Tanks and Temples 데이터 셋을 사용할 예정이다. 설치 중, Tanks and Temples 데이터 셋 다운로드에서 문제가 발생했다.

 

Tanks and Temples 데이터 셋 다운로드 - 구글 드라이브 "Too many users have viewed or downloaded this file recently..."

공식 사이트에서 제공하는 소스코드를 빌드하여 다운로드를 진행하려 했으나, 계속해서 zip 파일이 받아지지 않고 md5 값도 달라 문제 해결을 시도했다. 결국 구글 드라이브에서 파일을 다운로드받아 압축을 해제하는 방식이라 gdown 등의 다른 파이썬 패키지를 이용하여 다운로드를 시도하였다. 그러나 아래와 같은 에러가 발생했다.

Too many users have viewed or downloaded this file recently. Please
        try accessing the file again later. If the file you are trying to
        access is particularly large or is shared with many people, it may
        take up to 24 hours to be able to view or download the file. If you
        still can't access a file after 24 hours, contact your domain
        administrator.

You may still be able to access the file from the browser:

        https://drive.google.com/uc?id=0B-ePgl6HF260UU1zUTd6SzlmczA

 

우회하기 위해서 네트워크 패킷도 까보고 이것저것 시도해보며 학습용 서버에 바로 데이터를 다운로드 받고싶었으나, 이를 가능케하는 데에 더 많은 공수가 들어갈 것 같아 우선은 로컬 컴퓨터에서 구글 드라이브에 직접 접속하여(GUI) 데이터 셋을 다운로드 후 서버에 업로드 하는 형태로 진행하였다.

 

CUDA 환경 설정 + NerfStudio 설치

아래 링크들을 많이 참고하였다.

https://ingu627.github.io/tips/install_cuda_linux/

 

Ubuntu 20.04에서 nvidia driver, cuda, cudnn, pytorch 설치의 모든 것

ubuntu 20.04, nvidia driver 495, cuda 11.3, cudnn 8.2.1, pytorch 버전을 설치하는 방법입니다.

ingu627.github.io

https://m31phy.tistory.com/125

 

[CUDA] 한 컴퓨터에 여러 버전 cuda 설치하기

저의 경우에는 Diskless cluster 구조에서 몇몇 계산노드들이 서로 다른 그래픽 카드를 가지고 있습니다. 그래서 서로 다른 버전의 cuda를 설치해야하나 싶었지만, 조사를 하다보니 CUDA SDK의 compute capa

m31phy.tistory.com

 

NeRF Studio 사용을 위해 cuda 11.8을 인스톨해야 했다. 우선 설정된 서버를 받아온 입장이고, 실물을 한 번도 보지 못했기에 ssh를 설정하고 vscode와 연결하는 동안 단 한번도 운영체제 정보를 열어본 적이 없었다.

 

그래서 hostnamectl 명령어를 통해서 운영체제 정보를 드디어 확인해봤다.

xxxx@xxxxxxxxxxx:~$ hostnamectl
   Static hostname: workstation
         Icon name: computer-server
           Chassis: server
        Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           Boot ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  Operating System: Ubuntu 20.04.6 LTS
            Kernel: Linux 5.15.0-97-generic
      Architecture: x86-6

 

 

우분투임을 확인, nvidia 웹사이트에서 아래와 같이 입력하여 wget으로 설치 파일을 받아올 수 있도록 구성하였다.

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

 

cuda 11.8을 설치하는 동안, Nerf studio의 실험 환경부터 구성하였다. 아래 링크의 Installation guide를 참고하였다.

https://docs.nerf.studio/quickstart/installation.html

conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
python -m pip install --upgrade pip

 

그리고 권장 사양(Torch 2.1.2 with CUDA 11.8)의 pytorch를 설치하였다.

pip install torch==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

설치 진행. driver 선택은 해제했다.

 

기존에 11.6 버전이 있었던지라, 두 개의 cuda driver가 존재하게 되었다.

필요하다면 cuda 디렉토리를 자신이 원하는 버전으로 새롭게 심볼릭 링크하면 되는데, 나는 이 절차가 필요없었다.

 

그리고 cuDNN을 로컬에 다운로드한 후, scp 명령어를 이용해 서버에 전송했다.

scp cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb 4090:/home/xxxx/Downloads

cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_am   4%   41MB   5.1MB/s   02:36 ETA

 

위 코드에는 .deb 파일을 전송시켰지만, 결국 tar.xz 압축 파일로 다시 전송했다. 압축을 풀고나서

(base) xxxx@xxxxxxxxxxx:~/Downloads/cudnn-linux-x86_64-8.9.7.29_cuda11-archive$ 

sudo cp include/cudnn*.h /usr/local/cuda/include
sudo cp -P lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

 

이후에 bashrc 파일을 수정하여 cuda 버전을 11.8로 인식되게 하였다(이후 터미널 재시작 필요)

 

 

그리고 https://docs.nerf.studio/quickstart/installation.html에 있는 나머지 installation 스텝도 마무리하였다.

 

이후 NerfStudio의 Training your first model 가이드(https://docs.nerf.studio/quickstart/first_nerf.html)에 따라 테스트를 진행해보려 했는데, nerfstudio의 dataset 중에 poster 파일이 없어서 그런건지 아래와 같은 에러가 발생하였다.

ns-download-data nerfstudio --capture-name=poster
Traceback (most recent call last):
  File "/home/user/.local/lib/python3.8/site-packages/gdown/download.py", line 253, in download
    url = get_url_from_gdrive_confirmation(res.text)
  File "/home/user/.local/lib/python3.8/site-packages/gdown/download.py", line 54, in get_url_from_gdrive_confirmation
    raise FileURLRetrievalError(
gdown.exceptions.FileURLRetrievalError: Cannot retrieve the public link of the file. You may need to change the permission to 'Anyone with the link', or have had many accesses. Check FAQ in https://github.com/wkentaro/gdown?tab=readme-ov-file#faq.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/bin/ns-download-data", line 8, in <module>
    sys.exit(entrypoint())
  File "/home/user/3D_survey/nerfstudio/nerfstudio/scripts/downloads/download_data.py", line 573, in entrypoint
    main(tyro.cli(Commands))
  File "/home/user/3D_survey/nerfstudio/nerfstudio/scripts/downloads/download_data.py", line 567, in main
    dataset.download(dataset.save_dir)
  File "/home/user/3D_survey/nerfstudio/nerfstudio/scripts/downloads/download_data.py", line 207, in download
    download_capture_name(save_dir, "nerfstudio", self.capture_name, capture_name_to_file_id=nerfstudio_file_ids)
  File "/home/user/3D_survey/nerfstudio/nerfstudio/scripts/downloads/download_data.py", line 170, in download_capture_name
    gdown.download(url, output=str(download_path))
  File "/home/user/.local/lib/python3.8/site-packages/gdown/download.py", line 264, in download
    raise FileURLRetrievalError(message)
gdown.exceptions.FileURLRetrievalError: Failed to retrieve file url:

	Cannot retrieve the public link of the file. You may need to change
	the permission to 'Anyone with the link', or have had many accesses.
	Check FAQ in https://github.com/wkentaro/gdown?tab=readme-ov-file#faq.

You may still be able to access the file from the browser:

	https://drive.google.com/uc?id=1dmjWGXlJnUxwosN6MVooCDQe970PkD-1

but Gdown can't. Please check connections and permissions.

 

그래서 아래 링크를 참조, nerfstudio 데이터셋 중에 살아있는 데이터가 무엇인지 확인하였고, kitchen 데이터를 다운로드하였다.

xxxx@xxxxxxxxxxx:~/xxxxxxx/nerfstudio$ ns-download-data nerfstudio --capture-name=kitchen
Downloading...
From (original): https://drive.google.com/uc?id=1IRmNyNZSNFidyj93Tt5DtaEU9h6eJdi1
From (redirected): https://drive.google.com/uc?id=1IRmNyNZSNFidyj93Tt5DtaEU9h6eJdi1&confirm=t&uuid=b29b14cd-e09c-4bf0-989d-3e5f5bfe4bfa
To: /home/xxxx/xxxxxxx/nerfstudio/data/nerfstudio/kitchen.zip
100%|██████████████████████████████████████████████████| 380M/380M [00:34<00:00, 10.9MB/s]

그리고 실행

ns-train nerfacto --data data/nerfstudio/kitchen

 

막 뭔가가 된다

 

뷰어를 볼 수 있다고 나오는데, 원격 접속해서 학습을 하고 있는 상태라 불가능할줄 알았다. 그런데 확인해보니 7007 포트가 뚫려있었고, 문제없이 확인했다.

학습되는 모습과 렌더되는 것을 같이 볼 수 있다니.. 신기하다.

Comments