Windows上のLinux開発環境構築ガイド:WSL 2とUbuntuのインストール・設定・運用、およびNVIDIA GPUを用いた深層学習環境(PyTorch・TensorFlow)の構築
【概要】
WSL 2(Windows Subsystem for Linux 2)は、Windows上でLinuxカーネルを実行するための仕組みであり、軽量な仮想マシン技術を利用してLinux環境を提供する。ハードウェア仮想化支援機能を利用するため、PCによってはBIOS/UEFI設定での有効化が前提となる場合がある(詳細はトラブルシューティングを参照)。WSL 2を利用するには、wsl --installコマンドを実行する方法があり、このコマンドは必要なWindows機能の有効化とLinuxディストリビューション(以下、ディストリビューション。本稿ではUbuntuを例とする)のインストールをまとめて行う。この方法が利用できない場合は、Windowsの機能を個別に有効化したうえでディストリビューションをインストールする。インストール後、bashコマンドでLinuxシェル(Bash)を起動し、Linuxコマンドを実行できる。また、wslコマンドを使用してWSL自体の管理を行う。運用時には、.wslconfig設定ファイルを用いることで、メモリ使用量、スワップ領域、CPUコア数などを調整できる。WSL 2上にインストールしたUbuntuに開発ツールを導入することで、コンパイラの動作確認やプログラムのテストが可能である。Windows 11ではWSLg機能により、LinuxのGUIアプリケーションも追加設定なしで利用できる。さらに、NVIDIA GPUを搭載したPCでは、Windows側にNVIDIAドライバをインストールすることで、WSL 2上のUbuntu 24.04環境において深層学習フレームワークであるPyTorchおよびTensorFlowをGPU対応でセットアップできる。本稿では、TensorFlowのインストールにおいてCUDA/cuDNNライブラリを自動的にセットアップするtensorflow[and-cuda]パッケージの利用を推奨する。手動でのCUDA/cuDNNインストール手順もオプションとして記載する。
主なwslコマンド:
- wsl --install: 必要なWindows機能の有効化とディストリビューション(既定ではUbuntu)のインストールを一括実行
- wsl --list --online: 利用可能なディストリビューションの一覧
- wsl --update: WSL本体(カーネル等)を最新状態に更新
- wsl --install -d Ubuntu-24.04: Ubuntu 24.04のインストール
【目次】
- 第1章 WSL 2の有効化
- 第2章 Ubuntu(ディストリビューション)のインストール
- 第3章 基本的な使い方:bashとwslコマンド
- 第4章 WSL 2の設定と.wslconfigファイル
- 第5章 Ubuntuの初期設定
- 第6章 開発環境のセットアップ例(C/C++/Python)
- 第7章 NVIDIA GPUを用いた深層学習環境の前準備(Windows / WSL)
- 第8章 PyTorch(最新版)のセットアップ(WSL Ubuntu)
- 第9章 TensorFlow(最新版)のセットアップ(WSL Ubuntu)
- 第10章 TensorFlowの簡単なプログラム例
- 第11章 (オプション)CUDA / cuDNNの手動インストール
- 第12章 ネットワーク設定(ポートフォワーディング・ファイアウォール)
- 第13章 WSLgによるGUIアプリの利用
- 第14章 トラブルシューティング
【関連する外部ページ】
本稿の深層学習環境のセットアップ手順(NVIDIAドライバ、PyTorch、TensorFlow、CUDA/cuDNN)は、主に以下の公式ドキュメントを基に構成されている。ソフトウェア類の利用条件は各自で確認すること。
- NVIDIA CUDA on WSL User Guide: https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract
- TensorFlow install guide: https://www.tensorflow.org/install/pip
- PyTorch Get Started: https://pytorch.org/get-started/locally/
【サイト内の関連情報】
- Windows の基本操作・コマンド操作・設定と、アプリ・開発環境・ローカル AI の導入
- Linux基本コマンドとその活用法:別ページで説明
第1章 WSL 2の有効化
このセクションでは、WSL 2を利用するために必要なWindows機能を有効化する。現在のWindowsではwsl --installコマンドが必要な機能の有効化からディストリビューションのインストールまでを自動で行う。この自動化された方法でエラーが発生する場合や、機能を個別に制御したい場合は、後述の「必要なWindows機能の有効化(コマンド操作)」を参照のこと。
前提:Windows Updateの実行
以下のコマンドを実行してWindows Updateを開き、更新プログラムを確認・適用する。
powershell -command "Start-Process ms-settings:windowsupdate"
更新後、再起動が要求された場合はWindowsを再起動する。
wsl --installによる一括セットアップ
管理者権限のコマンドプロンプト(またはPowerShell)でwsl --installを実行する。このコマンドは、WSLに必要なWindows機能(Linux用WindowsサブシステムおよびVirtual Machine Platform)の有効化、WSLカーネルのインストール、および既定のディストリビューション(Ubuntu)のインストールをまとめて実行する。実行後、Windowsの再起動を求められた場合は再起動する。
wsl --install
この方法でセットアップが完了する場合は、本セクションの以降の手動操作は不要であり、「Ubuntuの初期設定」へ進んでよい。特定のディストリビューションを指定してインストールする手順は次のセクションで説明する。
管理者権限のコマンドプロンプトの起動
以降のコマンド操作は、管理者権限のコマンドプロンプトで実行する。
管理者権限でコマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
必要なWindows機能の有効化(コマンド操作)
wsl --installが利用できない場合や、機能を個別に有効化したい場合は、以下のコマンドを実行してWSL 2に必要なWindows機能を有効化する。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Windows Proエディションの場合は、追加で以下も実行する。
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart
上記Hyper-Vに加え、必要に応じて以下のハイパーバイザープラットフォーム機能も有効化する。
dism.exe /online /enable-feature /featurename:HypervisorPlatform /all /norestart
有効化可能な機能名の一覧は、powershell Get-WindowsOptionalFeature -Onlineで確認できる。
再起動
機能の有効化を完了するため、Windowsを再起動する。
shutdown /r /t 0
GUIでの有効化手順(コマンド操作の代替方法)
- 「コントロールパネル」を開く
- 「プログラム」を選択する
- 「プログラムと機能」を選択する
- 画面左側の「Windowsの機能の有効化または無効化」を選択する
- 「Windowsの機能の有効化または無効化」で、以下の項目にチェックを入れ、「OK」をクリックする
- Linux用Windowsサブシステム(または Windows Subsystem for Linux)
- 仮想マシンプラットフォーム
- (Windows Proエディションの場合)Hyper-V
第2章 Ubuntu(ディストリビューション)のインストール
ここでは、WSL 2上にUbuntuをインストールする手順を説明する。wsl --installを引数なしで実行した場合は既定でUbuntuがインストールされるが、以下では特定のバージョンを明示的に指定する手順を示す。特定のディストリビューションをインストールする場合は、Microsoft Storeを利用する方法もある。
- 管理者権限のコマンドプロンプトで、利用可能なディストリビューションを確認する
wsl --list --online
- WSL本体(カーネル等)を最新の状態に更新する
wsl --update - Ubuntu 24.04をインストールする。他のバージョンやディストリビューションをインストールする場合は、
-dオプションに続けて一覧表示された名前を指定するwsl --install -d Ubuntu-24.04
インストール完了後、初回起動時にUbuntuで使用するユーザー名とパスワードの設定を求められる。このパスワードは、
sudoコマンドで管理者権限が必要な操作を行う際に使用する
第3章 基本的な使い方:bashとwslコマンド
bashコマンドの使用(Linux環境の操作)
bashコマンドを実行すると、既定に設定されているディストリビューションのLinuxシェル(Bash)が起動し、Linuxコマンドを実行できる。通常、インストール時に設定したユーザー権限で起動する。exitコマンドでシェルを終了する。
bash
pwd
exit
bash -c "コマンド"の形式で、対話シェルを起動せずに単一のLinuxコマンドを実行することも可能である。
bash -c "pwd"
主要なLinuxコマンドについては、関連ページ「Linux基本コマンドとその活用法」を参照のこと。
wslコマンドの使用(WSLシステムの管理)
ディストリビューション管理
- インストール済みディストリビューションの一覧表示と状態確認:管理者権限のコマンドプロンプトで
wsl -l -vを実行する。「*」記号が既定のディストリビューションを示すwsl -l -v
- 既定のディストリビューションの設定:
bashコマンドや引数なしのwslコマンドで起動するディストリビューションを設定するwsl --set-default Ubuntu-24.04
WSL 2のシャットダウン
実行中のすべてのWSLインスタンスを停止する。.wslconfigの変更を反映させる際や、動作が不安定な場合に使用する。
wsl --shutdown
ディストリビューションのエクスポート(バックアップ)とインポート(復元)
ディストリビューションの状態をtarファイルにバックアップする。
wsl --export Ubuntu-24.04 ubuntu-backup.tar
バックアップファイルから新しいディストリビューションとして復元する。
wsl --import MyUbuntu C:\WSL\MyUbuntu ubuntu-backup.tar
コマンドの使い分け
bash:Linux環境内での操作やコマンド実行に使用するwsl:WSL自体の管理(ディストリビューションの管理、起動/停止、設定など)に使用する。ディストリビューションの管理操作(インストール、設定変更、登録解除など)は管理者権限のコマンドプロンプトから実行する
第4章 WSL 2の設定と.wslconfigファイル
WSL 2は仮想マシン上で動作するため、リソースを多く消費する開発作業では、メモリやCPUコア数の割り当てを調整できる。深層学習のような重い処理を行う場合にも、この設定が有用である。
設定ファイルは%UserProfile%\.wslconfig(例:C:\Users\ユーザー名\.wslconfig)に配置する。このファイルは既定では存在しないため、新規に作成する。
.wslconfig設定例
[wsl2]
memory=4GB
swap=2GB
processors=4
memory:WSL 2が使用できる最大メモリを指定する(既定値はWindowsの総メモリの50%)。上限を設定すると、WSL 2がホストのメモリを占有することを防げるswap:メモリ不足時に使用されるスワップファイルのサイズを指定する(既定値はWindowsのメモリサイズの25%をGB単位に切り上げた値)。swap=0でスワップを無効化できるprocessors:WSL 2が使用できる論理プロセッサ数を指定する(既定値はWindowsの論理プロセッサ数と同じ)。ホストの論理プロセッサ数が上限となる
値の単位を省略するとバイト単位として扱われる。GBやMBなどの単位を明示すること。
設定方法
- テキストエディタ(メモ帳など)で
.wslconfigファイルを%UserProfile%ディレクトリに作成または開く。コマンドプロンプトで以下を実行するcd %UserProfile% notepad .wslconfig
- メモ帳で必要な設定を記述し、ファイルを上書き保存する
- 設定を反映させるために、WSL 2を再起動する。コマンドプロンプトで以下を実行する
wsl --shutdown
次にWSLを起動した際に設定が反映される
wsl --shutdownを実行してWSLを再起動しないと変更は反映されない。すべてのインスタンスが停止するまで数秒かかる。停止状態はwsl --list --runningで確認できる。
第5章 Ubuntuの初期設定
Ubuntuのインストール後、以下の初期設定を行う。コマンドは、UbuntuのLinuxシェル(Bash)内で実行する(bashコマンドでシェルを起動)。管理者権限が必要なコマンドにはsudoを付加する。
aptパッケージリポジトリのミラーサーバー変更(任意)
ダウンロード速度を向上させるため、パッケージのダウンロード元を日本のミラーサーバーに変更する。変更しない場合はこの手順を省略する。
/etc/apt/sources.list.d/ubuntu.sourcesに移動している。従来の/etc/apt/sources.listは空または存在しない場合がある。
まず、使用されている設定ファイルを確認する。
# 設定ファイルの存在確認
ls -la /etc/apt/sources.list /etc/apt/sources.list.d/ubuntu.sources 2>/dev/null
/etc/apt/sources.list.d/ubuntu.sourcesが存在する場合(Ubuntu 24.04のデフォルト)は、以下のコマンドでミラーサーバーを変更する。
# バックアップを作成
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
# ミラーサーバーを日本に変更
sudo sed -i 's|http://archive.ubuntu.com|http://jp.archive.ubuntu.com|g' /etc/apt/sources.list.d/ubuntu.sources
sudo sed -i 's|http://security.ubuntu.com|http://jp.archive.ubuntu.com|g' /etc/apt/sources.list.d/ubuntu.sources
従来形式の/etc/apt/sources.listを使用している場合は、以下のコマンドを実行する。
# バックアップを作成
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# ミラーサーバーを日本に変更
sudo sed -i 's|//archive.ubuntu.com|//jp.archive.ubuntu.com|g' /etc/apt/sources.list
sudo sed -i 's|//security.ubuntu.com|//jp.archive.ubuntu.com|g' /etc/apt/sources.list
パッケージリストの更新とアップグレード
システムを最新の状態に更新する。
sudo apt update
sudo apt -yV upgrade
# オプション:ディストリビューション全体のアップグレード(カーネル等も更新される場合がある)
sudo apt -yV dist-upgrade
第6章 開発環境のセットアップ例(C/C++/Python)
ここでは例として、C/C++およびPythonの基本的な開発環境をUbuntu上にインストールし、動作確認を行う。コマンドはUbuntuのLinuxシェル(Bash)内で実行する。
必要なパッケージのインストール
C/C++コンパイラ(gcc、g++)、makeツール、Python3開発ヘッダ、pipなどをインストールする。
sudo apt update
sudo apt -y install build-essential python3-dev python3-pip wget ca-certificates
Cコンパイラ(gcc)の動作確認
テキストエディタ(例:nano)を使用して、Cプログラムを作成する。
nano hello.c
エディタが開いたら、以下の内容を入力または貼り付ける。
#include<stdio.h>
int main() {
printf("Hello, World!\n");
printf("sizeof(size_t)=%zu\n", sizeof(size_t));
return 0;
}
Ctrl+Oを押し、Enterキーでファイルを保存する。その後、Ctrl+Xでnanoを終了する。
作成したプログラムをコンパイルして実行する。
gcc -o hello hello.c
./hello
以下のような出力が表示されれば成功である。
Hello, World! sizeof(size_t)=8
Python 3の動作確認
Python 3のバージョンを確認し、コードを実行する。
python3 --version
python3 -c 'print("Hello, Python!")'
以下のような出力が表示されれば成功である。
Python 3.x.y Hello, Python!
第7章 NVIDIA GPUを用いた深層学習環境の前準備(Windows / WSL)
ここからは、NVIDIA GPUを搭載したPCにおいて、WSL 2上のUbuntu 24.04環境でNVIDIA GPUを活用した深層学習フレームワーク(PyTorch、TensorFlow)をセットアップする手順を説明する。まず本セクションでは、その前準備として、Windowsの要件確認、WSL 2 Ubuntuのカーネルバージョン確認、Windows側へのNVIDIAドライバのインストールを行う。NVIDIA公式のWSL User Guide(https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract)を参考に前準備を行う。
- Windows側での前準備(WSL2有効化、NVIDIAドライバインストール)
- WSL Ubuntu 24.04環境の準備(カーネル確認)
- PyTorchのセットアップ(仮想環境利用を推奨)
- TensorFlowのセットアップ(仮想環境利用を推奨、自動依存関係解決)
- 各フレームワークの動作確認(GPU認識確認を含む)
- (オプション)CUDA / cuDNNの手動インストール手順
なお、WSL 2自体の有効化およびUbuntu 24.04のインストールについては、本稿の「WSL 2の有効化」「Ubuntu(ディストリビューション)のインストール」のセクションで説明済みである。WSL2が未インストールの場合は、管理者権限のPowerShellまたはコマンドプロンプトでwsl --installを実行することで、WSL2とデフォルトのUbuntuがインストールされる。特定のディストリビューションをインストールする場合は、Microsoft Storeを利用するか、wsl --install -d Ubuntu-24.04のようにディストリビューションを指定する。
tensorflow[and-cuda]パッケージの利用を推奨する。手動でのCUDA/cuDNNインストール手順もオプションとして記載するが、通常は自動インストールで十分である。
Windowsの要件確認
WSL 2でNVIDIA GPUを利用するには、以下のWindowsバージョンが必要である。
- Windows 11またはWindows 10 バージョン21H2以降
- 最新のWindows Updateを適用することを推奨する。
詳細は公式ドキュメント(https://docs.nvidia.com/cuda/wsl-user-guide/index.html#getting-started)を参照すること。
WSL 2 Ubuntuのカーネルバージョン確認
WSL2でGPUを利用するには、カーネルバージョン5.10.43.3以上が必要である。現在のWSL2では通常この要件を満たしている。
- Windowsで、コマンドプロンプトまたはPowerShellを実行する。
- インストール済みのUbuntu 24.04のカーネルバージョンを確認する。
- まず、
wsl -l -vでディストリビューション名とWSLバージョンを確認する(WSLバージョンが2であることを確認)。wsl -l -v - 次に、
wsl -d <ディストリビューション名> uname -rを実行して、Ubuntuのカーネルバージョンを表示させる。wsl -d Ubuntu-24.04 uname -r
- まず、
- 表示されたバージョンが5.10.43.3以上であることを確認する。現在のWSL2カーネルは通常5.15.x以上であり、この要件を満たしている。
カーネルバージョンが古い場合は、Windowsコマンドプロンプトを管理者として開きwsl --updateを実行し、その後wsl --shutdownでWSLを再起動する。それでも更新されない場合は、Windows Updateの設定で「他のMicrosoft製品の更新プログラムを受け取る」がオンになっているか確認すること。
NVIDIAドライバのインストール(Windows側)
WSL2環境では、NVIDIAドライバはWindows側にのみインストールする。WSL(Ubuntu)側にはインストールしない。
- グラフィックスカードの種類を確認しておく(タスクマネージャーの「パフォーマンス」タブなど)。
- ドライバインストールの前に、WSLをシャットダウンする。WindowsのコマンドプロンプトまたはPowerShellで以下を実行する。
wsl --shutdown - NVIDIAドライバの利用条件は、次のページで利用者自身が確認すること。
- NVIDIA公式サイトから、最新のWindows用ドライバをダウンロードする。
【NVIDIAドライバのダウンロードページ】 https://www.nvidia.co.jp/Download/index.aspx?lang=jp
ダウンロードページでは、「Game Readyドライバ」と「Studioドライバ」が選択できる。CUDAを利用した開発や計算が主目的の場合、安定性に重点を置いた「Studioドライバ」が適している場合がある。「Game Readyドライバ」は最新ゲームへの最適化が優先される。用途に合わせて選択すること。
- ダウンロードしたファイルを実行して、画面の指示に従いインストールする。
- インストール完了後、Windowsの再起動が必要な場合がある。
第8章 PyTorch(最新版)のセットアップ(WSL Ubuntu)
WSL Ubuntuの起動
WindowsのコマンドプロンプトまたはPowerShellを開き、以下のコマンドでWSL Ubuntu 24.04を起動する。
# デフォルトがUbuntu 24.04の場合
wsl
# ディストリビューション名を指定する場合
wsl -d Ubuntu-24.04
以降の手順は、この起動したUbuntuターミナル上で実行する。
Python環境の準備
PyTorchのインストールに必要なPython関連パッケージをaptでインストールする。また、パッケージ管理のために仮想環境(venv)を利用することを推奨する。
基本パッケージのインストール
sudo apt update sudo apt -y install python3-dev python3-pip python3-setuptools python3-venv仮想環境の作成と有効化(推奨)
プロジェクトごとに独立したPython環境を作成する。
# プロジェクト用ディレクトリを作成し移動(例:pytorch_project) mkdir ~/pytorch_project cd ~/pytorch_project # 仮想環境を作成(例:.venvという名前で) python3 -m venv .venv # 仮想環境を有効化(プロンプトの先頭に(.venv)が表示される) source .venv/bin/activate # pipを最新版にアップグレード(推奨) pip install --upgrade pip # (仮想環境を抜けるにはdeactivateコマンドを実行する)
PyTorchのインストール(pip)
仮想環境が有効化されていることを確認し、PyTorchをインストールする。
- Webブラウザで、PyTorchの公式Webページを開き、「Get Started」セクションに進む。
- 自身の環境に合わせてオプションを選択し、表示される
pip installコマンドを確認する。- PyTorch Build: Stable(安定版)を選択する。
- Your OS: Linuxを選択する。
- Package: Pipを選択する。
- Language: Pythonを選択する。
- Compute Platform: CUDA 13.0または利用可能な最新のCUDAバージョンを選択する。GPUを使用しない場合はCPUを選択する。
「Run this Command」に表示されるコマンドを確認する。
- 表示されたコマンドをコピーし、Ubuntuターミナルで実行する。仮想環境内では
sudoは不要である。# 例(CUDA 13.0の場合、公式サイトで確認したコマンドを実行) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130
動作確認(バージョン確認、GPU認識確認)
- PythonでPyTorchのバージョン確認を行う。
バージョン番号が表示されればインストールは成功である。
python3 -c "import torch; print( torch.__version__ )" - PyTorchでGPUが使用できるか確認する。
CUDA版をインストールした場合、次のコマンドを実行して
Trueが表示されれば、GPUが認識されている。python3 -c "import torch; print(torch.cuda.is_available())"
- PyTorchの簡単な動作確認を行う。
テンソルが表示されれば成功である。
# Python対話モード(python3)またはファイルに保存して実行 import torch x = torch.rand(5, 3) print(x)
第9章 TensorFlow(最新版)のセットアップ(WSL Ubuntu)
PyTorchと同様に、WSL Ubuntu 24.04ターミナルで作業を行う。
Python環境の準備
TensorFlow用にも仮想環境を作成することを推奨する。PyTorchと同じ仮想環境を使用することも可能だが、依存関係の衝突を避けるために別の環境を作成する方がよい場合がある。
基本パッケージのインストール(apt)
PyTorchのセクションで実施済みの場合は不要である。
sudo apt update sudo apt -y install python3-dev python3-pip python3-setuptools python3-venv仮想環境の作成と有効化(推奨)
PyTorchとは別の仮想環境を作成する場合の例を示す。
# プロジェクト用のディレクトリを作成し移動(例:tf_project) mkdir ~/tf_project cd ~/tf_project # 仮想環境を作成 python3 -m venv .venv # 仮想環境を有効化 source .venv/bin/activate # pipを最新版にアップグレード(推奨) pip install --upgrade pip
TensorFlowのインストール(自動依存関係解決)
現在のTensorFlowでは、pipでインストールする際に、CUDA およびcuDNNライブラリも同時にインストールできる。これにより、手動でのCUDA ToolkitやcuDNNのインストールが不要となる。
仮想環境が有効化されていることを確認し、以下のコマンドを実行する(sudoは不要)。
# TensorFlowとCUDA/cuDNN依存関係を自動でインストール
pip install tensorflow[and-cuda]
このコマンドは、NVIDIAドライバと互換性のあるCUDAおよびcuDNNライブラリをTensorFlowパッケージと共にインストールする。
エラーメッセージが出ていないことを確認する。
動作確認(バージョン確認、GPU認識確認)
TensorFlowのバージョン確認
次のコマンドを実行し、インストールされたTensorFlowのバージョンを確認する。
python3 -c "import tensorflow as tf; print( tf.__version__ )"バージョン番号が表示されれば成功である。
GPUが認識できているかの確認
TensorFlowがGPUを認識できているか確認する。
python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"出力にGPUデバイスの情報(例:
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')])が含まれていれば、GPUが認識されている。空のリスト[]が返る場合は認識されていない。
GPUが認識されない場合は、以下の点を確認すること。
- Windows側で最新のNVIDIAドライバが正しくインストールされているか(Windowsのコマンドプロンプトで
nvidia-smiを実行)。 - WSL Ubuntuターミナルで
nvidia-smiコマンドが実行でき、GPU情報が表示されるか。WSL2の場合、/usr/lib/wsl/lib/nvidia-smiにあるため、フルパスで実行するか、PATHに追加する必要がある場合がある。 - TensorFlowをインストールした仮想環境が有効になっているか。
pip install tensorflow[and-cuda]がエラーなく完了したか。問題があった場合は、仮想環境を再作成して再試行するか、手動でのCUDA/cuDNNインストールを検討する。- WSLを再起動してみる(
wsl --shutdownをWindows側で実行後、再度WSLを起動)。 - NVIDIAのWSL User Guide(https://docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract)も参照すること。
- Windows側で最新のNVIDIAドライバが正しくインストールされているか(Windowsのコマンドプロンプトで
第10章 TensorFlowの簡単なプログラム例
簡単なPythonプログラムを実行してTensorFlowの基本的な動作を確認する。
Pythonプログラムの実行方法
これらのPythonプログラムを実行するには、以下のいずれかの方法がある。
- ファイルとして保存して実行:
- 下記のコードをテキストエディタ(例:
nano、vim)でhello.pyのようなファイル名で保存する。 - WSL Ubuntuターミナルで
python3 hello.pyのように実行する(仮想環境が有効なことを確認すること)。
- 下記のコードをテキストエディタ(例:
- Python対話モードで実行:
- ターミナルで
python3と入力し、Python対話モードを開始する(仮想環境が有効なことを確認すること)。 - 表示された
>>>プロンプトに対して、コードを入力し、Enterキーを押す。
- ターミナルで
- 次のPythonプログラムを実行してみる。
結果として「Hello, TensorFlow」を含むテンソル情報が表示されるので確認する。
import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') tf.print(hello)
- 次のPythonプログラムを実行する。
結果として「42」を含むテンソル情報が表示されるので確認する。
import tensorflow as tf a = tf.constant(10) b = tf.constant(32) tf.print( a + b )
- 次のPythonプログラムを実行する(行列演算の例)。
結果として「12.0」を含むテンソル情報が表示されるので確認する。
import tensorflow as tf matrix1 = tf.constant([[3., 3.]]) matrix2 = tf.constant([[2.],[2.]]) tf.print( tf.matmul(matrix1, matrix2) )
第11章 (オプション)CUDA / cuDNNの手動インストール
pip install tensorflow[and-cuda]で問題が発生する場合や、特定のバージョンのCUDA Toolkit / cuDNNをシステム全体にインストールしたい場合は、以下の手順で手動インストールを行う。これはUbuntu 24.04 LTSでの手順である。
注意: この手順を実行する前に、tensorflow[and-cuda]でインストールされた可能性のあるCUDA/cuDNN関連パッケージ(例:nvidia-cudnn-cu12、nvidia-cuda-nvrtc-cu12など)をpip uninstallで削除しておくことを推奨する。
CUDA Toolkitのインストール
NVIDIAの公式リポジトリから、Ubuntu 24.04向けのCUDA Toolkitをインストールする。
NVIDIAリポジトリとGPGキーの設定
NVIDIA CUDAダウンロードページ(https://developer.nvidia.com/cuda-downloads)でLinux > x86_64 > Ubuntu > 24.04 > deb(network)を選択し、表示される最新のコマンドを実行する。以下は一例である。必ず公式サイトで最新のコマンドを確認すること。
# ピン設定(ファイル名はバージョンにより変わる可能性あり) wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600 # リポジトリキーリングのインストール(ファイル名はバージョンにより変わる可能性あり) wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get updateCUDA Toolkitパッケージのインストール
インストールしたいCUDA Toolkitバージョンを指定してインストールする(例:
cuda-toolkit-12-5)。cuda-toolkitを指定すると利用可能な最新版がインストールされることが多い。sudo apt-get -y install cuda-toolkit-12-5 # または最新版をインストール # sudo apt-get -y install cuda-toolkit
cuDNNのインストール
CUDA Toolkitに対応するcuDNNをインストールする。Ubuntu 24.04 / CUDA 12.xの場合、libcudnn9パッケージなどが利用可能である。
sudo apt-get update
# ランタイムライブラリと開発用ヘッダをインストール
sudo apt-get install libcudnn9 libcudnn9-dev
インストールするcuDNNのバージョンは、使用するTensorFlowやPyTorchのバージョンとの互換性を確認すること。
環境変数の設定
手動でインストールしたCUDA Toolkitのパスを環境変数に設定する必要がある場合がある。.bashrcなどに追記する。
# 例:CUDA 12.5をインストールした場合
echo 'export PATH=/usr/local/cuda-12.5/bin:${PATH}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.5/lib64:${LD_LIBRARY_PATH}' >> ~/.bashrc
source ~/.bashrc
設定後、nvcc --versionでCUDA Toolkitのバージョンが表示されるか確認する。
nvcc --version
第12章 ネットワーク設定(ポートフォワーディング・ファイアウォール)
WSL 2内で起動したサーバー(例:Webサーバー)にWindows側や他のPCからアクセスするには、ネットワーク設定が必要になる場合がある。WSL 2の既定のネットワークモードはNAT(Network Address Translation)であり、この場合はポートフォワーディングとファイアウォールの設定が必要になることがある。
.wslconfigにnetworkingMode=mirroredを設定することで「ミラードモード」を利用できる。このモードではWindowsのネットワークインターフェースがLinux側に反映され、localhost(IPv4の127.0.0.1)でWindowsとWSL 2を相互に接続できるほか、LANからWSL 2への接続も容易になる。このモードではNATモードでのポートフォワーディング設定が不要になる場合が多い。
[wsl2]
networkingMode=mirrored
設定後はwsl --shutdownでWSLを再起動して反映する。
以下では、既定のNATモードを前提としたポートフォワーディングとファイアウォールの設定手順を説明する。
ポートフォワーディングとは、特定のポート(通信の窓口)への接続を別のアドレスに転送する仕組みである。NATモードのWSL 2は独自の仮想ネットワークを持つため、Windowsが受けた接続をWSL 2に転送する設定が必要となる。
ポートフォワーディングの設定
- WSL 2のIPアドレス確認:WSL 2のIPアドレスを確認する。コマンドプロンプトから次のコマンドで取得できる(大文字の
-Iを使用すること)wsl hostname -IUbuntuのLinuxシェル(Bash)内で確認する場合は、次のコマンドも利用できる
ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1
NATモードでは、WSL 2のIPアドレスはWSLの再起動などで変更される可能性がある。接続できなくなった場合は、再度IPアドレスを確認すること
- Windowsでポートフォワーディング設定:管理者権限のコマンドプロンプトで、Windowsのポートフォワーディングを設定する。以下の例では、Windowsの80番ポートへのアクセスを、手順1で確認したWSL 2のIPアドレスの80番ポートに転送する
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=<WSL2のIPアドレス><WSL2のIPアドレス>は、手順1で確認した実際のIPアドレスに置き換える。PowerShellで実行する場合は、次のようにコマンド置換でIPアドレスを指定することもできる。wsl hostname -Iの出力には複数のIPアドレスや末尾の空白が含まれることがあるため、整形してから指定する$wslIp = (wsl hostname -I).Trim().Split()[0] netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=$wslIp
設定を削除する場合は、以下のコマンドを実行する
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0
ファイアウォール設定
Windows Defenderファイアウォールが有効な場合、WSL 2への着信接続を許可するルールを追加する必要がある場合がある。NATモードで通常のWindowsファイアウォールルールを追加するには、管理者権限のPowerShellで以下のコマンドを実行する(例:80番ポートへのTCP接続を許可する場合)。
New-NetFirewallRule -DisplayName "WSL 2 Inbound Port 80" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80
-DisplayNameは識別用の名前、-LocalPortには許可するポート番号を指定する。
方法1:個別のポートに対してルールを追加する(例:80番ポート)
New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80
方法2:WSL向けの既定の着信動作を許可に変更する
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
Remove-NetFirewallRule -DisplayName "WSL 2 Inbound Port 80"
第13章 WSLgによるGUIアプリの利用
Windows 11ではWSLg(WSL GUI)機能が組み込まれており、追加設定なしでWSL 2上のLinux GUIアプリケーションを利用できる。
例えば、UbuntuにGUIテキストエディタgeditをインストールすると、Windowsのスタートメニューから直接起動したり、Ubuntuのターミナルからgeditコマンドを実行したりすることで、Windows上にgeditのウィンドウが表示される。
UbuntuのLinuxシェル(Bash)で以下を実行してgeditをインストールする。
sudo apt update
sudo apt install gedit -y
インストール後、ターミナルで以下を実行するとgeditが起動する。
gedit
WSLgの詳細については、公式リポジトリ(https://github.com/microsoft/wslg)を参照のこと。
第14章 トラブルシューティング
BIOS/UEFI設定の確認
WSL 2はハードウェア仮想化支援機能を利用する。PCによっては、この機能がBIOS/UEFI設定で無効になっている場合がある。WSL 2のインストールや起動に問題がある場合は、以下の設定が有効になっているか確認すること(名称はマザーボードメーカーにより異なる場合がある)。
- Intel VT-x / AMD-V(CPU仮想化支援):必須
- SLAT(Second Level Address Translation、仮想マシンのメモリ管理を効率化する技術。Intelでの実装名はEPT、AMDでの実装名はRVI):必須(近年のCPUでは通常サポートされている)
- Intel VT-d / AMD IOMMU(I/O仮想化支援、デバイスの仮想化を支援する技術):必須ではない
- SVM Mode(AMD CPUの場合、Secure Virtual Machineの略でAMD-Vと同義の場合が多い):必須
BIOS/UEFIメニューへのアクセス方法はPCによって異なるが、以下のコマンドを管理者権限のコマンドプロンプトで実行すると、再起動後にBIOS/UEFI設定画面に入れる場合がある。
shutdown /r /fw /t 0
コマンドの説明:/r(再起動)、/fw(ファームウェアUIへ移行)、/t 0(即時実行)
CPUの仮想化機能サポート状況確認(Windows)
Windows上でCPUが仮想化機能をサポートし、有効になっているかを確認するには、管理者権限のコマンドプロンプトで以下のPowerShellコマンドを実行する。
powershell -c "Get-CimInstance -ClassName Win32_Processor | Select-Object Name, VirtualizationFirmwareEnabled, SecondLevelAddressTranslationExtensions"
実行結果例:
確認ポイント:
VirtualizationFirmwareEnabled:Trueになっているか(BIOS/UEFIで有効化されているか)SecondLevelAddressTranslationExtensions:Trueになっているか(SLAT対応か)
WSLおよびディストリビューション関連の問題
- WSLのバージョン確認と状態確認:管理者権限のコマンドプロンプトで実行する
wsl --version wsl --status wsl -l -v - WSLの再起動:WSLの動作が不安定な場合に試す
wsl --shutdown wsl - WSL本体の更新:カーネル関連の問題が疑われる場合に実行する
wsl --update - 既定のディストリビューションの確認・変更:意図しないディストリビューションが起動する場合に確認・修正する
wsl -l -v wsl --set-default Ubuntu-24.04 - ディストリビューションの再インストール:特定のディストリビューションが破損したり、設定を初期化したい場合に実行する。この操作を行うと、対象ディストリビューション内のデータはすべて失われるため、必要なデータは事前にバックアップまたはエクスポートすること(
wsl --exportコマンド参照)wsl --shutdown wsl --unregister Ubuntu-24.04 wsl --install -d Ubuntu-24.04
bashコマンド関連の問題
bashコマンドが見つからない場合:WSLが正しくインストールされているか、システムの環境変数PathにC:\Windows\System32が含まれているか確認するwhere bash echo %PATH%- Git Bashなど他のbashとの競合:WSLのbashを明示的に実行したい場合は、フルパスで指定する
C:\Windows\System32\bash.exeGit Bashを起動する場合は、通常以下のパスになる
"C:\Program Files\Git\bin\bash.exe"