python

【GPU構築】構成選別から動作確認までを8STEP完全解説【anaconda+python+tensorflow+cuda】

当サイトでは広告が表示される記事があります

AnacondaからPythonでGPUを動かす設定手順が分かる記事です。

あなたのPCのGPUドライバーバージョン確認から、必要なライブラリーの導入方法を書いています。

記事は大きく4段階

  • ステップ1:必要なライブラリのバージョンを決める
  • ステップ2~6:必要なライブラリの導入や設定
  • ステップ7:GPUの認識確認
  • ステップ8:PythonによるGPUの動作確認

以下の表を書いて、バージョンを決めていきましょう。

ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
 
せんわんこ
せんわんこ

この表が重要だよー

この手順であなたもGPUコンピューティングが可能になります。

私はIT専門学校の先生として、学校のLinuxやWindowsPCでGPUコンピューティングの設定をしています。この手順で学校のパソコン(Windows, Linux)でも設定し、動作しています。

今回の記事では、私物の「レノボのノートPC(GeForce GTX1650)Windows10」で行っています。

インストールするライブラリの確認方法についてもまとめています。ご自分の環境にあった環境構築に役立つと嬉しいです。

せんわんこ
せんわんこ

2023/02/20でも動いてるよー

追記:ドライバのインストールは2021/12/10、Anaconda内の動作確認は2022/08/08に行いました。ドライバのバージョンアップが自動でされていましたが、今も動いています。使用感は、「【お手軽AI-GPU】10万円ゲーミングノートPCの1年使用感【AI・ゲーム性能検証あり】Lenovo Legion 5 560i 15ITH6」をどーぞ!

長年授業でやってきたことをまとめて、 ITパスポートの無料Note(1度落ちちゃった方向け) 基本情報技術者対策のNoteを作ってます。興味あったらどーぞ(▼・ω・▼)

STEP1 GPUの環境を決める

こちらのサイトが大変参考になりました。

現在のGPUとドライバ調べ

GPUのNVIDIAドライバーのバージョンを確認します。

NVIDIAドライバーのバージョン確認

  1. デスクトップで右クリック>NVIDIAコンパネ
  2. ヘルプ>システム情報
GPUとドライバーを調べる

当時、GTX1650 ver.466.81 がインストールされていることが分かりました。

※スクショが当時じゃなくてごめんなさい。2022/08/08現在 ver.512.36になってますが問題なく動いてます。

ちなみにドライバーファイルを検索したいときは「NVIDIA公式サイト」で。OS再インストールとかLinuxにする時に使ってください。

ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
466.81
せんわんこ
せんわんこ

書き込んでねー

対応CUDAの洗い出し

ドライバーに対応しているCUDAライブラリを、いくつか候補で洗い出します。

対応しているCUDAの洗い出し

  1. CUDA公式サイト」へ
  2. 「Table 3. CUDA Toolkit and Corresponding Driver Versions」から、対応してる中で新しめなのを探す
  3. あとで対応してないと調べ直しなので、広めに挙げておく

CUDA公式サイト」の「Table 3. CUDA Toolkit and Corresponding Driver Versions」を見ます。

「ver.466.81」に対応したのだと以下。

CUDA 11.3.1 Update 1 >=465.19.01 >=465.89
CUDA 11.3.0 GA >=465.19.01 >=465.89
CUDA 11.2.2 Update 2 >=460.32.03 >=461.33
CUDA 11.2.1 Update 1 >=460.32.03 >=461.09
CUDA 11.2.0 GA >=460.27.03 >=460.82

個人的なコツ

  • 最新のCUDAバージョンと一つ前のCUDAバージョンを上げる
  • 今後のライブラリが最新CUDAに対応していないことがあるから

ということで、CUDA 11.2.0~11.3.1 あたりで考えていきます。

次の項目で、動作確認済み環境を確認して絞り込みを行います。

ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
466.8111.3.1 Up
11.3.0 GA
11.2.1 UP1
11.2.2 UP2
11.2.0 GA
せんわんこ
せんわんこ

