WSL2 上の Ubuntu での NVIDIA CUDA ツールキット, NVIDIA cuDNN, PyTorch, TensorFlow 2.11 のインストールと動作確認(Windows 上)

本記事では、Windows Subsystem for Linux 2 (WSL2) 上の Ubuntu 22.04 環境で、NVIDIA GPU を活用した深層学習フレームワークである PyTorch および TensorFlow (バージョン 2.11) をセットアップする手順を解説します。Windows PC をお持ちで、Linux 環境での開発・実験を行いたい大学生や技術者の方を対象としています。

WSL 2 の Ubuntu 22.04 で GPU, TensorFlow, PyTorch を動かすための準備を説明する.

内容は,次の公式ページによるが,一部変更などを行っている.

https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract

GPU, TensorFlow, PyTorch を使いたい,そして,手元に Windows マシンはあるのだけど,Ubuntu で動かしたい(Ubuntu でしか動かない)というときに便利.

WSL 2 のインストールについては: 別ページ »で説明)

ソフトウェア類の利用条件は各自で確認すること.

目次

  1. はじめに
    • 本記事の目的と対象読者
    • 全体の流れ
  2. 前準備 (Windows / WSL)
  3. PyTorch のセットアップ (WSL Ubuntu)
  4. TensorFlow 2.11 のセットアップ (WSL Ubuntu)
  5. TensorFlow の簡単なプログラム例

サイト内の関連ページ

はじめに

本記事では、WSL2上のUbuntu 22.04でNVIDIA GPUを利用してPyTorchとTensorFlow 2.11を動作させるための環境構築手順を解説します。大学生や技術者の方々が、Windows環境でLinuxベースの開発を行う際の一助となることを目指します。

全体の流れは以下の通りです。

  1. Windows側での必要な設定(WSL2の有効化、NVIDIAドライバのインストール)
  2. WSL Ubuntu環境の準備(カーネルバージョンの確認・更新)
  3. WSL Ubuntu内でのPython環境構築(仮想環境の利用推奨)
  4. PyTorchおよび関連ライブラリのインストールと動作確認
  5. TensorFlow 2.11、CUDAツールキット、cuDNNおよび関連ライブラリのインストールと動作確認

前準備 (Windows / WSL)

次の公式のページの情報により,前準備を行う

https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract

Windows の要件確認 (Windows 11 推奨)

