아쉽게도 tensorflow가 native로 윈도우를 더 이상 지원하지 않기로 한 것 같다. 여기 저기 검색해 본 결과 JAX랑 PyTorch 쓰라고 하네. 당장 짜놓은 Tensorflow+keras 조합을 바꾸진 못할 것 같다.
당분간은 본업용 윈도우 시스템과 실험용 리눅스 시스템을 동시에 굴려서 실험을 해야 잘못된 실험(결과값을 reverse scaling하지 못해서 ....)을 다시 할 수 있을 것 같다.
그럼 본업은 유지해야 하기 때문에 윈도우를 갈아 업을 순 없고 가능한 조합은 Windows + WSL + CUDA + Tensorflow + Keras 인것 같다.
그래서 먼저 WSL 설치하고 CUDA 설치하고 tensorflow를 설치해야 겠다.
1. WSL 설치
1.1. linux용 windows 하위 시스템 설치
재부팅하라니 재부팅을 해주어야 겠다.
1.2. 사용가능한 linux 배포판 확인하기
1.3. linux 배포판 설치
나는 자주 갈아 업는 배포판은 귀찮기 때문에 Ubuntu 24.04 LTS 버전을 설치하도록 하겠다.
PS C:\Windows\system32> wsl --install Ubuntu-24.04
1.4. Ubuntu 환경 업데이트
PS C:\Windows\system32> wsl
user@DESKTOP:/mnt/c/Users/user$ sudo apt update
user@DESKTOP:/mnt/c/Users/user$ sudo apt upgrade
2. CUDA 환경 설치
Nvidia의 드라이버 구조와 cuda 는 다소 난잡하다.
2.1. Nvidia 드라이버 설치
윈도우 시스템에 nvidia 드라이버가 설치된 상태로 wsl을 설치해서 그런지, 이미 설치되어 있는 듯 싶다. 확인만 하고 넘어 가자.
...$ nvidia-smi
드라이버 버전 확인 요망(내껀 드라이버 버전 576.88이다. CUDA도 설치 되어 있네 12.9)
2.2. CUDA Toolkit 설치
앞서 이야기 했듯이 난잡하다. nvidia 드라이버 버전을 기준으로 다른 패키지들 tensorflow와 cuda-toolkit의 매칭되는 버전을 찾아 보도록 해야 겠다. 다시 설치하고 그러기 싫다.
우선 시스템이 제공해 줄 수 있는 버전을 확인해 본다.
...$ sudo apt search nvidia-cuda-tool
nvidia-cuda-toolkit이 설치할 수 있게 검색되며 버전은 12.0.140 이다.
그럼 설치한다.
...$ sudo apt install nvidia-cuda-toolkit
오래 걸린다. 잠깐 정리하고 넘어가자.
nvidia 드라이버 버전(576.88), CUDA 버전(12.9), nvidia-cuda-toolkit 버전(12.0.140)
설치된 nvidia관련 패키지들 리스트들이다.
...$ apt list --installed | grep nvidia
libnvidia-compute-535/noble-updates,noble-security,now 535.274.02-0ubuntu0.24.04.2 amd64 [installed,automatic]
libnvidia-ml-dev/noble,now 12.0.140~12.0.1-4build4 amd64 [installed,automatic]
nvidia-cuda-dev/noble,now 12.0.146~12.0.1-4build4 amd64 [installed,automatic]
nvidia-cuda-gdb/noble,now 12.0.140~12.0.1-4build4 amd64 [installed,automatic]
nvidia-cuda-toolkit-doc/noble,now 12.0.1-4build4 all [installed,automatic]
nvidia-cuda-toolkit/noble,now 12.0.140~12.0.1-4build4 amd64 [installed]
nvidia-opencl-dev/noble,now 12.0.140~12.0.1-4build4 amd64 [installed,automatic]
nvidia-profiler/noble,now 12.0.146~12.0.1-4build4 amd64 [installed,automatic]
nvidia-visual-profiler/noble,now 12.0.146~12.0.1-4build4 amd64 [installed,automatic]
어 근데 cudnn은 없네 이것도 필요한 것으로 기억하는데 이것도 설치해야 겠다.
...$ sudo apt install nvidia-cudnn
현재 설치버전은 8.9.2.26이다. 버전이 무슨 암호 같다. 그 전에 너무 길다.
이젠 python 설치와 관련 패키지 설치인것 같다.
3. python 설치
다행이도 이미 설치된 버전은 3.12.3이다.
...$ python3
Python 3.12.3 (main, Nov 6 ...)
>>> quit()
그럼 관련 조합을 정리해 보자.
tensorflow-2.15 + cuda-12.2 + cudnn-8.9 -> corresponding NVIDIA Driver 535
약간 다르긴 하지만 이 조합 밖에 없다. 이걸로 밀어 부치자.
3.1. 가상 환경 설치하기
개발환경의 패키지 버전과 시스템이 관리하는 버전의 충돌을 경험해 보고 싶지 않으면 python 가상환경을 설치하자.
...$ sudo apt install python3-venv
3.2. tensorflow를 위한 가상환경 생성
그럼 하얀 도화지를 준비하자.
...$ python3 -m venv tf-env
3.3. 생성된 가상 환경 활성화 하기
...$ source ./tf-env/bin/activate
(tf-env) ...$
가상환경 종료는 맨 마지막에 해주어야 하지만, 참고로 다음과 같이
(tf-env) ...$ deactivate
아무튼 가상환경 하에서 필요한 tensorflow-2.15버전을 설치한다.
3.4. tensorflow 2.15 설치
(tf-env) ...$ pip install tensorflow[and-cuda]==2.15
에휴 없다. 다시 호환표를 보자.
https://www.tensorflow.org/install/source?hl=ko#gpu
....
텐서플로우-2.17.0 3.9-3.12 클랭 17.0.6 바젤 6.5.0 8.9 12.3
텐서플로우-2.16.1 3.9-3.12 클랭 17.0.6 바젤 6.5.0 8.9 12.3
텐서플로우-2.15.0 3.9-3.11 클랭 16.0.0 바젤 6.1.0 8.9 12.2
...
맞는 조합이 없다. python 3.12이고 cuDNN 8.9고 CUDA는 12.9다.
모른겠다. 2.17버전 설치한다.
(tf-env) ...$ pip install tensorflow[and-cuda]==2.17
엉망 진창이지만 설치가 된다. 근데 오래 걸린다.
3.6. 설치 확인
(tf-env) ...$ python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
너무 오래 걸린다. 윈도우 환경으로 넘어가서 visual studio code 환경 설정해야 겠다.
4. visual studio code 환경 설정
visual studio code는 윈도우에 설치하고 python과 tensorflow는 윈도우 안에 있는 리눅스 시스템에 설치되어 있다. 이 둘 간의 OS를 넘나드는 다리를 만들어 주어야 한다.
visual studio code를 실행하고 좌측 탭의 extensions를 선택하고 "Remote - WSL"을 검색한다.
근데 WSL 밖에 없다. 설명을 보아 하니 WSL에 있는 폴더를 열 수 있다고 한다. 이것 설치한다.
그리고 좌측 하단의 원격 연결 버튼 ( >< 모양 아이콘)을 클릭하고 "Connect to WSL"을 선택한다.
뭔가 설치한 Ubuntu-24.04와 연결하는 것 같다.
File -> Open Folder 하고 WSL 디렉토리 선택하고 test.py 파일을 하나 만들면 필요한 extensions들을 추천해 주는데 다 설치하자. 그럼 또 가상 환경 만들라고 한다. 이미 만들어 놓은 건 어쩌고 만들라고 하는지 기존것 로딩하는 것은 없나 보다.
아 귀찬다. /mnt/c/Users/usr/tf-env를 /home/user로 복사해 오자. 나머지는 내일 하는 것으로.