인공지능(AI)

Nvidia CUDA, cuDNN, pytorch, tensorflow 설치과정 정리(23.10) / nvcc fatal

summerorange 2023. 11. 1. 00:44
반응형

Driver 설치 관련: https://summerorange.tistory.com/entry/NVIDIA-Driver-InstallDevice-2206-rev-a1-%EC%9D%B4%EC%8A%88nvidia-driver-525RTX3080-%EC%88%98%EB%8F%99%EB%B2%84%EC%A0%84%EC%84%A4%EC%B9%98

 

NVIDIA Driver Install/Device 2206 (rev a1) 이슈/nvidia-driver-525/RTX3080 /수동버전설치

자동설치가 되지 않아서...🥲 NVIDIA Driver Install 수동설치로 여러 번 하다가 한 반나절 만에 해결해서 방법 공유합니다. 1) 설치된 그래픽 정보 확인 방법 # 현재 그래픽 카드 시스템 확인 # 설치된

summerorange.tistory.com

 

NVIDIA driver 는 버전 맞춰서 설치를 했고, 이후에 cuda와 cuDNN, pytorch와 tensorflow 를 설치했습니다. 해당 과정을 요약. 

1) CUDA Install

# NVIDIA Cuda 웹사이트에서 자신의 환경(예. linux) 등을 설정하고 다운받은 폴더에서 실행시킨다 
sudo sh cuda_12.3.0_545.23.06_linux.run
# driver는 체크 해제 하고 설치했던 걸로 기억함

결과는 다음과 같이 나타났습니다.

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-12.3/

Please make sure that
 -   PATH includes /usr/local/cuda-12.3/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-12.3/lib64, or, add /usr/local/cuda-12.3/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.3/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 545.00 is required for CUDA 12.3 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run --silent --driver

Logfile is /var/log/cuda-installer.log

driver는 체크 표시에서 해제하고 설치했었던 걸로 기억합니다.

# cuda의 경로 설정
sudo sh -c "echo 'export PATH=$PATH:/usr/local/cuda-12.3/bin'>> /etc/profile"
sudo sh -c "echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.3/lib64'>> /etc/profile"
sudo sh -c "echo 'export CUDARDIR=/usr/local/cuda-12.3'>> /etc/profile"
source /etc/profile

설치가 되어 있는지 확인하는 방법

nvcc -V

또는

nvcc --version

을 치면

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Fri_Sep__8_19:17:24_PDT_2023
Cuda compilation tools, release 12.3, V12.3.52
Build cuda_12.3.r12.3/compiler.33281558_0

으로 나타납니다.

* 에러 관련: 

nvcc fatal : No input files specified; use option --help for more information

-> 스펠링 에러 nvcc -v 로 치면 해당 에러가 나타남. nvcc -V 대문자입니다. 

2) cuDNN Install

해당 사이트에 가입을 해야 다운로드 받을 수 있음.

설치 방법은 공식 사이트에서 참고 : https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#install-linux

 

Installation Guide - NVIDIA Docs

 

docs.nvidia.com

0) 자신의 환경설정에 맞는 파일을 다운로드 받고

# 다운로드 받은 파일을 압축 풀기
tar -xvf cudnn-linux-$arch-8.x.x.x_cudaX.Y-archive.tar.xz
# 다음과 같이
sudo cp cudnn-linux-x86_64-8.9.5.29_cuda12-archive/include/cudnn*.h /usr/local/cuda-12.3/include
sudo cp -P cudnn-linux-x86_64-8.9.5.29_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.3/lib64
sudo chmod a+r /usr/local/cuda-12.3/include/cudnn*.h /usr/local/cuda-12.3/lib64/libcudnn*

1) 툴킷 디렉토리에 파일을 복사해주었고, 다른 설치 글 찾아보니... 추가로 더 한 게 있어서 마찬가지로 적용해주었습니다. 

# 안해도 괜찮을 듯...
sudo ln -sf /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.9.5 /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.9.5  /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.9.5  /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.9.5  /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.9.5  /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.9.5 /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn.so.8.9.5  /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcudnn.so.8

 

