WSL2 の Ubuntu 22.04 で GPU, TensorFlow, PyTorch を動かすための準備を説明する.
内容は,次の公式ページによるが,一部変更などを行っている.
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract
GPU, TensorFlow, PyTorch を使いたい,そして,手元に Windows マシンはあるのだけど,Ubuntu で動かしたい(Ubuntu でしか動かない)というときに便利.
(WSL2 のインストールについては: 別ページ »で説明)
ソフトウェア類の利用条件は各自で確認すること.
【目次】
【サイト内の関連ページ】
次の公式のページの情報により,前準備を行う
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract
公式の手順では,「Windows 10 の場合には,Windows 10 Insider Program での更新が必要」とされています. ところが,現時点では,Windows 10 Insider Program での更新を行うと,Windows 11 に更新されてしまう場合があるようです. そのため,ふつうに Windows 11 に更新する(Windows 10 Inside Program は使わない)方が良い可能性があります.
ここでは,Windows Insider Preview を使う手順を説明します.
手順は 別ページ »で説明
wsl -l
4.9.121のように,121 以上になっていれば OK.
4系列を使っていて,121 より小さい値のときは,更新する必要がある.
更新の手順は次の通り.
※ 「wsl --update」あるいは「wsl -d <ディストリビューション名> --update」を実行を実行したが, 「利用できる更新ない」というとき(下図のように)
Ubuntu のインストールが終わった後, NVIDIA ドライバを,Windows マシンにインストールする.
これは,Windows マシンにインストールするのであって,WSL上の Ubuntu でのインストール作業ではない.
wsl --shutdown
hwinfo (URL: https://www.hwinfo.com) を使って調べることができる.
【NVIDIA ドライバのダウンロードページ】
https://www.nvidia.co.jp/Download/index.aspx?lang=jp
wsl
sudo apt -y update sudo apt -y install python3-dev python3-pip python3-setuptools
次のように選ぶと,その下に,ランタイムコマンドが表示される
CUDA を使わない場合は「CPU」を選ぶ. CUDA を使う場合には,次の手順で行う.
CUDA を使うとき,CUDA のバージョンを選ぶ.
そして,「Run this Command」のところに表示されるコマンドを確認.
頭には「sudo」を付ける.実行するコマンドは「sudo pip3 ....」のようになる.
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python3 -c "import torch; print( torch.__version__ )"
次の Python プログラムを実行
python3 -c "import torch; print(torch.__version__, torch.cuda.is_available())"
import torch x = torch.rand(5, 3) print(x)
wsl
TensorFlow 2.11 の動作に使う.
Ubuntu 22.04 で NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8 のインストールを行う.
NVIDIA CUDA パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/cuda/repos/
Ubuntu 22.04 の場合は,https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ で確認.
「
「cuda-ubuntu...
このとき,いま,確認したファイル名を指定すること.
端末で,次のように操作する.
Ubuntu 22.04 の場合は,次の操作により,NVIDIA CUDA のパッケージレポジトリが Ubuntu システムに追加される.
Ubuntu 22.04 の場合は,次の操作により,NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8 がインストールされる.
次のコマンドを実行.
次のコマンドを実行.
次のコマンドを実行.
古いバージョンの Ubuntu である Ubuntu 20.04 や Ubuntu 18.04 で,下に書いた手順でうまくいかないような場合は,NVIDIA 機械学習パッケージレポジトリを利用できる場合もある.参考にしてください.
NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/
sudo wget -O /etc/apt/preferences.d/cuda-repository-pin-600 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
sudo apt -y update
apt-cache search cuda-11
sudo apt -y update
apt-cache search cudnn
sudo apt -y update
sudo apt -y install cuda-11-8
(以下省略)
export CUDA_PATH=/usr/local/cuda-11.8
echo 'export CUDA_PATH=/usr/local/cuda-11.8' >> ${HOME}/.bashrc
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:${LD_LIBRARY_PATH}
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:${LD_LIBRARY_PATH}' >> ${HOME}/.bashrc
export PATH=/usr/local/cuda-11.8/bin:${PATH}
echo 'export PATH=/usr/local/cuda-11.8/bin:${PATH}' >> ${HOME}/.bashrc
cat /usr/local/cuda-11.8/version.json
sudo apt -y update
apt-cache search cudnn
sudo apt -y install libcudnn8 libcudnn8-dev
dpkg -l | grep cudnn
sudo apt -y update sudo apt -y install python3-dev python3-pip python3-setuptools
python3 --version
※ トラブルの可能性を減らすために,次の操作でアンインストールを行っておく.
sudo apt -y remove python3-keras sudo pip3 uninstall -y tensorflow tensorflow-cpu tensorflow-gpu tensorflow-intel tensorflow-text tensorflow-estimator tf-models-official tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner keras-visualizer
※ トラブルの可能性を減らすために,pip3 を用いたアンインストール操作を行っておく.
sudo pip3 uninstall -y six wheel astunparse tensorflow-estimator numpy keras-preprocessing absl-py wrapt gast flatbuffers grpcio opt-einsum protobuf termcolor typing-extensions google-pasta h5py tensorboard-plugin-wit markdown werkzeug requests-oauthlib rsa cachetools google-auth google-auth-oauthlib tensorboard tensorflow sudo apt -y install python3-six python3-wheel python3-numpy python3-grpcio python3-protobuf python3-termcolor python3-typing-extensions python3-h5py python3-markdown python3-werkzeug python3-requests-oauthlib python3-rsa python3-cachetools python3-google-auth
sudo apt -y update sudo apt -y install python3-numpy python3-pil python3-pydot python3-matplotlib sudo apt -y install libopencv-dev libopencv-core-dev python3-opencv libopencv-contrib-dev opencv-data sudo pip3 install -U tensorflow tf-models-official tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner keras-visualizer sudo pip3 install git+https://github.com/tensorflow/docs sudo pip3 install git+https://github.com/tensorflow/examples.git sudo pip3 install git+https://www.github.com/keras-team/keras-contrib.git
次のコマンドを実行.
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python3 -c "import tensorflow as tf; print( tf.__version__ )"
TensorFlow が GPU を認識できているかの確認は,端末で,次を実行して行う.
python3 -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
「device_type: "GPU"」があれば,GPUが認識できている.
動かない場合には, 次の公式ページが解決の手がかりになる可能性がある.
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract
https://github.com/tensorflow/tensorflow に記載のサンプルプログラムを実行してみる
Python プログラムの実行
※ Python プログラムを動かすために, WSL2 の Ubuntu では「python3」コマンドを使う. あるいは, PyCharmなどにある Python コンソールも便利である.
結果として 「Hello, TensorFlow!」のように表示されるので確認する.
import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') print(hello)
結果として 「42」のように表示されるので確認する.
「tf.add(a, b)」と「a + b」は,同じ結果になる
import tensorflow as tf a = tf.constant(10) b = tf.constant(32) print( tf.add(a, b) ) print( a + b )
結果として 12 が表示されるので確認する.
import tensorflow as tf matrix1 = tf.constant([[3., 3.]]) matrix2 = tf.constant([[2.],[2.]]) print( tf.matmul(matrix1, matrix2) )