これはあとで消すから
メモぐらいでー

動作確認済みの環境を確認

いよいよ必要なライブラリのバージョンを確定させます。

必要なライブラリのバージョンを確定

  1. tensorflowサイト」へ
  2. わりと下の「テスト済みのビルド構成」の「GPU」って表 へ
  3. CUDAのバージョンを決める
  4. windowsへのインストール構成」へ
  5. 「GPU」って表で、決めたCUDAに対応した構成を探す

手順1~3 CUDAのバージョン決め

tensorflowサイト」で対応しているCUDAのバージョンを絞ります。

わりと下の「テスト済みのビルド構成」の「GPU」って表を見ます。

私が調べた当時は、CUDA11.2までで、11.3がなかったです(現在は11.7まである)。

さっきの5つの候補の中から、CUDA11.2を探します。

CUDA 11.3.1 Update 1 >=465.19.01 >=465.89
CUDA 11.3.0 GA >=465.19.01 >=465.89
CUDA 11.2.2 Update 2 >=460.32.03 >=461.33
CUDA 11.2.1 Update 1 >=460.32.03 >=461.09
CUDA 11.2.0 GA >=460.27.03 >=460.82

「CUDA 11.2.2 Update 2 >=460.32.03 >=461.3」が、一番新しいので選びました。

個人的なコツ

  • バグがあるでしょうから、あるバージョンの最新を選ぶようにしています。
  • もし11.3.0系が対応していたら、11.3.1Update1を選んでいたでしょう。
ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
466.8111.2.2
せんわんこ
せんわんこ

これ重要ー

手順4~5 インストール構成の決定

windowsへのインストール環境」の「GPU」って表を見て、構成を決めます。

私の場合は、CUDA11.2だったので、以下が該当します。

バージョン Python バージョン コンパイラ ビルドツール cuDNN CUDA
tensorflow_gpu-2.6.0 3.6~3.9 MSVC 2019 Bazel 3.7.2 8.1 11.2

※MSVC2019とは、Microsoft Visual C++ 2019のことです。

ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
466.8111.2.22.6.03.6~3.920193.7.28.111.2
せんわんこ
せんわんこ

これでほとんど決まりー
これ見ながら設定するー

まとめ

以上より、インストールする構成が決まりました。

個人的なコツ

  • anacondaで仮想環境を作るので、Pythonのバージョンはあまり気にしなくてOK。
  • 基本的に最新を選びはします。体感として古いと困ることが多いからです。
  • コピペするソースのpythonバージョンが明らかな場合は揃えてもOKです。

Pythonは3.9にしました。

ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
466.8111.2.22.6.03.920193.7.28.111.2

以降からAnacondaのインストールまでは、ものすごく注意しながら進めてください。

せんわんこ
せんわんこ

いよいよ始まりますー

STEP2 VisualStudioのインストール for CUDAコンパイル

ものすごく注意しながら進めてください。

ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
466.8111.2.22.6.03.920193.7.28.111.2

CUDAをコンパイルするために、Visual Studio 2019をインストールします。

Community版ってのがprofessionalの使用制限無料版とのことです。

よって、MSVC 2019 Community版をインストールします。

MSVC 2019 Community版のインストール手順

  1. Visual Studioのサイト」へ
  2. 2019を選択する
  3. ダウンロードする
  4. インストールするときに
    • 「C++によるデスクトップ開発」にチェック入っているか確認
    • オプションに「MSVC v142 – VS 2019 C++ x64/x86 ビルドツール」にチェック入って入っているか確認
せんわんこ
せんわんこ

次からがどきどきー

STEP3 CUDAのインストール

ものすごく注意しながら進めてください。

CUDAをダウンロードして、インストールします。

CUDAのダウンロードとインストールする手順

  1. CUDA公式サイト」へ
  2. CUDAをダウンロード
  3. 私の場合はエラーが出たので対応
  4. PATHを設定し、PC再起動

手順1~2 CUDAのダウンロードとインストール

ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
466.8111.2.22.6.03.920193.7.28.111.2

