WindowsのWSL上でGPUのTensorFlow環境構築

スポンサーリンク
TensorFlow
スポンサーリンク

はじめに

ここではNVIDIAのGPUマシンにWindowsのWSL上にCUDA、cuDNNをインストールして、TensorFlowの機械学習の計算環境を構築します。

PCの構成(参考)

OS:Windows11HOME(22H2)
CPU:12thGen Intel Core i5-12400F (2.5GHz)
GPU: NVIDIA GeForce RTX 3080(10GB)
RAM: 32GB

GPU関係アプリのインストール

NVIDIAドライバの更新

下記のNVIDEAのWebサイトから、構成にあった最新のドライバを確認し、最新になっていない場合は、念のため、インストールします。私はゲームもするので、インストールしているGeForce Game Readyドライバーからアップデートをしました。

TensorFlowソフトウエア要件

TensorFlowのソフトウエア要件を公式ドキュメントから確認します。

TensorFlowは今後バージョン2.11以降はWindowsネイティブ環境はサポートされず、WSL経由での提供になるとのことです。そこで、WSL上に環境を作っていきます。
WSL環境の準備については、下記のリンク先記事にまとめています。

Ubuntu環境の準備

WSLにCUDAなどのGPU環境を準備していきます。まずはターミナルからWSLのカーネルを最新版にします。

> wsl.exe --update

NVIDIA GPUサポートのセットアップ

ここからはNVIDIAのサポートページの指示に従ってUbuntuに入ってWSL2 でCUDAとNVIDIA GPUサポートをセットアップします。WSL2にCUDA11.8のインストールができました。

home@DESKTOP-P0LUVCM:~$ sudo apt-key del 7fa2af80
home@DESKTOP-P0LUVCM:~$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
home@DESKTOP-P0LUVCM:~$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
home@DESKTOP-P0LUVCM:~$ wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
home@DESKTOP-P0LUVCM:~$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
home@DESKTOP-P0LUVCM:~$ sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
home@DESKTOP-P0LUVCM:~$ sudo apt-get update
home@DESKTOP-P0LUVCM:~$ sudo apt-get -y install cuda
home@DESKTOP-P0LUVCM:~$ /usr/local/cuda/bin/nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

Minicondaのインストールとconda環境構築

TensorFlowのインストールはcondaコマンドを使うことが推奨されているので、ここでは、Minicondaをインストールして、新たにTensorFlow用にtfというconda環境を作ります。ここでは、TensorFlowの手順に従って、Python3.9でセットアップしました。

home@DESKTOP-P0LUVCM:~$ curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o Miniconda3-latest-Linux-x86_64.sh
home@DESKTOP-P0LUVCM:~$ bash Miniconda3-latest-Linux-x86_64.sh
home@DESKTOP-P0LUVCM:~$ source ~/.bashrc
(base) home@DESKTOP-P0LUVCM:~$ conda create --name tf python=3.9
(base) home@DESKTOP-P0LUVCM:~$ conda activate tf
(tf) home@DESKTOP-P0LUVCM:~$ python -V
Python 3.9.15

condaでのCUDAとcuDNNのインストール

次に、conda環境でCUDAとcuDNNを使うためにインストールします。

(tf) home@DESKTOP-P0LUVCM:~$ conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1.0
(tf) home@DESKTOP-P0LUVCM:~$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/

続いて、conda環境をactivateするたびに、CUDAを立ち上げるコマンドを自動化します。(公式サポートのコピペ)

(tf) home@DESKTOP-P0LUVCM:~$ mkdir -p $CONDA_PREFIX/etc/conda/activate.d
(tf) home@DESKTOP-P0LUVCM:~$ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/' > $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh

TensorFlowのインストール

TensorFlowのインストール

それでは、引き続いてconda環境にTensorFlowをインストールします。

(tf) home@DESKTOP-P0LUVCM:~$ pip install --upgrade pip
(tf) home@DESKTOP-P0LUVCM:~$ pip install tensorflow

引き続き、Jupyter Labをインストールし、パスワードを設定後、立ち上げます。

(tf) home@DESKTOP-P0LUVCM:~$ conda update -n base -c defaults conda
(tf) home@DESKTOP-P0LUVCM:~$ conda install -c conda-forge jupyterlab
(tf) home@DESKTOP-P0LUVCM:~$ jupyter lab --generate-config
(tf) home@DESKTOP-P0LUVCM:~$ jupyter notebook password
(tf) home@DESKTOP-P0LUVCM:~$ jupyter lab

それではJupyter LabでTensorFlowのテストをしてみます。CPU、GPUでTensorFlowが使えることが確認できました。

import tensorflow as tf
a = tf.random.normal([1000, 1000])
print(tf.reduce_sum(a))
tf.config.list_physical_devices('GPU')
tf.Tensor(-741.11035, shape=(), dtype=float32)
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

コメント