지식저장소

[Ubuntu 세팅] 1.Darknet위한 초기세팅(Ubuntu20.04)

Magin 2022. 12. 29. 11:59
728x90

일단 본론부터 말하면 여기서 다루는건 다음과 같다.

  • NVIDIA driver 460 (작성자는 470)
  • CUDA11.2 (작성자는 11.4)
  • cuDNN8.1
  • openCV4.5.1

작성자 기준은 무시하셔도 됩니다. 드라이버 버전이 달라서 그렇습니다. 

driver 460버전이 잡히신다면 460을 까시고 CUDA11.2로 설치 진행하시면 됩니다. 글 또한 제가 이에 맞춰서 작성하겠습니다.

이렇게 4개를 설피하는 과정을 기록한다.

여기서 이 과정이 중요한 이유는 서로 버전에 따라 맞춰야만 가능하기 때문이다.

 

https://en.wikipedia.org/wiki/CUDA

 

CUDA - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Parallel computing platform and programming model CUDA (or Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) that allows

en.wikipedia.org

해당 사이트에서 자신이 사용하는 GPU를 검색해서 compute capability버전을 기억해두자

ctrl+f 를 통해 자신의 GPU를 검색하면 바로 확인가능 ex) 1060

 

 

1. NVIDIA driver 460 설치

먼저 현재 설치되어있는 드라이버를 확인(터미널 창에 명령어 실행시 확인 가능)

nvidia-smi

 

저는 현재 driver버전은 470이고 CUDA는 11.4가 설치된 모습을 볼 수 있습니다.

원래는 driver는 525 CUDA는 12.0이 설치되어 있었습니다.

 

현재 사용중인 GPU로 사용가능한 driver 버전

ubuntu-drivers devices

사진처럼 저는 525버전에 recommended가 표시되어 있어 초기에 해당 버전이 설치되어있었습니다.

저는 460이 표시가 되어있지 않아서 470으로 설치를 진행했습니다. (저도 460으로 설치했지만 자동으로 470으로 바꼈습니다.)

sudo apt install nvidia-driver-460

설치가 끝나고 나면 재부팅이 필요합니다. (터미널에 sudo reboot 입력)

 

재부팅 후

"Software&update"를 확인해보면 방금 설치한 드라이버가 잡히게 되는데 해당 버전으로 선택 후 적용

 

 

2. CUDA11.2 설치

 

1. 기존 CUDA 삭제

$ sudo rm -rf /usr/local/cuda*

데미안 파일로 설치한 것이 아니라면 해당 명령어로 기존의 CUDA 삭제가능

 

export PATH=$PATH:/usr/local/cuda-11.0/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.0/lib64

export CUDADIR=/usr/local/cuda-11.0

기존의 쿠다 설정 또한 삭제해주어야한다 위 명령어로 정리

 

2. CUDA 11.2 설치

https://developer.nvidia.com/cuda-toolkit-archive

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

 

위 사이트에서  11.2 버전을 찾아서 들어가면 됩니다.

자신의 현재 버전에 맞게 클릭 후 맨 아래 base installer에 있는 2줄 명령어를 복사해서 실행하면 됩니다.

 

*오류상황1

WARNING: cannot verify developer.download.nvidia.com's certificate, issued by ‘CN=DigiCert TLS RSA SHA256 2020 CA1,O=DigiCert Inc,C=US’:

위 명령어에서 CUDA 폴더를 불러오는게 안된다면 아래 코드를 실행시켜주면 해결이 됩니다. wget 명령어가 실행이 안되는것

echo "check_certificate = off" >> ~/.wgetrc

 

continue 선택

 

 

"accept " 입력 

 

아래 사진처럼 Driver 카테고리에서 space 누르면 체크가 풀림 해당 사진처럼 설정 후 install 진행

 

다음 명령어를 통해 CUDA 환경변수 및 설정을 진행합니다.

$ sudo sh -c "echo 'export PATH=$PATH:/usr/local/cuda-11.2/bin' >> /etc/profile"

$ sudo sh -c "echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.2/lib64' >> /etc/profile"

$ sudo sh -c "echo 'export CUDADIR=/usr/local/cuda-11.2' >> /etc/profile"

$ source /etc/profile

 이제 설치된 CUDA확인 해보겠습니다. 

$ nvcc -V

11.2가 표시된다면 마무리가 된 것 입니다.

 

 

3. cuDNN 설치