CUDA公式サイト」でダウンロードします。

私はCUDA11.2が欲しいので、以下が該当しました。

CUDA Toolkit 11.2.2 (March 2021), Versioned Online Documentation
CUDA Toolkit 11.2.0 (Dec 2020), Versioned Online Documentation

11.2.0にしてみることにしました。新しい方が良い気もしましたが、何となくです。

せんわんこ
せんわんこ

なんか新しすぎるのが
不安定な気もするんだよねー

手順3 インストールできないとエラーが出た

インストールしようとしたが、続行できないと出ました。

you already have a newer version of the NVIDIA Frameview SDK installed.

調べてみると、いくつかアンインストールすれば良いとのこと。

3つアンインストールして、CUDAを再びインストール開始。成功しました。

CUDAインストール時のエラー対応の手順

  1. NVIDIA FrameView SDK のアンインストール
  2. NVIDIA GeForce Experience のアンインストール
  3. NVIDIA PhysX システムソフトウェア のアンインストール
せんわんこ
せんわんこ

びっくりするよねー

手順4 CUDAへのPATHを設定する

PATHについて。2通りの指定方法があります。

PATHを設定したらPCを再起動をします。

せんわんこ
せんわんこ

cortanaで「環境変数の編集」で
でてくるよー

STEP4 cuDNNのインストール

ものすごく注意しながら進めてください。

cuDNNを導入します。

cuDNNのインストール手順

  1. cuDNN公式サイト」へ
  2. ダウンロードにアカウントが必要なので作る
  3. ダウンロードとインストール
  4. cuDNNのPATHを設定・確認する
    • Windowsのシステム環境変数
      • 変数名「CUDNN_PATH」
      • 値 「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1」
    • コマンドプロンプトで
      • where cudnn64_8.dll

手順1~3 cuDNNのダウンロードとインストール

ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
466.8111.2.22.6.03.920193.7.28.111.2

cuDNN公式サイト」からダウンロードします。アカウントはてきとうに作ってください。

CUDA 11.2だと下記が候補になりました。

Download cuDNN v8.1.1 (Feburary 26th, 2021), for CUDA 11.0,11.1 and 11.2
Download cuDNN v8.1.1 (Feburary 26th, 2021), for CUDA 10.2
Download cuDNN v8.1.0 (January 26th, 2021), for CUDA 11.0,11.1 and 11.2

cuDNN 8.1.0にしてみることに。cuDNN Library for Windows (x86)

なんとなく古い方を選びました。

手順4 cuDNNのPATHを設定して確認する

システム環境変数に新規で設定します。

windows10ならcortanaに「環境変数を編集」と入力すれば、設定ウィンドウがでます。

以下を「システム環境変数」で「新規」で作ってください。

  • 変数名「CUDNN_PATH」
  • 値 「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1」

コマンドプロンプトで下記を入力して、パスが返ってくるかを確認します。

where cudnn64_8.dll

と打ち込むと

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin\cudnn64_8.dll

と返ってきます。

やっと、ドライバ絡みがおわりです。次でanacondaをインストールすれば、後は楽ちんです。

せんわんこ
せんわんこ

山は越えたねー

STEP5 Anacondaのインストール

ものすごく注意しながら進めてください。

Anacondaをインストールします。

私は、Pythonの実行環境としてAnacondaを用います。

Anacondaのインストール手順

  1. 公式サイト」でダウンロードしてインストール
  2. 仮想環境を作ってみる
  3. 仮想環境に入ってみる

手順1 ダウンロードとインストール

公式サイト」でダウンロードしてインストールします。

「For Windows Python 3.9 • 64-Bit Graphical Installer • 510 MB」をダウンロードしました。

個人情報入力がでましたが、「×」を押したら、DLできました。いいんかいw

advanced optionで、register anaconda3 as my default Python 3.9はチェックしてみました。

手順2 仮想環境を作る

