概要
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 ごと再起動する
そうしないと、Cython
や swig
使用時に unable to find vcvarsall.bat
に苦しめられる可能性があります。
参考: How to deal with the pain of “unable to find vcvarsall.bat”
VSCode
exeファイルをダウンロードして実行。
Git
上記サイトから exe ファイルをダウンロードして実行。
- 参考サイト
pyenv-win
公式 Repository に記載されている以下の手順に従う。
上記リンク先に記載されている手順を、以下にも書いておきます。
Open your powershell
and exec the following command.
> 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.
> [System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
> [System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
> [System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
> [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.
> pyenv --version
pyenv 3.1.1
ただし、PCによっては PowerShellでこのシステムではスクリプトの実行が無効になっている
といったエラーが発生することがある。
その場合は以下の記事に従って、
以下のコマンドをどちらか実行する。
# powershell を起動し直す度に実行する必要あり
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
# 試してないが、おそらく1回実行したらそれきりでよさそう。。。
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Python
> 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
> 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.
> New-Item requirements.txt -type file
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.
# 注意) `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.
> 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 のバージョンを確認した。
> 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
のインストールは完了。
念のため、powershell
を再起動して、toolkitのインストール結果を確認。
> 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
> 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 ではそこまではわからないのだろうか。。