Tensorflow windows 11 설치
사전 설치
WSL2
tensorflow를 설치하는 곳은 단순한 windows가 아닌 windows 내부에 만들어질 가상머신입니다. 따라서, wsl2를 먼저 설정해 주어야 합니다.
파워셀을 켜서 아래 명령을 실행시켜 주세요. 기본적으로 wsl2가 설치됩니다.
wsl --install
설치 완료 후 컴퓨터를 재부팅해주세요.
wsl 프로그램을 통해 바로 터미널로 가상 환경 개발이 가능합니다.
cmd 에서 아래 명령을 통해 wsl 실행 가능
wsl.exe
파이썬
파이썬 설치 확인
tensorflow 호환 가능한 파이썬 3.9-3.11 버전 확인
python3 --version
# Python 3.10.12
pip3 설치
sudo apt update && upgrade
sudo apt install python3-pip
pip3 --version
# pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
NVIDIA 드라이버
NVIDIA 드라이버 설치
https://www.nvidia.com/download/index.aspx?lang=en-us
NVIDIA CUDA toolkit 설치
https://developer.nvidia.com/cuda-toolkit-archive
NVIDIA cuDNN 설치
https://developer.nvidia.com/cudnn
tensorflow 설치
pip로 설치
python setup.py egg_info did not run successfully 에러 해결
pip 업데이트
python3 -m pip install --upgrade pip
setuptools 업데이트
pip3 install --upgrade setuptools
python3 -m pip install tensorflow[and-cuda]
CUDA for WSL-ubuntu 설치
wsl2에 필요한 CUDA를 추가로 설치. 아래 링크를 따라 설치 진행
CUDA 설치 여부 확인
아래 명령을 통해 그래픽카드가 정상적으로 목록에 출력되는 지 확인
nvidia-smi
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.07 Driver Version: 546.12 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 3070 ... On | 00000000:01:00.0 On | N/A |
| N/A 46C P8 14W / 95W | 594MiB / 8192MiB | 2% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+
설치 여부 확인
CPU
아래와 같이 텐서 객체를 반환, 출력하면 정상
python3 -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
# tf.Tensor(-2911.9321, shape=(), dtype=float32)
GPU
빈 객체 []
를 반환하는 경우
CUDA 및 cuDNN 설치 여부를 확인
CUDA
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Wed_Nov_22_10:30:42_Pacific_Standard_Time_2023
Cuda compilation tools, release 12.3, V12.3.107
Build cuda_12.3.r12.3/compiler.33567101_0
cuDNN
https://beelinekim.tistory.com/65 참고, cudnn_version.h 파일이 없는 경우 cuDNN이 설치되지 않은 것으로 cuDNN 설치
아래와 같이 텐서 객체를 반환, 출력하면 정상
python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
# [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
학습 테스트
vscode로 wsl 접속
vscode extension인 REMOTE DEVELOPMENT 설치. vscode 상단 중앙에서 > wsl
입력하여 wsl 접속 시도
파이썬 인터프리터 확인 및 선택
매우 주의, windows에 설치된 python 인터프리터가 아니라, wsl에 tensorflow 라이브러리를 설치한 파이썬 인터프리터 를 선택해야 합니다. 이 가이드는 windows가 아니라 wsl 가상머신 내부에 텐서플로 개발 환경 설정 방법을 알려주는 것임을 기억하세요!
파이썬 인터프리터를 올바르게 선택했는 지 간접적으로 확인 가능한 파이썬 프로그램 실행
import tensorflow as tf
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices() )
정상적으로 선택했을 경우, GPU 관련 정보가 출력되어야 함
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 364653326627053698
xla_global_id: -1
,
name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 5848956928
locality {
bus_id: 1
links {
}
}
physical_device_desc: "device: 0, name: NVIDIA GeForce RTX 3070 Ti Laptop GPU, pci bus id: 0000:01:00.0, compute capability: 8.6"
...
]
예제 학습 코드
아래 예제 코드 실행
import tensorflow as tf
cifar = tf.keras.datasets.cifar100
(x_train, y_train), (x_test, y_test) = cifar.load_data()
model = tf.keras.applications.ResNet50(
include_top=True,
weights=None,
input_shape=(32, 32, 3),
classes=100,)
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
model.compile(optimizer="adam", loss=loss_fn, metrics=["accuracy"])
model.fit(x_train, y_train, epochs=5, batch_size=64)
학습 하는 동안 작업 관리자에서 GPU 사용량 확인