Anaconda内に仮想環境を作ります。

ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
466.8111.2.22.6.03.920193.7.28.111.2
conda create --name env01 python=3.9

「env01」って名前の仮想環境で、pythonは3.9で作ってね、ってコマンドです。

参考記事」によくまとまっています。

手順3 仮想環境に入る

作成した仮想環境に入ります。

conda activate env01

これで失敗しても仮想環境を作り直せば良いだけになりましたー

せんわんこ
せんわんこ

これであとは気楽ー

その他のcondaコマンド(今はやらないでOK)

ちなみにの話。

入っている仮想環境から出たい時は

conda deactivate

現在ある仮想環境の一覧を出したいときは、

conda info -e

仮想環境を消したいときは、

conda remove -n 仮想環境名 --all

以下の作業は、anacondaに作った仮想環境内でのものなので、気軽にやり直しができます。

せんわんこ
せんわんこ

作った目的が分かりやすい
環境名がいいだろうねー

STEP6 tensorflow-gpuのインストール

失敗しても仮想環境を作り直せば良いのでお気軽に

anaconda内の仮想環境で、ライブラリの整備をします。

ドライバーversionCUDA導入するバージョンまとめ
tensorflow-gpupythonMSVCBazelCuDnnCUDA
466.8111.2.22.6.03.920193.7.28.111.2
pip install tensorflow-gpu==2.6.0

個人的なコツ

  • 「conda install」コマンドでも良いかもしれません。
  • しかし、今後のライブラリのインストールでは、「pip install」か「conda install」のどちらかに統一した方が良いです。
  • 体感ではcondaコマンドでインストールできないことが多かったので、pipですることが多いです。
せんわんこ
せんわんこ

ぼくはpipかなー

google colabも使ってるしー

STEP7 tensorflowでの、GPUの認識確認

失敗しても仮想環境を作り直せば良いのでお気軽に

GPUが認識されているか確認します。

GPUの新規確認 その1

pythonで実行して、GPUが認識されているか確認します。

pythonのコマンドモードでやるなら

python
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
quit()

で、終了できます。

test.pyってファイルに書いたなら、下記でもOKです。

python test.py

いっぱいメッセージでますけど、最後の方に下記があればOKです。

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 16432118225947035459
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 2251764532
locality {
  bus_id: 1
  links {
  }
}
せんわんこ
せんわんこ

どぉー?

GPUの新規確認 その2

これでも確認することもできます。

import tensorflow as tf
tf.test.is_gpu_available()
2022-08-08 20:16:14.255209: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1418] Created TensorFlow device (/device:GPU:0 with 2147 MB memory) -> physical GPU (device: 0, name: NVIDIA GeForce GTX 1650, pci bus id: 0000:01:00.0, compute capability: 7.5)
True
せんわんこ
せんわんこ

できたー?

STEP8 tensorflowとKerasで、GPUの動作確認をしてみる

失敗しても仮想環境を作り直せば良いのでお気軽に

いよいよ、pythonプログラムでGPUを動かしてみます。

MNISTって手書き数字のAIですね。

pythonでGPUを動かしてみる手順(手書き数字AI)

  1. Kerasのインストール
  2. MNISTのプログラムをコピペ
  3. Kerasの表記が変わったのでちょっと修正
  4. プログラムを走らせて、タスクマネージャーでGPU動作を確認

手順1 Kerasのインストール

pip install keras==2.6.0

kerasが2.9.0だと、下記のエラーがでるので、2.6.0にしました。

ImportError: cannot import name 'dtensor' from 'tensorflow.compat.v2.experimental' 
せんわんこ
せんわんこ

やっぱKerasが便利だねー

手順2 MNISTのプログラムをコピペ

下記の一番下の「test.py」を、ファイルにコピペって保存してください。

ただのMNISTのプログラムなので、他のでもOKです。

でも、エラーがでます。

ImportError: cannot import name 'RMSprop' from 'keras.optimizers'

これは、Kerasのライブラリの構造がかわったからです。2021年頃だったかなぁ。

せんわんこ
せんわんこ