먼저 NIVIDA DEVELOPER에 가입을 해야 합니다.

 

cuDNN Archive

Download releases from the GPU-accelerated primitive library for deep neural networks.

developer.nvidia.com

 

Download cuDNN 카테고리 선택

 

cuDNN v8.7.0은 모두 무시하고 아래 있는 "Archiver cuDNN Releases" 선택

자신의 쿠다 버전에 맞게 선택

cuDNN Library for Linux (x86_64)파일을 받으시면 됩니다.

 

 

다운로드 받은 파일을 압축해제 후 파일을 복사

$ cd Downloads
$ tar xvzf cudnn-11.2-linux-x64-v8.1.0.77.tgz
$ sudo cp cuda/include/cudnn* /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

 

다시 링크를 걸어 줍니다.

$ sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.1.0 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
$ sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.1.0  /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.1.0  /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
$ sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.1.0  /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.1.0  /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
$ sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.1.0 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn.so.8.1.0  /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn.so.8


#또는
$ tar -xvf cudnn-linux-x86_64-8.7.0.163_cuda11-archive.tar.xz
$ cd cudnn-linux-x86_64-8.7.0.163_cuda11-archive
$ sudo cp include/cudnn* /usr/local/cuda/include
$ sudo cp lib/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

$ sudo ln -sf /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.7.0 /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
$ sudo ln -sf /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.7.0  /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.7.0  /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
$ sudo ln -sf /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.7.0  /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.7.0  /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
$ sudo ln -sf /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.7.0 /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn.so.8.7.0 /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn.so.8

 

새로 추가된 라이브러리 찾기 및 홈 디렉토리 이동

$ sudo sudo ldconfig
$ cd

 

아래 명령어 입력시 8.1.0이 보여야합니다.

$ ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn

 

4. openCV 4.5.1 설치

 

기존에 깔려있는 openCV가 있는지 확인

$ pkg-config --modversion opencv

Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found

이렇게 명령어가 나온다면 설치된 openCV가 없다는 뜻입니다.

(설치된 openCV 삭제 법은 따로 다루겠습니다.)

 

저번 처음에 기존 패키지 upgrade 진행

$ sudo apt-get update
$ sudo apt-get upgrade

 

openCV 컴파일 전 필요한 패키지 설치

$ sudo apt-get install build-essential cmake

$ sudo apt-get install pkg-config

$ sudo apt-get install libjpeg-dev libtiff5-dev libpng-dev

$ sudo apt-get install ffmpeg libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev

$ sudo apt-get install libv4l-dev v4l-utils

$ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev 

$ sudo apt-get install libgtk-3-dev

$ sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev  

$ sudo apt-get install libatlas-base-dev gfortran libeigen3-dev

$ sudo apt-get install python3-dev python3-numpy

 

openCV 다운받아 빌드

$ mkdir opencv-sources

$ cd opencv-sources


$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.1.zip

$ unzip opencv.zip


$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.1.zip

$ unzip opencv_contrib.zip

 
$ cd opencv-4.5.1

$ mkdir build

$ cd build

이제 cmake를 실행합니다. (compute capability버전을 사용합니다.)

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=ON -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D BUILD_PACKAGE=OFF -D BUILD_EXAMPLES=OFF -D WITH_TBB=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -D WITH_CUDA=ON -D WITH_CUBLAS=ON -D WITH_CUFFT=ON -D WITH_NVCUVID=ON -D WITH_IPP=OFF -D WITH_V4L=ON -D WITH_1394=OFF -D WITH_GTK=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_EIGEN=ON -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D BUILD_JAVA=OFF -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON -D OPENCV_SKIP_PYTHON_LOADER=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.1/modules -D WITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON -D CUDA_ARCH_BIN=7.5  -D CUDA_ARCH_PTX=7.5 -D CUDNN_LIBRARY=/usr/local/cuda/lib64/libcudnn.so.8.1.0 -D CUDNN_INCLUDE_DIR=/usr/local/cuda/include  .. 

 

해당 코드를 통해 cmake 중요한건7.5라고 적혀있는 부분을 모두 자신의 compute capability버전으로 바꿔야합니다.

cmake 후 마지막에 해당 문구가 보이면 완료된 것 입니다.

#빌드 및 설치
$ time make -j$(nproc)

$ sudo make install

#라이브러리 인식
$ sudo ldconfig

일단 여기까지가 제가 설치하는 과정을 기록하기 위한 과정이였습니다. 

 

728x90