@senspond
>
윈도우 환경에서 WSL로 Tensorflow GPU CUDA 12 version 이상 사용하는 방법에 대해 정리해본 글입니다.
파이토치는 윈도우 환경 최신CUDA까지 지원이 되어 문제가 없었는데,
텐서플로우에서 GPU 가속을 사용하려니 아래와 같은 문제가 있었다.
텐서플로우 공식사이트에 보면 윈도우 환경에서 GPU지원은 현재 tensorflow 2.10 버전까지 지원하는데CUDA11.2 과 cuDNN 8.1에 호환된다고 명시되어 있다.
현재 RTX 4060 TI 그래픽 쓰고 있는데, 윈도우 환경에서 호환성 문제로 어쩔 수 없이 리눅스 환경이 필요했다.
정상적으로 GPU지원이 가능해진다면
import tensorflow as tf
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices() ) # GPU 나와야함
print(tf.config.list_physical_devices('GPU')) # 목록 나와야함
여기에 GPU장치가 출력 되어야만 한다.
윈도우 / 리눅스 듀얼부팅 하는 방법도 있겠지만, WSL 로 진행을 하였다.
윈도우에서 wsl 설치방법은 구글링을 조금만 해봐도 나온다. 대략적인 절차는 다음과 같다.
BIOS 설정에서 가상화 기능켜기
윈도우 기능켜기 Linux용 Windows 하위 시스템, 가상머신플램폼 기능을 켜주고 재부팅
wsl 설치
이하 wsl 우분투(Ubuntu) 환경에 들어가서 진행해준다.
$ sudo apt update
$ sudo apt install build-essential
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
WSL 은 리눅스 설치와 다르게 윈도우에 설치한 그래픽카드로 잡히게 된다.
리눅스에 설치하듯이 그래픽카드 설치하면 안됨.
텐서플로우(리눅스)
파이토치(리눅스)
텐서플로우 보다 파이토치를 더 많이 다룰 것 같기 때문에 파이토치 2.2 기준으로 둘 다 문제없을 것 같은 CUDA12.1 버전으로 설치하기로 했다.
pip install tensorflow[and-cuda]==2.15
리눅스 환경에서 최근 tensorflow버전은 [and-cuda]로 설치하게 되면 CUDA 설정을 자동으로 해준다고 한다. 그런데, 필자의 경우 이상하게 제대로 설치되지 않아서 수동으로 CUDA 세팅을 진행하였다.
# 다운로드
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run
# 설치
sudo sh cuda_12.1.1_530.30.02_linux.run
# 다운로드
wget https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-9.0.0.312_cuda12-archive.tar.xz
# 압축풀기
tar -xvf cudnn-linux-x86_64-8.9.2.26_cuda12-archive.tar.xz
# 경로 이동
cd cudnn-linux-x86_64-8.9.2.26_cuda12-archive
# cuda 디렉토리에 복사
sudo cp include/cudnn* /usr/local/cuda-12.1/include
sudo cp lib/libcudnn* /usr/local/cuda-12.1/lib64
$ sudo vi ~/.bashrc
export PATH="/usr/local/cuda-12.1/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH"
$ source ~/.bashrc
설치한 cuda 버전에 맞게 Build cuda_XX.X 이 출력이 되어야 한다. cuda-12.1을 설치하고 환경변수로 잡아줬기 때문에 cuda_12.1.. 라고 출력되는 것을 확인 할 수 있다.
pip install tensorflow==2.15
python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
여기에 빈 리스트가 나오지 않으면 된다.
비주얼 스튜디오 코드의 마켓 플레이스에서 WSL 플러그인을 설치한다.
VSCODE에서 Connect to WSL 을 통해 WSL에 연결한다.
그리고 select 인터프리터로 wsl에서 생성한 미니콘다 가상환경으로 연결한다.
Your kernel may have been built without NUMA support 라는 문구가 뜨기는 하는데, nvidia개발자 포럼에 찾아보니 WSL로 사용했을 때 뜨는데 메모리 컨트롤러가 하나뿐이므로 메모리 엑세스가 균일하기에 무시해도 무시해도 된다고 한다.
파일 탐색기에서 네트워크 추가로 작업 경로를 넣어준다.
안녕하세요. Red, Green, Blue 가 만나 새로운 세상을 만들어 나가겠다는 이상을 가진 개발자의 개인공간입니다.
현재글에서 작성자가 발행한 같은 카테고리내 이전, 다음 글들을 보여줍니다
@senspond
>