6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GeForce Laptop GPUでPyTorchが動くようにするまで(Windows11編)

Last updated at Posted at 2023-11-26

この前買ったノートパソコンにGPUが付いていたので、せっかくだからこのGPUでPyTorchを動かしてみました。

今回はその時のセットアップの手順をまとめます。

(Windows11上で動かす前提です。WSL2の方はそのうち。)

環境

  • ASUS Vivobook 16X
  • NVIDIA GeForce RTX 4060 Laptop GPU
  • Windows 11 Home

必要なもの一覧

  • NVIDIA Driver
  • CUDA
  • cuDNN
  • Python
  • PyTorch

NVIDIA Driverのインストール

内蔵GPUだったせいかスタート>すべてのアプリの一覧の中にNVIDIA Contorol Panelというものがあって、既にNVIDIA Driverが入っているみたいです。

スクリーンショット 2023-11-25 214756.png

バージョンは528.96だそうです。

一応公式サイトで最新バージョンか確認してみます。
https://www.nvidia.co.jp/Download/index.aspx?lang=jp

スクリーンショット 2023-11-25 220111.png

スクリーンショット 2023-11-25 220124.png

最新版は546.01みたいです。更新しましょう。

NVIDIA Driverの更新はGeForce Experienceというアプリを使うのが主流のようですが、アカウント登録が必要だったり面倒なので、公式サイトから直接インストーラをダウンロードします。

後の工程で結局アカウント登録が必要になるので、ここで登録してしまって良いと思います。

さっきのページから落としてきたインストーラを実行します。

スクリーンショット 2023-11-25 222051.png

スクリーンショット 2023-11-25 222528.png

特に特別な操作はなく完了します。

再度NVIDIA Contorol Panelを開いて確認します。

スクリーンショット 2023-11-25 222553.png

546.01になりました。

一応再起動をしてNVIDIA Driverの更新は完了です。

CUDAのインストール

もう一度NVIDIAの公式サイトへ行ってCUDA Toolkitのインストーラを配布しているページを開きます。
https://developer.nvidia.com/cuda-downloads

スクリーンショット 2023-11-25 224509.png

インストーラを実行するとさっきと似たような画面が出てくるので、似たような感じで操作すれば完了します。

スクリーンショット 2023-11-25 224614.png

エラーが出ました。

スクリーンショット 2023-11-25 232515.png

Nsight Computeというやつで失敗しているようです。

調べてみるとNsight ComputeはVisual StudioでCUDAを使うときに必要なもののようで、今回は不要そうです。

インストーラオプションのカスタムからNsight Computeのチェックを外してもう一度やってみます。

スクリーンショット 2023-11-26 094245.png

スクリーンショット 2023-11-26 095044.png

できました。

スクリーンショット 2023-11-26 095549.png

システム環境変数にもPathが通っています。

スクリーンショット 2023-11-26 100142.png

PowerShellからもバージョンが確認できました。

> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Fri_Nov__3_17:51:05_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.3, V12.3.103
Build cuda_12.3.r12.3/compiler.33492891_0

念のためもう一度再起動してCUDAのインストールは完了です。

cuDNN

cuDNNのページへ行き、インストーラをダウンロードしてきます。
https://developer.nvidia.com/cudnn

スクリーンショット 2023-11-26 102411.png

アカウント登録を求められました。

スクリーンショット 2023-11-26 102428.png

登録しないと無理そうなので登録します。

そのあとダウンロードページを開けるようになるので、自分の環境に合ったパッケージを選びます。

スクリーンショット 2023-11-26 103256.png

Zipがダウンロードされるので展開します。
展開するとLICENSE、include、lib、binというファイルやディレクトリがあるので、これを適当な場所へ移動します。
今回はC:\Program Files\NVIDIA GPU Computing Toolkit\cuDNN\v12.3のディレクトリを作ってここへ移動しました。

次にPathを通してあげます。
システム環境変数の「Path」の編集からさっき移動したディレクトリのうち、binまでのパスを追加してあげます。

スクリーンショット 2023-11-26 111419.png

(今回追加したのは3つ目で、上2つはCUDAのインストールの時に勝手に追加してもらったものです。)

