一昔前では自宅で機械学習をするのは難しかったですが、今では機械学習も自宅で学習環境を整えられるようになりましたよね。さらに、CPUよりも処理速度の高いGPUを用意してTensorflowを利用すれば、本格的なディープラーニングも簡単にできます。
なお、TensorflowとはGoogle社が開発したライブラリであり、Python上などで動作することで大量のデータの分散学習が可能になります。ただし、しっかりと活用していくには処理性能が高さが重要になるため、GPUを使ったTensorflowを利用すべきなのです。
そこで、今回はTensorflowでGPUを使う方法について詳しくお伝えします。ぜひ、ご自身でGPUを使ったTensorflowを導入しましょう。
そもそもGPUにすると速いの?
最初になぜGPUでTensorflowを利用するのか説明します。その理由は、CPUを利用したものよりもGPU版のTensorflowの方が断然早いからです。
これは両者の仕組みが異なることによるもので、例えばCPUの場合では以下のように処理します。
このようにCPUでは何らかの計算処理を順に行います。PCを操作しているときにアプリケーションを立ち上げたり、マウスを操作するなどの基本的な処理であれば、スペックが足りていればCPUでも問題ありません。
しかし、大量のデータを学習させる機械学習では、上のような処理を行うと時間が掛かってしまうため、以下のように計算を処理するGPUを利用した学習を行います。
算→B
処→C
理→D
・
・
・
以上のようにGPUは順に計算を行うのではなく、並列的に各々のデータを処理するので、機械学習のようなデータ量が多いものでも効率的に対応が可能です。こちらについてはGPUの性能にも依存しますが、CPUに比べて数十から数百倍ほどの計算速度を持っています。
したがって、GPUでTensorflowを利用すると、CPUよりも格段に早くディープラーニングできるでしょう。それでは、以下からGPU版のTensorflowを導入するための準備や具体的な手順などをお伝えします。
まず環境を整えよう
今回はもっともオーソドックスなWindows環境での導入を説明します。GPU版Tensorflowを導入するには、以下のハードウェア条件とソフトウェア条件を満たす環境が必要です。
- ハードウェア条件:CUDA® 対応のNVIDIA® GPU カードを用意する
- ソフトウェア条件:Python3およびpip、venvをインストールする
1のハードウェア条件は導入するPCにCUDA® 対応のNVIDIA® GPU カードがあるのか確認しましょう。こちらのサイトより対応しているGPUがどうか確かめてください。ちなみにGPU版のTensorflowではCUDA® アーキテクチャ 3.5、5.0、6.0、7.0、7.5、8.0 以降が対応します。
そして、2にあるようにPython3およびpip、venvをインストールしましょう。GPU版TensorflowはPython下で稼働するライブラリなので、現行のPython3の導入は必須。また、導入時に利用するpipコマンドの適用と仮想環境を使用するためにpip、venvディレクトリが必要です。
これらについては説明すると、まずPythonは公式サイトから3.6~3.9のバージョンをダウンロードして、インストールしましょう。具体的にはサイト上部の「Downloads」タブから最新のものや過去のバージョンを手に入れられます。あとは指示に従ってインストールしてください。
次にpip 19.0以降のバージョンをPythonに導入しましょう。こちらはPythonに搭載されているライブラリによって導入が可能になります。Python環境を準備できた後に以下のコマンドをコマンドプロンプトなどのインターフェースに打ち込めばOKです。
それでは、Pythonとpipが導入できたか以下のコマンドを同じように入力して確認しましょう。
pip3 –version
ここで導入したバージョンが表示できれば問題ありません。続いて仮想環境を利用するためにvenvディレクトリを以下のコマンドで作成します。
これによってPython環境にvenvという仮想環境が作成できたので、あとは仮想環境上でpipの更新とすでにインストールされているライブラリを以下のコマンドで確認してください。
- .\venv\Scripts\activate #venv環境を有効化する
- pip install –upgrade pip #venv環境上のpipを更新
- pip list #venv環境上のpipを一覧として表示する
ちなみに有効化したvenv環境は以下の一文で無効化できるので、必要に応じて入力しましょう。
しっかりとvenv環境が有効化され、pipの更新と一覧を確認できれば事前の準備は完了です。
GPU版Tensorflow導入手順
それでは、GPU版Tensorflowを導入しましょう。まず、GPU版Tensorflow(TensorFlow2.5.0以降)を利用するためには以下が必要になるのでダウンロードとインストール、もしくは更新作業を行いましょう。
- NVIDIA® GPU ドライバ
- CUDA® ツールキット
- cuDNN SDK 8.1.0 cuDNN バージョン
説明していくとGPU版Tensorflowの利用には「CUDA® ツールキット」と「cuDNN SDK 8.1.0 cuDNNバージョン」をインストールする必要があります。さらに、これには「NVIDIA® GPUドライバ」のインストール、もしくは最新バージョンへの更新が必要です。
そこで、こちらのサイトよりNVIDIA® GPUドライバを450.80.02以降にしてください。ドライバが更新出来たらCUDA®ツールキットをこちらからダウンロードして、インストールします。
この際に、バージョンは11.2に対応対応させてください。なお、ダウンロードではお使いのWindowsOSが指定されていること、local環境でインストールされることを確認してダウンロードボタンをクリックしましょう。
続いて「cuDNN SDK 8.1.0 cuDNN バージョン」を公式サイトよりインストールします。ただし、利用のために開発者登録が必要になるので「Download cuDNN」のボタン、飛んだページから「join us」をクリックして登録してください。その際には利用規約などを確認しつつ、了承した上で同意のボックスにチェックしてください。
そして、CUDA®のバージョン11.2に対応した「cuDNN SDK 8.1.0 cuDNN バージョン」をこちらのページより選択してダウンロード、インストールを行いましょう。
ここまでで上記のインストールは完了しますが、GPU版Tensorflowの導入のためにはPATHの設定が必要です。こちらはコマンドプロンプトなどのインターフェイスからコマンド入力を行い、しっかりとGPUでTensorflowが動くようにするために設定します。
この際には任意の場所にインストールしたCUDA®とcuDNNのディレクトリ、上記の場合では「C:\tools\cuda\bin」の利用して以下のようにコマンドプロンプト上で入力すればよいです。
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\CUPTI\lib64;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include;%PATH%
SET PATH=C:\tools\cuda;%PATH%
以上のように設定すればPATHが通るようになります。最後に、すべての設定が完了したのでPython上の仮想環境にpipにGPU版Tensorflowを導入しましょう。
こちらはPythonを起動した上で以下のコマンドを入力すればよいです。
pip install –upgrade tensorflow #CPUおよびGPUのtensorflowをインストール
これでGPU版Tensorflowの導入ができました。以下ではしっかりと動作するのか確認しましょう。
動作の確認方法
まず、インストールしたTensorFlowが動作しているのかどうか確認しましょう。こちらはこれまで説明したようにPythonと仮想環境を立ち上げてください。
そして、以下のコマンドを入力しましょう。
hello = tf.constant(‘Hello, TensorFlow2!’) #2
print(hello) #3
それぞれを説明すると#1では仮想環境内にTensorFlowを取り込み、それをtfと呼ぶように命令します。これはPythonでライブラリを利用する際の基本的な導入文です。
そして、#2では「’Hello, TensorFlow2!’」という文章をtensorで定義し、それをhelloとします。最後に、#3では定義したhelloを出力するように命令しており、入力を行うと以下のような出力が得られます。
上はこれまで入力したコマンドをテンソルとして出力しているもので、エラーが出力されなければTensorFlowが動作していると判断可能です。ただし、これではTensorFlowがGPUで動作しているのか判断できません。
そこで、実際にTensorFlowがGPUを認識しているのかを以下のコマンドで確かめます。
device_lib.list_local_devices()
こちらはTensorFlowが認識しているデバイスを表示させるコマンドであり、GPUを認識している場合では出力結果が以下のようになります。
・
・
name: “/device:CPU:0”
device_type: “CPU”
・
・
・
name: “/device:GPU:0”
device_type: “GPU”
・
・
・
physical_device_desc: “device: 0, name: 利用しているGPUの名称と情報などが記載”
]
以上のようにGPUを利用していればデバイスにCPUとGPUが記載されており、利用しているGPUの名称なども載っています。一方でTensorFlowがGPUを認識していない場合では以下のように出力されます。
・
・
name: “/device:CPU:0”
device_type: “CPU”
・
・
・
このようにデバイスとしてはCPUしか認識できていません。万が一このようにCPUしかTensorFlowが認識しない場合には、以下の導入時によくある問題と対処方法を確認して対処しましょう。
導入時によくある問題と対処方法
GPU版のTensorFlow導入時に上手く動作しなかったり、GPUを認識していない場合には、まずは正しくインストールできたかどうか確かめてみましょう。中でも疑うべきなのがCUDA®ツールキットとcuDNNについてです。
どういうことかというとTensorFlowが正しく導入され、動作している場合にはCPU、もしくはGPUで処理が行われます。しかし、GPU版のTensorFlowを扱うための設定が間違っている場合にはGPUを認識できないので、上で説明した方法で動作確認するとCPUしか表示されません。
ですから、今動かしているTensorFlowがGPUを認識していなければ、CUDA® ツールキットとcuDNNのインストールに何らかの問題があります。そのため、一度再インストールしてみるか、ダウンロードしたバージョンが正しいか確認してみるとよいでしょう。
また、過去に古いバージョンのTensorFlowを利用していた場合に、新しいGPU版のTensorFlowを導入すると問題が起こるケースがあります。具体的には「import tensorflow」しても動作しないという問題で、この場合には一度アンインストールした上でGPU版のTensorFlow再インストールしましょう。
ちなみにTensorFlowのアンインストールは以下のコマンドを入力すればよいです。
以上のように万が一エラーを出力したり、GPUを認識しない場合には一度最初からやり直すのがよいでしょう。
さて、今回はTensorflowでGPUを使う方法と以下の内容について詳しくお伝えしました。
- GPUは順に計算を行うのではなく、並列的に各々のデータを処理していくので、CPUに比べて数十から数百倍ほどの計算速度を持っている
- GPU版のTensorFlowはCUDA® 対応のNVIDIA® GPU カードを用意するハードウェア条件、Python3およびpip、venvをインストールするソフトウェア条件を満たす必要がある
- GPU版Tensorflow(TensorFlow2.5.0以降)を利用するためにはNVIDIA® GPU ドライバ、CUDA® ツールキット、cuDNN SDK 8.1.0 cuDNN バージョンのインストールを行う
- 動作確認では簡単なコマンド入力でTensorflowが動作するのか、GPUを認識しているか確認する
- 上手くいかないときはバージョンなどが正しいか確認して、ダウンロードからやり直すようにする
TensorflowはCPUよりもGPUの方が処理速度が速く、性能をフルに発揮できますが、それには適切な手順で導入することが大切です。今回お伝えした方法であればお使いのWindowsPCに環境を構築できるのでぜひやってみましょう。
そして、手軽にディープラーニングの世界に入門できるGPU版のTensorflowに挑戦してください。そうすれば得られたスキルから別の人生がみえてくるかもしれません。
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。