본문 바로가기

ML

Windows11 Tensorflow2, NVIDIA CUDA 사용하기 (feat. wsl)

반응형

윈도우11 환경에서 Tensorflow2.x 와 GPU 를 사용하기 위해 NVIDIA CUDA를 사용하는 환경을 설정하는 방법을 알아보겠습니다.

Tensorflow 문서를 보면 리눅스, 맥 OS, 윈도우 네이티브, 윈도우 WSL2 4가지 종류 별로 설치 법이 나와 있습니다.

이중에 윈도우 WSL2 방법으로 설정하는 방법을 알아 보겠습니다.

또다른 참고 문서

 

윈도우에 WSL2 가 설치 되어 있는 상태에서 진행해야 합니다.

 

설치 환경

- Windows11
- wsl2
- python 3.10
- NVIDIA GPU 드라이버 (NVIDIA Geforce RTX 3060 Ti)

 

 

Windows11 WSL2 환경 에서 Tensorflow2, NVIDIA CUDA 설정후 GPU 사용하기

TensorFlow 설치 방법은 공식 문서를 보고 따라했습니다.

 

 

1. 시스템 요구사항 확인

  • Windows 10 19044 이상(64비트). 이는 Windows 10 버전 21H2, 2021년 11월 업데이트에 해당합니다.

다음 문서를 참조하세요.

 

2. GPU 설정

 

NVIDIA GPU 드라이버가 없으면 설치

 

NVIDIA CUDA Toolkit 설치 확인

nvidia-smi

 

 

3. 가상환경 만들기

python3 -m venv venv-tf2-gpu

source venv-tf2-gpu/bin/activate

 

4. 텐서플로우 설치

 

pip 업그레이드

pip install --upgrade pip

 

 

pip를 사용하여 TensorFlow를 설치

# For GPU users
pip install tensorflow[and-cuda]

 

 

5. 설치 확인

GPU 설정을 확인

python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

 

에러 발생

could not open file to read NUMA node: /sys/bus/pci/devices/0000:01:00.0/numa_node Your kernel may have been built without NUMA support.

 

구글링 결과 NUMA 관련 라이브러리 설치 안되어 있음

참고 : https://blog.naver.com/phoenixqq/222540035363

똑같이 따라함

sudo su
(유저계정 암호입력. 이하 루트계정으로 진행됨.)

passwd
(root 계정 암호 입력. 난 유저 암호와 같은걸로 ㅋ)

apt update
apt upgrade
apt-get install g++ openjdk-8-jdk python3-dev python3-pip curl

python3 -m pip install --upgrade pip
# pip를 쓸 수 있게 되었다.

pip install tensorflow

 

wget https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run

sudo sh cuda_11.2.2_460.32.03_linux.run

 

 

또 에러 발생

컴파일러가 안맞다고 나옴, 너무 최신 컴파일러였음

또 구글링

참고 : https://backenddeveloper.tistory.com/184

 

 

CUDA - GCC 버젼 확인 : https://stackoverflow.com/questions/6622454/cuda-incompatible-with-my-gcc-version

 

위 참고 사이트와 링크 경로가 달라 내 환경에 맞게 수정

#현재 링크된 경로 확인
sudo  ls -l /usr/bin/gcc
sudo  ls -l /usr/bin/ g++


# >>>>>>>>> 정상적인 경로 설정
sudo ln -s /usr/bin/gcc-10 /usr/local/cuda/bin/gcc 
sudo ln -s /usr/bin/g++-10 /usr/local/cuda/bin/g++

sudo apt install gcc-10 g++-10
sudo sh cuda_11.2.2_460.32.03_linux.run --override


#  .bashrc에 다음 내용을 추가해준다.
 # >>> cuda 11.2 >>>

  export PATH=/usr/local/cuda-11.2/bin${PATH:+:${PATH}}
  export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

  # << cuda 11.2 <<


source ~/.bashrc
nvcc --version


#===================================================================================



# >>>>> 약간은 편법인데 편함 === 잘 안되면 아래 같이 하자
#기존 링크 제거 
sudo  rm /usr/bin/gcc
sudo  rm /usr/bin/ g++

#링크 새로 연결
sudo ln -s /usr/bin/gcc-10 /usr/bin/gcc
sudo ln -s /usr/bin/g++-10 /usr/bin/g++

#
sudo mv  /usr/local/cuda-11.2 /usr/local/cuda-11.0
cp -R /usr/local/cuda-11.0/bin/* /usr/bin

 

 

 

 

 

CUDA 설치가 정상적으로 모두 됐으면 다시 테스트

 

python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

 

Warnning

2024-03-19 18:32:43.298108: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT

해결

pip install tensorrt

 

 

 

 

정리하다 보니 중구난방인데 어쨋든 설치는 됐다. 아. 정리가 깔끔하게 안된다.

정상 작동은 안한다. T.T

좀더 찾아 보던가 아니면 Docker Desktop이 있으니까 Dev Container로 해봐야 겠다.

 

 

결론적으로는 WSL이지만 리눅스 설치를 참고해서 해결하면 될거 같다.

 

 

VSCode에 wsl 에서 만든 가상환경을 연결하려면 extension중에 WSL을 설치하고 연결 해주면 될거 같다.

 

반응형