作ってたプログラム
ぜーーんぶ動かないもんねー

手順3 プログラムを少し修正

下記のようにimport文を変えます。

「keras」を「tensorflow.keras」に変更します。

#import keras
#from keras.datasets import mnist
#from keras.models import Sequential
#from keras.layers import Dense, Dropout
#from keras.optimizers import RMSprop
import tensorflow.keras as keras
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.optimizers import RMSprop
せんわんこ
せんわんこ

これほんと迷惑だったよねー

手順4 プログラムを走らせて、タスクマネージャーでGPU動作を確認する

いよいよpythonでGPUを動かします。

pythonで実行してください。

python test.py

GPUのメッセージが見えたら動いています。

memory growth: True
2022-08-08 22:34:31.738749: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-08-08 22:34:32.243211: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1510] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 2153 MB memory:  -> device: 0, name: NVIDIA GeForce GTX 1650, pci bus id: 0000:01:00.0, compute capability: 7.5
2022-08-08 22:34:32.418582: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:185] None of the MLIR Optimization Passes are enabled (registered 2)
Epoch 1/20
469/469 [==============================] - 4s 8ms/step - loss: 0.2400 - accuracy: 0.9262 - val_loss: 0.1025 - val_accuracy: 0.9687

タスクマネージャで見てみましょう。

私は「Cuda」ってグラフに切り替えると、動き始めているのが見えました。

pythonプログラムでGPUを動かせているかを確認する

ELSA System Graphってソフトでも見れますよ。

せんわんこ
せんわんこ

全部自力で調べたから
感動したよー

その他のエラー

kerasとtensorflowをcondaとpipで別々にやってもエラーがでるらしいです。

anacondaの仮想環境内のことだったらいくらでもやり直しできます。

ディープなエラーが出たら、anacondaの仮想環境を「conda remove」で消して、もう一度キレイに設定作業を進めるのがスムーズだと思います。

ImportError: cannot import name 'RMSprop' from 'keras.optimizers'
せんわんこ
せんわんこ

その都度調べるしかないよねー
英語の掲示板とかも見てるよー

まとめ PytorchやPlaidMLも良い

お疲れさまでした!

Anaconda前のCUDAとCUDnnのバージョン決定とインストールがほんとどきどきですね。

Anacondaの中での作業は、いくらでもやり直しがききます。ライブラリも入れたり消したり気軽にできるし、仮想環境も作り直したりごっそり消したり気軽です。

私のGPUは「エントリークラス」でしょぼいですが、google colaboratoryのGPU(無償)に迫る速度です。

「30%ぐらいしか変わらないのかぁ」と最初は思ったんですが、120分のところが36分も短縮されますからね。AIの構造や学習パラメータを変えて試行錯誤するにはとっても大事です。

google colaboratoryのCPUとGPU、ノートPCのCPUとGPUの速度比較(手書き数字判別AI-MNIST)
GeForce GTX1650とgoogle colabの比較(文字識別AI-MNIST)

colabは連続使用時間・累積使用時間に制限がありますが、自分のPCであれば制限はありません。

せんわんこ
せんわんこ

ぼくが使い倒してた時期は、
1日2時間にまで制限されたねー

他にも、Pytorchでも動作確認はできて、GANもできました。

PytorchによるGAN(学習データは6名の女性)
せんわんこ
せんわんこ

GANは試行回数も処理時間もかかるから
ローカルじゃないと無理だねー

学校のPCは、GeForce以外のGPUなので、PlaidMLで動かしてます。PlaidMLは対応GPUが限られているので要確認です。

MACの方もPlaidMLで動かしてますね。

もし、私のノートPCの使用感が気になったら「【お手軽AI-GPU】10万円ゲーミングノートPCの1年使用感【AI・ゲーム性能検証あり】Lenovo Legion 5 560i 15ITH6」をどーぞ!

PythonとAIについて学ぶにはこの書籍がお薦めです。

せんわんこ
せんわんこ

じゃーねー

タイトルとURLをコピーしました