0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Windows / Pytorch] GPU付き windows10 で Pytorch 実行するまで (Docker, conda, WSL なしの縛りプレイでゼロから環境構築)

Posted at

概要

Docker, conda, WSL なしで Python + cuda + Pytorch の環境を構築しようという縛りプレイです。

個人的には、この現代において到底考えられない環境なのですが。

必要になったので已むをえません。どなたかのお役に立てることを祈りつつ記事化します。

環境

リソース / Package version
windowsOS 10
GPU GeForce RTX 3060
WSL 使わない
docker 使わない
anaconda / miniconda 使わない
Visual Studio 2017
Nvidia-driver 512.89
cuda 11.2
cuda-toolkit 11.2.2
cudnn 不要
pyenv-win 3.1.1
python 3.7.3
torch 2.0.1
Cython 3.0.2

手順

Visual Studio 2017

VisualStudio 2017 のインストール手順は以下に従う。

VisualStudio インストールにあたっての注意点

  • Python を install する前にこの install を実施する
  • Install 中に、ワークロードの選択画面がありますが、Python を選択する
  • Install が終わったら PC ごと再起動する

そうしないと、Cythonswig 使用時に unable to find vcvarsall.bat に苦しめられる可能性があります。

参考: How to deal with the pain of “unable to find vcvarsall.bat”

VSCode

vscode.png

exeファイルをダウンロードして実行。

Git

上記サイトから exe ファイルをダウンロードして実行。

  • 参考サイト

pyenv-win

公式 Repository に記載されている以下の手順に従う。

上記リンク先に記載されている手順を、以下にも書いておきます。

Open your powershell and exec the following command.

powershell
> git clone https://github.com/pyenv-win/pyenv-win.git "$HOME\.pyenv"
Cloning into 'C:\Users\USERNAME\.pyenv'...
remote: Enumerating objects: 3120, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (99/99), done.
remote: Total 3120 (delta 111), reused 155 (delta 92), pack-reused 2929
Receiving objects: 100% (3120/3120), 3.63 MiB | 12.50 MiB/s, done.
Resolving deltas: 100% (2009/2009), done.

Add four paths for pyenv by executing the following commands.

powershell
> [System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
powershell
> [System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
powershell
> [System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
powershell
> [System.Environment]::SetEnvironmentVariable('PATH', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('PATH', "User"),"User")

Restart powershell and check whether pyenv is installed successfully or not.

powershell
> pyenv --version
pyenv 3.1.1

ただし、PCによっては PowerShellでこのシステムではスクリプトの実行が無効になっている といったエラーが発生することがある。

その場合は以下の記事に従って、

以下のコマンドをどちらか実行する。

powershell
# powershell を起動し直す度に実行する必要あり
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

# 試してないが、おそらく1回実行したらそれきりでよさそう。。。
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Python

powershell
> pyenv install 3.7.3
:: [Info] ::  Mirror: https://www.python.org/ftp/python
:: [Downloading] ::  3.7.3 ...
:: [Downloading] ::  From https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe
:: [Downloading] ::  To   C:\Users\USERNAME\.pyenv\pyenv-win\install_cache\python-3.7.3-amd64.exe
:: [Installing] ::  3.7.3 ...
:: [Info] :: completed! 3.7.3

Create and enable venv

powershell
> pyenv global 3.7.3
> python -m venv .venv
> .\.venv\Scripts\activate
(.venv) >

pip modules

Maybe, it might be better to install wheel in advance.

Make requirements.txt like this.

powershell
> New-Item requirements.txt -type file 
requirements.txt
Cython==3.0.2
grad-cam==1.4.6
jupyter==1.0.0
lightgbm==4.0.0
matplotlib==3.7.3
numpy==1.24.4
opencv-python==4.8.0.76
openpyxl==3.1.2
pandas==2.0.3
Pillow==10.0.1
pytorch-lightning==2.0.6
scipy==1.10.1
scikit-learn==1.3.0
streamlit==1.22.0
torch==2.0.1
torchvision==0.15.2
tqdm==4.65.0

And run the following command.

powershell
# 注意) `pip install -r .\requirements.txt` だと opencv install に失敗した
> python3 -m pip install -r .\requirements.txt

# install し直すときは、以下のように `--no-cache-dir` をつける
# pip install -r .\requirements.txt --no-cache-dir

Collecting Cython==3.0.2
  Downloading Cython-3.0.2-cp38-cp38-win_amd64.whl (2.8 MB)
     |████████████████████████████████| 2.8 MB 3.3 MB/s
Installing collected packages: Cython
Successfully installed Cython-3.0.2

... ()

    Running setup.py install for progress ... done
    Running setup.py install for future ... done
Successfully installed MarkupSafe-2.1.3 Pillow-10.0.1 PySocks-1.7.1 ... ()

I was surprised that all modules were installed much more easily than I expected !

Check whether the packages are installed successfully or not.

powershell
> python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2, torch, scipy
>>> torch.__version__
1.12.1+cu113
>>>

cuda-toolkit

自分の場合 cuda-toolkit をインストールしたところ、 cuda のバージョンも書き換わった。
なので、既に cuda がインストールされていても、それとは異なる cuda-toolkit のバージョンをインストールしても良いと思われる(確証はないが。。。)

ただ、GPU、 Nvidia-driver に適合しない cuda-toolkit では恐らく動作しないと思われるので、 install すべき cuda-toolkit のバージョン確認は必須。

version 確認

Nvidia-driver と cuda (cuda-toolkit) のバージョン対応表については、以下の記事が詳しい。

公式サイトだと、以下の2つの表に記載されている。

自分の場合は、以下のようにして Nvidia-driver のバージョンを確認した。

powershell
> nvidia-smi
Tue Oct  3 15:46:50 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 512.89       Driver Version: 512.89       CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ... WDDM  | 00000000:01:00.0 Off |                  N/A |
# 以下略

これで Nvidia-driver の version 判明 - 512.89

次のサイトで、 installer をダウンロード。

後は、 installer を実行してしまえば、 installer に表示される説明文に従ってインストールを進められます。

この部分については、以下の記事が画面付きで手順を解説しているので、心配な人はそちらを参照。

(Windows版)PyTorchでGPUを使えるようにするまでを画像付きで詳細に解説

installer が以下のような画面表示になったら、cuda-toolkit のインストールは完了。

nvidia_fin.png

念のため、powershellを再起動して、toolkitのインストール結果を確認。

powershell
> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Sun_Feb_14_22:08:44_Pacific_Standard_Time_2021
Cuda compilation tools, release 11.2, V11.2.152
Build cuda_11.2.r11.2/compiler.29618528_0
powershell
> python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True
>>>

torch からも呼び出せてるのでOK。

cudnn

なくても動いた。

参考情報

Nvidia-driver バージョン確認

GPU に対応する Nvidia-driver のバージョンを知りたい時に、以下のサイトを使う。

cuda-toolkit のバージョン情報

Nvidia-driver に対応する cuda-toolkit のバージョンを知りたい時に、以下のサイトを見る。

全般

cuda はいつインストールされるのか

  • cuda-toolkit をインストールすると、 cuda もインストールされているように見える。
  • ChatGPT は Nvidia-driver インストール時に cuda がインストールされると言っていた。

矛盾している。。。 ChatGPT ではそこまではわからないのだろうか。。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?