2) 확인 방법

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

# 결과
	libcudnn_adv_train.so.8 -> libcudnn_adv_train.so.8.9.5
	libcudnn_ops_infer.so.8 -> libcudnn_ops_infer.so.8.9.5
	libcudnn_cnn_infer.so.8 -> libcudnn_cnn_infer.so.8.9.5
	libcudnn_cnn_train.so.8 -> libcudnn_cnn_train.so.8.9.5
	libcudnn_adv_infer.so.8 -> libcudnn_adv_infer.so.8.9.5
	libcudnn_ops_train.so.8 -> libcudnn_ops_train.so.8.9.5
	libcudnn.so.8 -> libcudnn.so.8.9.5

# 하단부분으로 확인
cat /usr/local/cuda-12.3/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

# 결과 
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

/* cannot use constexpr here since this is a C-only file */

 

 

3) Pytorch installation

0) Anaconda 설치 : conda를 통해 설치해야 해서 Anaconda 설치했습니다. anaconda 홈페이지에서 다운로드 받거나 혹은 wget으로 터미널에서 해당 파일을 받아서 bash 파일.x86_64.sh 로 bash 스크립트가 실행되도록 하면 됩니다.

1) 환경에 맞는 pytorch 다운로드

그런데... 문제가 있다. python 최신 버전과 nvcc --version 해서 나오는 버전과 좀 안맞아서 python을 3.9로 낮추고 numpy 버전도 낮춰야 설치가 되었다.

해결: 가상환경 여러 개 만들어서 버전 여러개 테스트 해보다가 python == 3.9로 numpy==1.19.5 로 설치하니 pytorch가 설치 되었다. 

# 한 번 conda 업데이트를 더 해주고
conda update -n base -c defaults conda

# 가상환경에서 진행했음
# (base) 일반 base 환경의 python은 최신버전인 3.11이 깔려있는데.
# 3.9 버전으로 가상환경을 만들고 해당 가상환경에서 pytorch와 tensorflow 설치
conda create --name py39 python=3.9

# 가상환경 활성화 시킨뒤
conda activate py39

# numpy 최신 버전을 삭제해주고
conda uninstall numpy

# numpy 1.19 버전 이하가 호환이되어서 1.19.5로 설치함
conda install numpy==1.19.5

# pytorch도 설치. 12.1 로 이전에 설치했는데, 안 맞아서 11.8 로 재설치
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

 

4) tensorflow-gpu Installation

# 이제 gpu버전의 tensorflow를 설치하고
conda install tensorflow-gpu

 

5) TEST

vim test.py
import numpy
import tensorflow as tf
import torch

print("numpy version : ", numpy.__version__)
print("tensorflow version :", tf.__version__)
print("pytorch avialble : ", torch.cuda.is_available())
print("pytorch version : ", torch.__version__)

이런식으로 파일 하나 만들고,

# 정상적으로 나타났음.
(py39) user001$ python test.py
2023-10-27 10:16:48.686061: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.10.1
numpy version :  1.19.5
tensorflow version : 2.4.1
pytorch avialble :  True
pytorch version :  2.1.0

jupyter notebook에서도 테스트

# 이제 해당 가상환경에서 jupyter notebook을 켜기
# conda activate py39 # 해당 가상환경 활성화 (py39)
conda install jupyter
jupyter notebook

# 가상환경 관련한 커널 설정
ipython kernel install --user --name=py39

# 테스트한 결과 pytorch, tensor 모두 잘 작동...

* Jupyter Notebook 커널 관련 참고

###########################################
################## 참고 ###################
###########################################

# 커널 제거
jupyter kernelspec uninstall py39
# 커널 확인
jupyter kernelspec list

# 가상환경 내보내기 Export
conda env export --name py39 > environment.yml
# 가상환경 불러오기 Import
conda env create -f environment.yml

 

 

많은 에러가 났었지만(...) 최대한 수습하고, 설치하는 방법을 간단하게 줄였습니다. 도움이 되었으면 좋겠습니다~

 

반응형