はじめに:GPU付きPCを買ったのに、すぐ使えない問題
「ちょっと良いGPUを積んだパソコンを買えば、すぐに機械学習が速くなる」——私もそう思っていました。
ところが実際に触ってみると、GPUはあるのに PyTorch が CPU しか見てくれなかったり、CUDA が入っているのか分からなくなったり、Windows と Ubuntu と VS Code の関係がこんがらがったりと、想像以上につまずきます。昨日まで動いていたコードが、理由も分からず急に動かなくなることもありました。
この記事では、Windows11 + VS Code + WSL(Ubuntu) + PyTorch + 新しめの NVIDIA GPU(例:RTX 5070 Ti) という環境で、GPUを使った機械学習が実際に動くところまでを、私自身がハマったポイント込みで整理します。同じところで悩む人が一人でも減れば嬉しいです。
この記事の想定読者
- 想定レベル: プログラミング初学者〜初心者
- お悩み: 「環境構築の記事は『わかっている人向け』ばかりで、根本的な仕組みがわからない」
- 解決したいこと: Windows 11でWSL2を使い、PyTorchから最新GPU(RTX 50シリーズなど)を確実に認識させる
- 前提知識: 不要です。アプリ間の「つながり」から丁寧に図解します。
全体像:まずは構造を理解する
最初に、全体の関係を一言でまとめます。
GPUは Windows 側が管理し、Ubuntu(WSL) はそれを借りて使う
Windows 11 では NVIDIA ドライバが GPU を直接管理しており、WSL 上の Ubuntu はそれを経由して GPU を利用します。VS Code はあくまで作業用のエディタで、どの OS 側に接続しているかによって、見えている Python やライブラリが変わります。
この構造を理解していないと、Ubuntu に CUDA を入れようとして環境を壊したり、Windows 側のドライバ不足に気づかず延々と悩んだりしがちです。ここを最初に押さえておくことが、遠回りをしない最大のコツです。
この5層構造をイメージ図にするとこうなります

