https://prlabhotelshoe.tistory.com/47
이전 게시물에서 간단하게 WSL2 Ubuntu 설치까지 완료 하였다.
이제 해당 환경에 CUDA 및 cuDNN을 연동하여 Tensorflow와 GPU 연동을 테스트 해볼것이다.
다만 리눅스 시스템 환경이다보니, 리눅스 시스템의 기본적인 구조라던지(디렉토리 접근, sudo 권한, bash 등..) 간단한 커맨드 정도는 이해하고 있어야 진행하기 수월하다는 점 참고 부탁드립니다...(저같이 리눅스 커맨드에 익숙하지 않거나 처음 접하신 분들 기준으로 작성하였지만, 설치 중 오류가 발생하거나 정상 설치가 안 되었을 때 이를 해결하거나 원인에 접근하는데 어려움이 있습니다...)
1. 아나콘다 설치
(※이미 아나콘다를 설치하였거나 가상환경을 사용하지 않으시려면 2번 부터 보셔도 무방합니다※)
https://www.anaconda.com/download
Windows와 같이 exe파일을 내려받아 설치하는 게 아닌, 아나콘다 공식홈페이지에서 리눅스용으로 다운로드 링크를 복사한다.
그 다음 wget 커맨드로 복사한 링크를 붙여넣기 한 뒤 설치를 진행한다.
(이때, CMD나 파워쉘로 WSL을 실행할 경우 경로가 윈도우 디렉토리인 '/mnt/c/Users/(사용자명)' 으로 되어있으니, 경로를 Ubuntu 설치 디렉토리로 변경할 것)
wget https://repo.anaconda.com/archive/Anaconda3-2023.07-1-Linux-x86_64.sh
나의 경우 Downloads란 폴더를 따로 생성하여 이곳에 다운로드 하였다.
그 다음 sh 커맨드로 다운로드한 파일을 설치한다.
sh Anaconda3-2023.07-1-Linux-x86_64.sh
명령어 입력 후 라이센스의 내용을 살펴보고 동의하란 말이 나온다. 엔터후 다음 진행
쭉 엔터를 누르며 승인하겠냐고 나온다. 당연히 yes
설치 경로를 /home/(사용자명)/anaconda3 로 지정할 것이냐고 묻는다. 이대로 사용할 것이면 그냥 엔터
혹은 다른 경로를 사용할 경우 해당 경로를 입력해주면 되겠다.
마지막으로 환경변수를 등록해주길 원하냐고 묻는다. 해당 항목도 yes
모든 설치가 마무리 되었고 다음 커맨드로 bashrc를 적용한다.
source ~/.bashrc
이제 Ubuntu 실행 시 자동으로 conda가 실행될텐데, conda를 activate 할 때만 사용하고 싶다면 아래 커맨드를 추가로 입력한다.
conda config --set auto_activate_base false
마지막으로 테스트용 가상환경을 생성
conda create --name 가상환경명 python=버전
2. CUDA 설치
https://prlabhotelshoe.tistory.com/23
먼저 다음의 커맨드로 기존에 설치되어있던 그래픽카드(NVIDIA) 드라이버가 정상적으로 연동되어있는지 확인합니다. (윈도우용 드라이버 입니다. 리눅스용으로 재설치할 필요 X)(그래픽카드 드라이버 설치는 위 링크 1번 항목 참조)
nvidia-smi
https://developer.nvidia.com/cuda-toolkit-archive
다음으로 위의 링크를 통해 CUDA 설치파일을 제공되는 커맨드로 다운로드 및 설치합니다. 이때, 드라이버와 달리 CUDA는 리눅스 버전의 WSL-Ubuntu로 다운받는다.
버전은 본인이 원하는 버전을 설치해도 무방하나, 나의 경우 무난하게 11.3.0 버전을 설치하였다.
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda-repo-wsl-ubuntu-11-3-local_11.3.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-3-local_11.3.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
한줄 한줄 입력하여 설치를 진행
모든 커맨드를 순서대로 입력하여 설치가 마무리 되면 /usr/local/ 경로에 'cuda' 디렉토리가 생성되었는지 확인한다.
이후 bashrc를 통해 path를 설정한다
sudo nano ~/.bashrc
커맨드를 입력하면 아래와 같은 창이 뜰텐데, 쭉 내려서 마지막 줄에 다음의 코드를 입력한 뒤 저장한다.
(nano 저장: ctrl+o, 엔터 후 ctrl+x로 나가기)
export PATH="/usr/local/cuda/bin:$PATH“
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH“
저장 후 WSL을 재시작한다.
마지막으로 다음 커맨드를 통해 설치한 CUDA의 버전을 확인하여 CUDA가 정상적으로 설치되었는지 확인한다.
nvcc -V
여기까지 이상이 없다면 CUDA는 설치가 완료 되었다.
3. cuDNN 설치
https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#installlinux
해당 항목은 위의 NVIDIA 공식 문서를 참조하였습니다. 설치 중 오류가 있거나 참고할 사항이 있다면 해당 링크를 참조하시기 바랍니다.
https://developer.nvidia.com/rdp/cudnn-archive
먼저 위 사이트에서 본인 환경과 호환되는 버전을 다운로드 한다. 나의 경우 11.3과 호환되는 8.4.1 버전을 내려받았다. (cuDNN도 마찬가지로 리눅스 버전으로 다운받는다)
이때 다운로드를 하면 tar 확장자가 아닌, xz 확장자로 되었는데 압축을 먼저 해제하면 tar 확장자의 압축 파일이 생성된다. 그 다음 Ubuntu에서 윈도우 다운로드 경로(일반적으로 /mnt/c/user/사용자명/Downloads/)로 이동하여 다음의 커맨드로 Ubuntu 환경으로 파일을 옮긴다.
mv 파일명 옮길경로
//예시
mv cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar /home/hotelshoe27/Downloads
파일 이동 후 경로를 파일을 이동한 경로로 변경한 뒤, 다음의 명령어로 압축을 해제
이때 압축을 해제하면 동일한 파일명의 디렉토리가 생성된다.
tar -xvf cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar
이제 다음의 커맨드로 Windows에서 설치 파일을 덮어쓰기 했던 것 같이, 각 파일들을 해당되는 디렉토리에 카피(덮어쓰기) 한다. 나의 경우는 각 파일 마다 해당되는 경로로 이동하여 커맨드를 입력하였다.(아래 이미지 참조)
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
마지막 커맨드로 권한을 설정
이후 WSL을 재시작한 뒤 테스트를 진행해본다
(다른 블로그나 웹에서는 WSL 재시작 혹은 재시작 없이 바로 테스트를 했던데, 저의 경우 두 가지 방법 모두 GPU가 정상적으로 잡히지 않았습니다. 아에 컴퓨터를 재부팅 후 다시 실행한 뒤 정상적으로 잡혔었습니다)
4. Tensorflow 연동 테스트
먼저 당연하겠지만, tensorflow-gpu가 아닌 일반 tensorflow를 설치한다. 최신 릴리즈의 경우 작성일 기준 2.13이지만, 역시나 호환성 문제등을 고려해서 2.12 버전으로 설치하였다.
pip install tensorflow==2.12
설치 후, python을 실행시켜, tensorflow가 gpu를 인식하는지 코드를 입력하여 확인해본다.
먼저 python3를 입력하여 python을 실행한다.
python3
-
다음으로 아래 코드를 입력한뒤 아래 이미지와 같이 GPU가 정상적으로 잡히면 설치는 성공이다.
(일반적인 편집기에서 사용하듯 한 줄 입력 후 엔터 한다)
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
※추가※ - 저는 여기까지 오류 없이 진행이 완료 되었지만 정상적으로 딥러닝이 진행되지 않았습니다. 꼭 아래 번외 항목을 확인하시길 바랍니다
번외 - 학습 테스트 (중요)
GPU연동을 마무리한 뒤 패키지를 설치하고 실제 딥러닝 테스트를 진행해 보았지만 학습이 되지 않았다....
오류 메시지를 살펴보니, 설치된 cuDNN은 8.4.1인데, 컴파일은 8.6.0버전으로 되어있다는 것이다..?
해당 원인을 생각해보면 설치한 CUDA 버전과 관련된 것 같은데... 아무래도 상대적으로 낮은 버전의 CUDA를 설치해서 그런건지.. 원인에 대해 좀 더 파악해 보아야겠다.
어쨌든 위에서 요구한대로 cuDNN 8.6.0 버전으로 다시 설치를 진행했다
8.6.0 버전 압축파일을 다운받은 뒤 위 3번 항목의 순서대로 커맨드를 입력 후 다시 테스트를 진행하였다.
설치 후 테스트 결과 해당 오류는 출력되지 않았고, cuda가 정상적으로 GPU 메모리를 사용하는 것으로 보아 정상 학습되는 것으로 판단된다.
기회가 되면 비교적 최신 버전의 CUDA와 cuDNN으로 다시 재설치할 계획이다. 또 리소스 사용량을 보면 RAM 메모리가 비정상적으로 많이 잡히는데 리눅스 시스템의 특징? 이라고 한다. 이 부분도 좀 더 공부해봐야겠다.
'기타 > GPU set' 카테고리의 다른 글
[WSL2] WSL2 환경 tensorflow GPU 연동 - 1. WSL2 설치 (0) | 2023.08.06 |
---|---|
[CUDA&OpenCV] Python 환경 OpenCV GPU 연동 (CUDA backend in OpenCV) - 2. 빌드 & 테스트 (32) | 2022.02.21 |
[CUDA&OpenCV] Python 환경 OpenCV GPU 연동 (CUDA backend in OpenCV) - 1. 파일 설치 (0) | 2022.02.19 |
[CUDA] windows10 CUDA 설치 & tensorflow 연동 (1) | 2022.02.17 |
댓글