TensorFlow-GPUインスト苦戦記

CUDA

こちら2023年4月、windowsでの内容になります。

参考

TensorFlow GPUサポート

TensorFlowの最新版はGPUに対応しない

下準備

※ venvの仮想環境で、違うバージョンのpythonを使用するには、

あらかじめ

使いたいバージョンのpythonをインストールしておく必要があります。

バージョンが混在していても大丈夫です。バージョン指定で使用します。

公式から、Windows版Pythonのインストール

インストール最初の画面で「チェック」をいれて、

Pathを通すのをお忘れなく!

venv(仮想環境)で古いバージョンのpythonを使用

基本的にはTensorFlow GPUサポートを参考にしますが、

動作情報なども参考にして、python3.9を使用することにしました。

venvを使用すると、フォルダーの中だけで旧バージョンが使えます。

なにも最新のpythonをアンインストールしなくてもよいのです。

手順。

コマンドプロントや、パワーシェルを開きます。

venvで「py39env」というフォルダー(仮想環境)を作ります。

py -3.9 -m venv py39env

※ powershellを使って初めてvenvを有効化するときには、

1回限りの追加コマンドが必要です。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

次からはもうやらなくて大丈夫です。

作った仮想環境、py39envをアクティブ化するには、

.\py39env\Scripts\activate

とやりますよ。私は全然覚えられないので、メモ帳に貼り付けてます!

先頭が(py39env)となっています。

仮想環境に入っている合図です。

TensorFlowのインストールはまだやめとき

コマンド一つでインストールできちゃうけど

TensorFlowのインストール自体は、

pip install tensorflow

これだけなんです。

しかしワナが・・・

TensorFlowの最新版は、GPU対応していないのですが、

GPU設定をしないままインストールしてしまうと、

最新版がインストールされてしまいます。

そうすると自分がどこで間違えたかわからずにドツボにはまるんですね。

CUDAから決める!

CUDAてなんじゃやい?

CUDA はクダと読むそうです。(クーダと書いてあるものもある)

私はずっと「きゅーだ」だと思っていました。何年も。

CUDA 【Compute Unified Device Architecture】

IT用語辞典から引用

CUDAとは、コンピュータのグラフィックスプロセッサ(GPU)を利用して汎用の並列計算を行うためのソフトウェア開発・実行環境の一つ。米NVIDIA社が自社製GPU向けに開発・提供している。

というわけで基本的にはAMDのグラボでは使えないんです。

CUDAインストールしてみる

CUDA

まずは自分のGPUドライバーのバージョンを知ることです。

GFORCE EXPERIENCEが入っているなら、

開いて、ドライバーを確認することができます。

そして、ドライバーバージョンに適合したCUDAを使用するのですが、

TensorFlowが最新バージョンのCUDAに適合していないので、

おそらく、TensorFlowのほうに合わせることになります。

TensorFlow GPU適合表

NVIDIAページ

例として私の場合

CUDAツールキットは(下図)12.1が使えるようです。

ただ、TensorFlowのほうが 11.2までしか対応していません(下図)。

cuDNNというのも別途必要で、あとでセットアップします。

必要なバージョンは11.2くらいのものということで、

nvidia DEVELOPERにログインします。

旧バージョンのダウンロード場所がわからないので、

検索窓に「11.2」と入れてしまいましょう。

無事に発見出来たら、exeファイルをダウンロードしましょう。

私は、11.2.2

インストールはGUIで普通にできます。

※ エラー情報

もし、

You already have a newer virsion of the nvidia Freameview SDK installed

というエラーが出たら、Freameview SDKを一度アンインストールしてください。

コントロールパネルから「プログラムのアンインストール」でできます。

アンインストール後、再挑戦するとうまくいくと思います。

Visual Studio Code

CUDAのインストール中に、

VisualStudioをインストールするように誘導されます。

もし入れていなければインストールしてください。

「ほかのエディター使ってるからいらない」と飛ばさないでください。

VSCがないと動かないみたいですよ。

指示に進んでいくと、

Visual Studio Community も入れるように促されます。

これは、「C++によるデスクトップ開発」にチェックし、

画面右側、「オプション」の

「MSVC v142 – VS 2019 C++ x64/x86 ビルドツール」

にチェックをいれて、インストールするようです。

※ 私は今回インストールするよう促されなっかったので、

Microsoft Storeからインストールしました。

参考

I want to lead an easy life.

cuDNN

cuDNNのダウンロードにはnvidiaのアカウントが必要ですので、

ない方は要作成です。

cuDNNはこちらにあります。

「cuDNNをダウンロード」→「使用許諾に同意」

CUDA11.X用~~~

みつけたら、windows用をダウンロードします。

cuDNNはインストールじゃない

まずは、zipファイルですので、解凍。

Cドライブに、toolsというフォルダを作成し、解凍したファイルを入れます(仮置き、どこでもいいです)。

ファイルを開けていきます、

ここまできたら、

  • bin
  • include
  • lib
  • LICENSE

をコピーして、

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

の中に貼り付けます。

binとか上書きされちゃいますので、

「おいおい大丈夫か?」と思ってしまいますが、やります。

あとはパスを通す

まずはCUDA

まず、検索窓に「システムの詳細設定」と打ちます。

そして「環境変数」

ユーザーの環境変数

上段、「ユーザーの環境変数」で「Path」を「編集」で開くと、

すでにCUDAのパスが追加されているかもしれません。

ここには3種類のパスが通っていなければなりません。

  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\CUPTI\lib64
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include

このなかで、足りないものがあったら追加しなければいけません。

私は何度か失敗しているからなのか、全部そろっていました。

追加するときは「編集」を開いた状態で、「新規」で追加できます。

システムの環境変数

システムの環境変数にも、いくつか保存されています。

一番下の図にCUDA_PATHとあります。注目です。

cuDNNのパスを手作業で追加します

cuDNNのパスは、上図「CUDA_PATH」と同じにします。

「システムの環境設定」→「新規(W)」

「変数名」を「CUDNN_PATH」とし、

先ほどcuDNNをドキドキしながら張り付けた場所までのパスを追加します。

今回の場合、

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

ここで、念のためGPUが認識しているか確認。

nvcc -V

大丈夫そうですね。

やっとTensorFlow

ここからは、venv(仮想環境)で行います。

先頭が、(py39env)となりアクティブになった状態ですね。

ここでようやくTensorFlow-GPUです。

もう念には念をいれて、動作確認バージョンを指定します。

pip install tensorflow==2.6.5

私は、numpyがないとエラーが出ましたので、

pip install numpy

※ ここでも先にnumpyをインストールすると最新版が入ってしまって

うまくいかないので、

あえてエラーを出させたのちインストールしたほうがよさそう。

pipもあえて最新版にしないほうが良いかもしれません。

詳しい人いたら教えてください。

おそらくバージョン指定すれば問題ないのでしょうが、

対応バージョンを調べるのが大変ですよね。

確認

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

うまくいったら下図のように。CPUに加え、GPUの情報も記載されます。

コメント

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