WSL 2 で NVIDIA GPU を利用するには、特定のバージョンの Windows が必要です。公式ドキュメント (https://docs.nvidia.com/cuda/wsl-user-guide/index.html#getting-started) を参照し、お使いの Windows が要件を満たしているか確認してください。

(参考情報)以前の手順では Windows Insider Program の利用が案内されていましたが、現在では必須ではない可能性が高いです。もし Windows 10 を継続して利用し Insider Program を利用する場合は、更新によって Windows 11 になる可能性がある点にご注意ください。

WSL 2 と Ubuntu のインストール

手順は 別ページ »で説明

WSL 2 での Ubuntu のカーネルバージョン確認と更新

  1. Windows で,コマンドプロンプトを実行.
  2. インストール済みの Ubuntu のカーネルのバージョンの表示
    • 「wsl -l」でディストリビューション名を確認
      wsl -l
      
    • 「wsl -d <ディストリビューション名> uname -r」を実行して, Ubuntu のカーネルのバージョンの表示.
      wsl -d Ubuntu-22.04 uname -r
      
  3. 表示されたバージョンが,WSL 2 の GPU サポート要件を満たしているか確認します。一般的に、5.10.16.3以上のカーネルが必要です。

    5系列以上のバージョンが表示されていれば、通常は問題ありません。

    もし古い4系列が表示された場合(例: Windows 10 LTS版など)、バージョン番号を確認してください。4.19.121以上であれば基本的な要件は満たしていますが、最新の機能を利用するには5系列への更新が推奨されます。

表示されたカーネルバージョンが古い場合 (例: 4系列で 121 より小さい、または 5系列でも古い場合) は、更新が必要です。

更新の手順は次の通りです。

  1. コマンドプロンプトを管理者として開き「wsl --update」を実行します。
    wsl --update
    
  2. 更新が完了したら、WSL を再起動するために「wsl --shutdown」を実行します。
    wsl --shutdown
    

* 「wsl --update」を実行しても「利用できる更新はありません」と表示される場合:

Windows Update の設定を確認してください。

  1. Windows の設定で「Windows Update」を開き、「詳細オプション」に進みます。
  2. Windows の更新時に他の Microsoft 製品の更新プログラムを受け取る」がオンになっていることを確認します。オンでなければオンにしてください。
  3. 設定を戻り、「更新プログラムのチェック」をクリックして Windows Update を実行します。
  4. Windows Update が完了したら、再度管理者としてコマンドプロンプトを開き、「wsl --update」を実行してみてください。

NVIDIA ドライバのインストール (Windows)

Ubuntu のインストールが終わった後, NVIDIA ドライバを,Windows マシンにインストールする.

これは,Windows マシンにインストールするのであって,WSL上の Ubuntu でのインストール作業ではない.

  1. Windows で,コマンドプロンプトを実行.
  2. コマンドプロンプトで,次のコマンドを実行し,すべての Linux サブシステムをシャットダウンしておく.
    wsl --shutdown
    
  3. グラフィックス・カードの種類が分からないときは,確認しておく.

    タスクマネージャーの「パフォーマンス」タブや、hwinfo (URL: https://www.hwinfo.com/) などを使って調べることができる.

  4. NVIDIA ドライバの利用条件などは,次のページで,利用者で確認すること.

    https://docs.nvidia.com/cuda/wsl-user-guide/index.html

  5. NVIDIA ドライバは,次のWeb ページからダウンロード

    NVIDIA ドライバのダウンロードページ】 https://www.nvidia.co.jp/Download/index.aspx?lang=jp

    ダウンロードページでは、通常「Game Ready ドライバ」と「Studio ドライバ」が選択できます。CUDA を利用した開発や計算が主目的の場合、「Studio ドライバ」の方が安定性が高い場合があります。ご自身の用途に合わせて選択してください。

  6. ダウンロードしたファイルを実行して,画面の指示に従いインストールする

PyTorch のセットアップ (WSL Ubuntu)

WSL Ubuntu の起動

Windows のコマンドプロンプトまたは PowerShell を開き、以下のコマンドで WSL Ubuntu を起動します。

# デフォルトのディストリビューションを起動する場合
wsl

# ディストリビューション名を指定して起動する場合 (事前に `wsl -l` で確認)
# 例: wsl -d Ubuntu-22.04
wsl -d <ディストリビューション名>

以降の手順は、この起動した Ubuntu ターミナル上で実行します。

必要なパッケージのインストール (apt)

PyTorch のインストールに必要な Python 関連パッケージを apt でインストールします。

sudo apt -y update
sudo apt -y install python3-dev python3-pip python3-setuptools python3-venv

Python パッケージの管理には、プロジェクトごとに独立した環境を作成できる **仮想環境** (例: `venv`) の利用を強く推奨します。これにより、システム全体の Python 環境を汚さず、パッケージ間のバージョン競合を防ぐことができます。以下に仮想環境の作成例を示します。(以降の `pip install` は仮想環境内で行うことを推奨します)

# プロジェクト用ディレクトリを作成し移動 (例: pytorch_project)
mkdir ~/pytorch_project
cd ~/pytorch_project

# 仮想環境を作成
python3 -m venv .venv

# 仮想環境を有効化
source .venv/bin/activate
# (プロンプトの先頭に (.venv) が表示されます)

# pip を最新版にアップグレード (推奨)
pip install --upgrade pip

# (仮想環境を抜けるには deactivate コマンドを実行します)

PyTorch のインストール (pip)

  1. パソコンの Web ブラウザで,PyTorch の Web ページを開く

    https://pytorch.org/

  2. Get Started ページでインストールコマンドを生成する

    次のように選択すると,その下に,実行すべき `pip` コマンドが表示されます。

    • PyTorch Build: Stable (安定版) を選ぶ
    • Your OS: Linux を選ぶ
    • Package: pip を選ぶ
    • Language: Python を選ぶ
    • CUDA:

      GPU を使わない場合は「None」または「CPU」を選びます。 GPU を使う場合には、適切な CUDA バージョンを選択します。 システムにインストールされているNVIDIAドライバと互換性のあるCUDAバージョンを選択します。通常は、利用可能な最新の安定版を選択しますが、特定のライブラリ要件がある場合はそれに合わせます。よくわからない場合は、推奨されているバージョン(通常はデフォルトで表示されます)を選択すると良いでしょう。(本記事執筆時点では CUDA 11.8 や 12.1 などが選択肢になります)

    「Run this Command」のところに表示されるコマンドを確認します。

  3. 「Run this Command」のところに表示されたコマンドを実行

    仮想環境を使用している場合は `sudo` は不要です。

    # 例 (CUDA 11.8 の場合、表示されたコマンドをコピー&ペースト)
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
    

動作確認 (バージョン確認, GPU認識確認)

  1. Python でPyTorch のバージョン確認

    バージョン番号が表示されればインストールは成功しています。表示されるバージョンは実行タイミングにより異なります。

    python3 -c "import torch; print( torch.__version__ )"
    
  2. PyTorch で GPU が使用できるかの確認

    CUDA 版をインストールした場合、次の Python コマンドを実行して `True` が表示されれば、GPU が認識されています。

    python3 -c "import torch; print(torch.cuda.is_available())"
    
  3. python3 で PyTorch の簡単な動作確認

    https://pytorch.org/get-started/locally/ に記載の Python プログラムを動かしてみる。テンソルが表示されれば成功です。

    # Python対話モード (python3) またはファイルに保存して実行
    import torch
    x = torch.rand(5, 3)
    print(x)
    

TensorFlow 2.11 のセットアップ (WSL Ubuntu)

WSL Ubuntu を起動します。(起動方法は PyTorch のセクション を参照)

NVIDIA CUDA ツールキット 11.8 のインストール

TensorFlow 2.11 の GPU サポートに必要な NVIDIA CUDA ツールキット 11.8 をインストールします。

注意: 本記事では TensorFlow 2.11 に合わせて CUDA 11.8 をインストールします。TensorFlow のバージョンによっては、要求される CUDA のバージョンが異なります(例: TensorFlow 2.12以降ではCUDA 11.8以降、TensorFlow 2.16ではCUDA 12.2など)。インストールする TensorFlow のバージョンに対応した CUDA ツールキットを選択してください。最新の互換性情報は TensorFlow および NVIDIA の公式ドキュメントで確認してください。

  1. NVIDIA CUDA パッケージリポジトリの準備

    NVIDIA の公式手順に従い、リポジトリキーとリポジトリ情報をシステムに追加します。

    NVIDIA CUDA パッケージレポジトリの URL: https://developer.nvidia.com/cuda-downloads (ここで Linux -> x86_64 -> Ubuntu -> 22.04 -> deb (network) を選択すると最新の手順が表示されます)

    以下は、本記事執筆時点 (Ubuntu 22.04 / CUDA 11.8) での手順例です。必ず上記公式サイトで最新の手順を確認してください。 `apt-key` は非推奨のため `gpg` を使う方法を記載します。

    # リポジトリのピン設定ファイルをダウンロード
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
    sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
    
    # GPGキーをダウンロードして適切な場所に配置
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
    sudo mv 3bf863cc.pub /usr/share/keyrings/nvidia-cuda-archive-keyring.gpg
    
    # リポジトリを追加 (署名キーを指定)
    echo "deb [signed-by=/usr/share/keyrings/nvidia-cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" | sudo tee /etc/apt/sources.list.d/cuda.list
    
    # パッケージリストを更新
    sudo apt-get update
    
  2. CUDA ツールキット 11.8 のインストール

    次のコマンドを実行して CUDA ツールキット 11.8 をインストールします。

    sudo apt-get -y install cuda-toolkit-11-8
    # もしくは単に cuda-11-8 でもインストールされる場合があります
    # sudo apt-get -y install cuda-11-8
    
  3. NVIDIA CUDA ツールキットへのパス設定

    インストールした CUDA ツールキットのコマンドやライブラリを利用できるように、環境変数を設定します。`.bashrc` に追記することで、シェル起動時に自動的に設定されます。

    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
    
    # 設定を即時反映させる(新しいターミナルを開くか、以下のコマンドを実行)
    source ${HOME}/.bashrc
    
  4. インストール確認

    CUDA コンパイラ `nvcc` のバージョンを確認します。

    nvcc --version
    # または cat /usr/local/cuda-11.8/version.json
    

NVIDIA cuDNN のインストール

TensorFlow の GPU アクセラレーションに必要な NVIDIA cuDNN ライブラリをインストールします。CUDA 11.x に対応する cuDNN 8 をインストールします。

cuDNN のインストール方法は複数あります(Debian パッケージ、Tar ファイル)。ここでは apt を使った Debian パッケージでのインストール方法を示します。TensorFlow のドキュメントで推奨される cuDNN バージョンを確認してください。

古いバージョンの Ubuntu (18.04, 20.04) や特定の cuDNN バージョンが必要な場合は、NVIDIA Machine Learning Repository (https://developer.download.nvidia.com/compute/machine-learning/repos/) の利用が必要になる場合があります。

  1. cuDNN パッケージの確認 (オプション)

    インストール可能な cuDNN パッケージを確認します。

    sudo apt-get update
    apt-cache search libcudnn8
    
  2. cuDNN パッケージのインストール

    CUDA 11.x 向けの cuDNN 8 (ランタイムライブラリと開発用ヘッダファイル) をインストールします。

    sudo apt-get install libcudnn8 libcudnn8-dev
    
  3. インストールされたパッケージの確認 (オプション)
    dpkg -l | grep cudnn
    

Python 関連パッケージの準備

TensorFlow のインストールに必要な Python 環境を準備します。

  1. 必要なシステムパッケージのインストール (apt)

    Python 開発ツール、pip、および仮想環境ツールをインストールします。(PyTorch のセクションで実施済みの場合は不要)

    sudo apt -y update
    sudo apt -y install python3-dev python3-pip python3-venv
    
  2. 仮想環境の作成と有効化 (推奨)

    TensorFlow 用の仮想環境を作成し、有効化します。これにより、他の Python プロジェクトとの依存関係の衝突を防ぎます。

    # プロジェクト用のディレクトリを作成し移動 (例: tf_project)
    mkdir ~/tf_project
    cd ~/tf_project
    
    # 仮想環境を作成
    python3 -m venv .venv
    
    # 仮想環境を有効化
    source .venv/bin/activate
    # (プロンプトの先頭に (.venv) が表示されます)
    
    # pip を最新版にアップグレード (推奨)
    pip install --upgrade pip
    
  3. 使用する Python のバージョンの確認 (オプション)
    python3 --version
    

以前の手順にあった、特定の apt パッケージや pip パッケージのアンインストール操作は、クリーンな環境や仮想環境を使用する場合は通常不要です。依存関係の問題が発生した場合に、個別に検討してください。

TensorFlow 2.11 等のインストール (pip)

仮想環境内で TensorFlow 2.11 および関連ライブラリを pip を使ってインストールします。

  1. 必要な Python ライブラリのインストール (apt)

    NumPy や Matplotlib など、apt でインストール可能な基本的なライブラリをインストールします。OpenCV は必要に応じてインストールしてください。

    sudo apt -y update
    sudo apt -y install python3-numpy python3-pil python3-pydot python3-matplotlib
    # 必要に応じて OpenCV 関連もインストール
    # sudo apt -y install libopencv-dev python3-opencv
    
  2. TensorFlow 2.11 と関連パッケージのインストール (pip)

    仮想環境が有効化されていることを確認し、以下のコマンドを実行します (`sudo` は不要です)。

    pip install -U tensorflow==2.11.* numpy pillow pydot matplotlib opencv-python
    pip install -U tf-models-official==2.11.* tf_slim tensorflow_datasets tensorflow-hub keras==2.11.* keras-tuner keras-visualizer
    pip install git+https://github.com/tensorflow/docs
    pip install git+https://github.com/tensorflow/examples.git
    # keras-contrib はメンテナンスが停止しており、TF2.x との互換性問題があるため推奨されません。
    # pip install git+https://www.github.com/keras-team/keras-contrib.git # ← 非推奨
    

    エラーメッセージが出ていないことを確認してください。

動作確認 (バージョン確認, GPU認識確認)

  1. TensorFlow のバージョン確認

    次のコマンドを実行し、インストールされた TensorFlow のバージョンを確認します。

    python3 -c "import tensorflow as tf; print( tf.__version__ )"
    

    2.11系のバージョンが表示されれば OK です。

  2. GPU が認識できてるかの確認

    TensorFlow が GPU を認識できているか確認します。

    python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
    # または以前のコマンド
    # python3 -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
    

    出力に GPU デバイスの情報 (例: `PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')`) が含まれていれば、GPU が認識されています。空のリスト `[]` が返る場合は認識されていません。

    GPU が認識されない場合は、以下の点を確認してください。

    • Windows 側で NVIDIA ドライバが正しくインストールされているか (Windows のコマンドプロンプトで `nvidia-smi` を実行)。
    • WSL Ubuntu 側で CUDA Toolkit と cuDNN が正しくインストールされ、パスが通っているか (Ubuntu ターミナルで `nvcc --version` を実行)。
    • インストールした TensorFlow のバージョンと、CUDA/cuDNN のバージョンの互換性があるか (TensorFlow 公式ドキュメントを確認)。
    • WSL を再起動してみる (`wsl --shutdown` を Windows 側で実行後、再度 WSL を起動)。
    • NVIDIA の WSL User Guide (https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract) も参照してください。

TensorFlow のプログラム例

簡単な Python プログラムを実行して TensorFlow の基本的な動作を確認します。 https://github.com/tensorflow/tensorflow にも多くのサンプルがあります。

Python プログラムの実行方法

これらの Python プログラムを実行するには、以下のいずれかの方法があります。

  1. ファイルとして保存して実行:
    • 下記のコードをテキストエディタ (例: `nano`, `vim`, または Windows 側の VS Code など) で `hello.py` や `add.py` のようなファイル名で保存します。
    • WSL Ubuntu ターミナルで `python3 hello.py` のように実行します。(仮想環境が有効なことを確認してください)
  2. Python 対話モードで実行:
    • ターミナルで `python3` と入力し、Python 対話モードを開始します。(仮想環境が有効なことを確認してください)
    • 表示された `>>>` プロンプトに対して、コードを一行ずつ(または複数行まとめて)入力し、Enter キーを押します。

* Python プログラムを動かすために, WSL 2Ubuntu では「python3」コマンドを使います。(仮想環境が有効な場合は、単に `python` でも良い場合があります) あるいは, PyCharmなどの IDE に統合されたPython コンソールも便利です。