新しいPCを買ったので最新の環境で構築してみました。
3年ほど前にも書いていますが、細かい部分が変わっていたりリンク切れ等があったので改めて書いています。
追記:TF2.12の構築は以下から
Python3.11 + TF2.12 + GPUの環境を構築した(Windows11 + WSL + VSCode)
1. Pythonのインストール
公式より入れたいバージョンをダウンロードし、インストールします。
https://www.python.org/downloads/
今回は3.10と3.7を入れてみました。
バージョン管理はwindowsなら標準ではいってくる py(Pythonランチャー)と venv で行います。
コマンドプロンプトから py --list-paths
で入ってるPythonを確認できます。
C:\Users\poco>py --list-paths
Installed Pythons found by py Launcher for Windows
-3.10-64 C:\Users\poco\AppData\Local\Programs\Python\Python310\python.exe *
-3.7-64 C:\Users\poco\AppData\Local\Programs\Python\Python37\python.exe
アスタリスクがついてるほうが優先されるバージョンです。
2. Python仮想環境の作成
仮想環境を作成し、バージョン毎の環境を分けます。
仮想環境を置くディレクトリはどこでも大丈夫です。(この記事ではホームディレクトリに作成します)
コマンドプロンプトから作成します。
# venv用のディレクトリを作成(例はホームディレクトリ)
> cd
> mkdir venv
> cd venv
# v3.10 で仮想環境を作成する例
# CPU版とGPU版の環境を作成しています。
> py -3.10 -m venv py310-cpu
> py -3.10 -m venv py310-gpu
> dir /b
py310-cpu
py310-gpu
3. VSCodeのインストール
公式よりダウンロードし、インストールします。
https://code.visualstudio.com/
インストールしたら左のメニューの拡張機能から Python を追加しておきます。
3-1. 作業ディレクトリ
適当なディレクトリを作業ディレクトリとして用意します。
また、hello.py を用意しておきます。
(例: C:/sample_app/
)
print("hello world")
次に、VSCode上でこのフォルダを開きます。
ファイル → フォルダーを開く → C:/sample_app/
3-2. VSCodeとvenvの紐づけ
VSCode上で ファイル → ユーザー設定 → 設定
を選択し、検索欄で python.venvPath
を入れて ~/venv
を設定します。
(~/venv
は先ほど作成したvenvのフォルダを指定します)
設定したらVSCodeを再起動して、VSCodeから hello.py を開きます。
右下から venv で作成したインタープリターが見えていれば紐づけは成功です。
ただ、このままだと実行権限が足りず、以下のエラーが出てます。
PS C:\Users\poco\Documents> & C:/Users/poco/venv/py310-gpu/Scripts/Activate.ps1
& : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\poco\venv\py310-gpu\Scripts\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:3
+ & C:/Users/poco/venv/py310-gpu/Scripts/Activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Power Shell を管理者権限で開き、Set-ExecutionPolicy RemoteSigned
を実行します。
PS C:\Windows\system32> Set-ExecutionPolicy RemoteSigned
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): Y
これで VSCode から 実行 → デバッグなしで実行
で実行ができると思います。
4. GPU環境の構築(Tensorflow)
バージョンですが、2022/8 現在最新の Tensorflow 2.9.1 を対象にします。
一応公式のGPU環境の要件は以下です。
https://www.tensorflow.org/install/gpu?hl=ja
ただ、更新があまりされていないような?今回は確認できた最新バージョンの導入例を書きます。
改めて環境は以下です。
・windows11
・Python 3.10.6
・NVIDIA GeForce RTX 3060
4-1. ドライバの更新
グラボのドライバを最新にしておきます。
https://www.nvidia.co.jp/Download/index.aspx?lang=jp
更新後、要再起動です。
4-2. CUDA のインストール
CUDA をインストールします。
DLページ:https://developer.nvidia.com/cuda-toolkit-archive
ここはバージョンが重要で、Tensorflow と合わないversionを入れると動きません。
一応以下に対応表があります。(が、TF2.6.0 で止まっていますね…)
https://www.tensorflow.org/install/source?hl=ja#tested_build_configurations
一応最新の 11.7.1 (cuda_11.7.1_516.94_windows.exe) を入れてみた所、無事に動きました。
4-3. cuDNN のインストール
cuDNN をダウンロードします。(無料ですが、要登録)
DLページ:https://developer.nvidia.com/rdp/cudnn-download
バージョンはCUDAと揃える必要があります。
今回入れたのは最新の Download cuDNN v8.5.0 (August 8th, 2022), for CUDA 11.x
です。
cuDNN は zip ファイルで、解凍した後に CUDA フォルダに入れる必要があります。
CUDAフォルダは以下に作成されていました。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\
解凍した中身をこのフォルダに入れて上書きします。
4-4. Zlib のインストール
cuDNN には Zlib が必要なようで、これをダウンロードします。
以下の公式ドキュメントの ZLIB DLL
のリンクを 名前を付けて保存
でダウンロードします。
https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#prerequisites-windows
zip ファイルなので解凍して、zlib123dllx64/dll_x64/zlibwapi.dll
のdllファイルをCUDAのbin配下にコピーします。
(環境変数が通ってる場所ならどこでも大丈夫です)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin\zlibwapi.dll
4-5. Tensorflow GPU のインストール
CUDAを入れる前にインストールしても大丈夫です。
VSCode上でやる場合は Ctrl+@
でプロンプトを出し、そこから pip でインストールできます。
(py310-gpu) PS C:\sample_app> pip install tensorflow-gpu
CPU版を入れる場合は以下です。(インタープリターを切り替えています)
(py310-cpu) PS C:\sample_app> pip install tensorflow-cpu
コマンドプロンプトでやる場合は以下です。
> cd ~/venv/py310-gpu/Scripts
> activate
(py310-gpu) > pip install tensorflow-gpu
(py310-gpu) > deactivate
> cd ../../py310-cpu/Scripts
> activate
(py310-cpu) > pip install tensorflow-cpu
(py310-cpu) > deactivate
GPUの確認
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
で確認できます。
(py310-gpu) > python
>>> from tensorflow.python.client import device_lib
>>> device_lib.list_local_devices()
(略)
[name: "/device:CPU:0"
device_type: "CPU"
(略)
, name: "/device:GPU:0"
device_type: "GPU"
(略)
]
GPU が見えていれば認識しています。
おわりに
これでインタープリターを切り替えるだけで CPU と GPU の環境を簡単に切り替える環境ができました。
とりあえず失敗覚悟で最新のバージョンを入れてみましたがうまくいって良かったです。