ステップ1:Windows側の準備(最重要)
NVIDIA ドライバを最新にする
まず確認すべきは Windows 側の NVIDIA ドライバ です。
- GeForce Experience から最新版を入れる
- RTX 50xx 系など新しめの GPU は特に最新版必須
ここが古いと、WSL から GPU が一切見えません。
確認ポイント
Windows の PowerShell で以下を実行します。
nvidia-smi
GPU名とドライババージョンが表示されれば OK です。
ここでエラーが出る場合、WSL以前の問題です。
ステップ2:WSL2 と Ubuntu の準備
WSL2 を使う(WSL1 は不可)
Windows 11 では基本的に WSL2 が使われますが、念のため確認します。Windows の PowerShell で以下を実行します。
wsl –list –verbose
Ubuntu の VERSION が 2 になっていれば OK。
Ubuntuそのものが入っていないとエラーになります。
その場合は以下のコードを実行して、ubuntuをインストールしましょう。なお、このコードでは安定性が高く、長期サポート(LTS)の Ubuntu 22.04 がインストールされます
wsl –install -d Ubuntu-22.04
Ubuntu を最新状態にする
Ubuntu に入ったら、まず更新します。
sudo apt update
sudo apt upgrade -y
ステップ3:CUDA を入れない(重要)
ステップ3:Ubuntu側には「ドライバ」を入れない(超重要!) ここが今回いちばん強調したいポイントです。 初心者がやりがちなのが、「GPUが動かない=UbuntuにもNVIDIAのドライバを入れなきゃ!」と思って、Linux用のドライバをインストールして環境を壊してしまうこと。
WSL2では、Windows側に入れたドライバがそのままUbuntuにも「透けて」見えています。 「Ubuntu側にはNVIDIA ドライバも CUDA Toolkit(nvcc など)も入れない。CUDAも、PyTorchが自分で持っているものを使うから手動インストールは不要」。これがWSL2での鉄則です。
ステップ4:Python 仮想環境を作る
環境を壊さないために、必ず仮想環境を使います。
以下のコードをUbuntuで実行します。Ubuntuにリモート接続したvscodeのターミナルで実行しても構いません。
python3 -m venv venv
source venv/bin/activate
sudo apt install -y python3-pip python3-venv
以降、プロンプトに (venv) が付いていることを確認します。
ステップ5:PyTorch(CUDA対応版)を入れる
ここもハマりやすいポイントです。
インストールの考え方
- CUDA のバージョンは 自分で決めない
- PyTorch が用意している CUDA 版を使う
以下のコードをUbuntuで実行します。
例:CUDA 12.1 対応版
pip install torch torchvision torchaudio \
–index-url https://download.pytorch.org/whl/cu121
RTX 50xx 系では、公式が案内している最新の CUDA 対応版(cu121 以上)が無難です。上記は記事執筆時点のコードですが、必ず PyTorch公式サイト で最新の Run Install Command を確認してください
ステップ6:GPU が見えているか確認
Python を起動して、以下を実行します。
import torch
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
- True が出る
- GPU 名(例:RTX 5070 Ti)が表示される
これで GPU が使える状態 です 🎉
VS Code との連携でハマりやすい点
VS Code 自体は Windows でも Ubuntu でも起動できますが、どちら側で起動しているかによって、使われる Python 環境が変わります。おすすめは、Ubuntu のターミナルから code . と入力して起動する方法です。
この方法で起動すると、VS Code が WSL に正しく接続された状態になり、仮想環境やインストールしたライブラリのズレが起きにくくなります。画面左下に “WSL: Ubuntu” と表示されているかを確認する習慣をつけると安心です。
Jupyter を使う場合も同様で、コードを書いている場所と、実際に実行している Python が一致しているかが非常に重要です。カーネル選択を意識せずに進めると、「動かない理由が分からない」状態に簡単に陥ります。
実体験:今回やらかした失敗談(かなり重要)
ここからは、今回の作業で実際に何度も混乱したポイントです。
「あるある」ですが、知らないと本当に時間を溶かします。
① VS Code が Windows 側で起動していた
一番最初にハマったのがこれでした。
- Ubuntu で作業しているつもり
- でも実は Windows 側の VS Code が起動していた
この状態だと、
- Python が Windows のものになる
- 仮想環境が見えない
- GPU が使えない(当然)
という、意味不明な挙動になります。
回避策
- Ubuntu のターミナルで code . から起動する
- VS Code 左下に “WSL: Ubuntu” と表示されているか必ず確認

これでVscodeのUbuntu接続漏れトラブルは防げます。
② Jupyter のカーネルが Windows 側の Python だった
VS Code 上で Jupyter を使う場合、
- vscodeのターミナルは Ubuntu
- でも カーネルは Windows Python
という地獄の状態が普通に起こります。
このときの症状は、
- torch は入っているはずなのに import error
- torch.cuda.is_available() が False
など、「説明がつかない」挙動です。
回避策
- 仮想環境に ipykernel を入れる
- カーネル選択で (venv) が付いたものを選ぶ
- おかしいと思ったら、まずカーネル名を見る(赤丸が使用中のカーネル)

③ torch を別の仮想環境に入れていた
これもやりました。
- venv を作ったつもり
- でも実際に pip install torch したのは別の環境
結果として、
- Python では torch が見えない
- GPU が使えない
- 何を直せばいいのか分からない
という状態になります。
回避策
- which python で今の Python を確認
- pip -V で pip がどの環境を指しているか確認
- 不安なら仮想環境を作り直す(これが一番早い)
④その他よくあるトラブル集
torch.cuda.is_available() が False
- Windows の NVIDIA ドライバが古い
- CPU 版 PyTorch を入れている
nvidia-smi が Ubuntu で動かない
- WSL2 では正常(動かない場合もある)
- Windows 側で動いていれば問題なし
昨日まで動いていたのに壊れた
- pip install で依存関係が壊れた可能性
- 仮想環境を作り直すのが最短ルート
まとめ:GPU 機械学習の現実
GPU を買えば終わり、ではなく
- Windows
- WSL
- Ubuntu
- Python
- PyTorch
という 5層構造 を意識する必要があります。
一度仕組みが分かれば、次からはかなり楽になります。
この記事が「GPU買ったのに動かない…」という最初の壁を越える助けになれば幸いです。


コメント