一応Pathが通っていることをPowerShellで確認。

> where cudnn64_8.dll
C:\Program Files\NVIDIA GPU Computing Toolkit\cuDNN\v12.3\bin\cudnn64_8.dll

大丈夫そうですね。もう一度再起動してcuDNNのインストールは完了です。

Pythonのインストール

今回はpyenvを使います。pyenvはPythonのバージョンを簡単に切り替えられて便利です。

pyenvはターミナルの動作が重くなって使いたくないという人は、バージョンを切り替えるたびにPythonを再インストールすれば良いと思います。

pyenv-winのGitHubページを参考にインストールします。
https://github.com/pyenv-win/pyenv-win

# インターネットからダウンロードしてきた署名あり実行ファイルに対する実行権限を現在のユーザに与えます
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# pyenv-win のダウンロードとインストール
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

PowerShellを再度立ち上げて、pyenvのバージョンを確認してインストールが完了していることが確認できました。
Path周りは勝手にやってくれているみたいです。

> pyenv --version
pyenv 3.1.1

インストール可能なPythonバージョンを見てみます。

> pyenv install -l
2.4-win32
2.4.1-win32
2.4.2-win32
2.4.3c1-win32
(中略)
3.12.0-arm
3.12.0-win32
3.12.0
3.13.0a1-win32
3.13.0a1-arm
3.13.0a1

最新の3.12.0をインストールしたいところですが、PyTorchのサイトを確認すると執筆時の時点でPyTorchがサポートしているのは3.11までのようですので、3.11.6をインストールしてデフォルトに設定します。
スクリーンショット 2023-11-26 175630.png

# Python3.11.6をインストール
> pyenv install 3.11.6
:: [Info] ::  Mirror: https://www.python.org/ftp/python
:: [Downloading] ::  3.11.6 ...
:: [Downloading] ::  From https://www.python.org/ftp/python/3.11.6/python-3.11.6-amd64.exe
:: [Downloading] ::  To   C:\Users\-\.pyenv\pyenv-win\install_cache\python-3.11.6-amd64.exe
:: [Installing] ::  3.11.6 ...
:: [Info] :: completed! 3.11.6
# 3.11.6をデフォルトに設定
> pyenv global 3.11.6
# Pythonバージョンの確認
> python -V
Python 3.11.6

適当な作業ディレクトリを作り、そこに仮想環境を構築することにします。

> mkdir sandbox
> cd sandbox
# このディレクトリのPythonバージョンを3.11.6に指定
> pyenv local 3.11.6
# 仮想環境を「.env」の名前で作成
> python -m venv .env
# 仮想環境のアクティベート
> .\.env\Scripts\activate
# pipのアップグレード
(.env) > python -m pip install -U pip

これでPythonの下準備は完了です。

PyTorchのインストール

PyTorchの公式サイトを参考に、インストールコマンドを調べます。

スクリーンショット 2023-11-26 175918.png

CUDA12.3が選択できないようなので12.1でやってみます。また、pip3'の部分はpip`へ変更しました。

(.env) > pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

インストールが終わったらpythonコマンドでPythonを立ち上げて、PyTorchとGPUが使えることが確認します。

import torch
# 初回だったからかここで5分ぐらいかかりました。
torch.cuda.is_available()
# -> True

# torch.cuda.is_available()はあまり信用していないので、実際にテンソルをGPUへ送って確認します。
torch.tensor([0.1, 0.2], device=torch.device('cuda:0'))
# -> tensor([0.1000, 0.2000], device='cuda:0')

大丈夫そうですね。

サンプルコードでテストラン

こちらのサンプルコードを拝借して、GPUを使うことでちゃんと速くなっているのか確認します。
https://imagingsolution.net/deep-learning/pytorch/pytorch_mnist_sample_program/

デバイス 実行時間
CPU 9分35秒
GPU 1分18秒

とても速い。

GPUを使った時のタスクマネージャーの様子。「3D」のところの稼働率が上がっていてGPUが使われている感じがあります。
スクリーンショット 2023-11-26 182115.png

結論

ノートパソコン内蔵のGPUでもちゃんと機械学習に使えました。
ただ、冷却能力はたかが知れているので燃やさないように気を付けましょう。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?