ページの先頭です

お手軽ディープラーニング

Kerasを使って画像分類を試してみる(2)―GPUドライバとライブラリの対応関係確認―

2020年2月19日 情報通信研究部 橋本 大樹

このコラムでは、全4回の連載で、ディープラーニングフレームワークKerasの開発環境を構築し、簡単なサンプルプログラムを動かしてディープラーニングを体験してみることを目標とします。このコラムを参考に、ディープラーニングの世界への第一歩を踏み出しましょう。


第1回 環境構築前に考えること
第2回 GPUドライバとライブラリの対応関係確認
第3回 Keras開発環境の構築
第4回 サンプルプログラムの実行

概要

NVIDIA(GPU)ドライバと、TensorFlow、Keras等のPythonライブラリやPythonの対応関係の確認手順について説明します。

この記事では、計算処理にGPUを用いた高速な並列演算を利用するため、下図の依存関係に注意してバージョンを選択します。

図1

不適切なバージョンで環境を構築しようとした場合、正常にインストールできないことや、インストールできているように見えてもプログラムが正常に動作しないことがあるため、必ず、環境を構築する前に対応関係の確認を行ってください。

事前のバージョン決定が必要な部分

Python、CUDA、TensorFlowのバージョンを事前に決定する必要があります。

TensorFlowはCUDAと、CUDAはNVIDIAドライバと依存関係があるため、NVIDIAドライバのバージョンを基準に、CUDAとTensorFlowのバージョンを決定します。

また、TensorFlowの対応しているPythonのバージョンが限られているため、決定したTensorFlowのバージョンからPythonのバージョンを決定します。

事前のバージョン決定が不要な部分

Anacondaを用いて環境構築を行うことで、PythonやTensorFlowのバージョンに対応するKerasのバージョンが自動で決定されるため、Kerasのバージョンを事前に決定する必要はありません。

また、今後インストールするPythonライブラリの大半も、GPUを使用する等の特別な事情がない限り、Anacondaを用いてインストールすることで対応関係を強く意識することなくインストールすることができます。

(補足)
Anacondaを用いることで大半のPythonライブラリはバージョンを意識せずに環境構築が行えますが、TensorFlowのバージョンは事前に確認する必要があります。

理由は2つあります。1つ目の理由は、Anacondaによる環境構築において、最初にPythonのバージョンを明示的に指定する必要があり、かつ、TensorFlowの対応しているPythonのバージョンが限られているためです。指定したPython環境に対応したTensorFlowが存在しない可能性があるため、事前の確認によりPythonとTensorFlowのバージョンを決定することが必要です。2つ目の理由は、現状AnacondaがNVIDIAドライバのバージョンとCUDAの対応関係を考慮しないためです。TensorFlowのバージョンを指定せずに環境構築を行うと、CUDAとTensorFlowの間の対応関係は自動的にチェックされますが、CUDAとNVIDIAドライバの間の対応関係は、チェックが行われません。このため、TensorFlowからCUDAは正常に呼び出せても、CUDAがNVIDIAドライバに対応していないためにGPUが正常に動作しない、というような問題が起こることがあります。

バージョンの決定手順

この記事では、NVIDIAドライバのバージョンを基準に、以下の手順でCUDA、TensorFlow、Pythonのバージョンを決定していきます。

Step1: NVIDIAドライバのバージョン
……インストール済みのドライバをそのまま使用することを想定
Step2: CUDAのバージョン
……CUDAとNVIDIAドライバの間の対応関係より決定
Step3: TensorFlow、Pythonのバージョン
……TensorFlowとCUDA、TensorFlowとPythonの間の対応関係より決定

既存のソースコードを使用したい場合など、特定のバージョンのTensorFlow等を導入する必要がある場合は、NVIDIAドライバのバージョンアップが必要になることもあります。本記事の確認手順を逆にたどることで、必要となるNVIDIAドライバのバージョンが確認できるため、本記事を参考にしてください。

また導入可能なNVIDIAのドライバのバージョンの確認およびダウンロードは、次のサイトにて行えます。

https://www.nvidia.co.jp/Download/index.aspx?lang=jp

対応関係の事前確認

Step1: NVIDIAドライバのバージョン

環境構築を行うPCに既にインストールされているNVIDIAドライバのバージョンを確認します。

多くの場合、NVIDIAコントロールパネルやコントロールパネルの「プログラムのアンインストールまたは変更」画面で確認が可能です。

NVIDIAコントロールパネルは、デスクトップ上の何もアイコンのない部分にカーソルを置いた状態でマウスの右クリックを行い、「NVIDIAコントロールパネル」メニューから開くことができます。「ヘルプ」→「システム情報」メニューで開いたシステム情報画面上の「ディスプレイ」タブの「ドライバーのバージョン」の値から、NVIDIAドライバのバージョンが確認できます。

例えば、筆者の使用しているWindows PCには、バージョン「430.86」のNVIDIAドライバがインストールされていることがわかります。

図2

PCにNVIDIA製のGPUが搭載されているにも関わらず、「NVIDIAコントロールパネル」メニューが表示されない場合は、NVIDIAドライバをインストールまたは更新してください。

※linuxの場合、以下のコマンドにより確認できます。

cat /proc/driver/nvidia/version

Step2: CUDAのバージョン

GPUを用いた高速な並列演算のためのフレームワークであるCUDAの、NVIDIAドライバへの対応については、NVIDIAのサイトのCUDA Driverの章にて確認できます。
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

例えば、筆者のNVIDIAドライバのバージョンは「430.86」のため、CUDA10.1以下のバージョンのCUDA が使用可能であることがわかります。

図3

(補足1)
本記事では、NVIDIAドライバのバージョンを基準にTensorFlowのバージョンを決定する過程で、CUDAのバージョンを決定していますが、実際にインストールする際には、CUDAのバージョン指定は不要です。それどころか、CUDAを明示的にインストールする必要はありません。Anacondaによりバージョンを指定してTensorFlowをインストールすると、TensorFlowの依存ライブラリとしてCUDAのバージョンが自動で決定されインストールされます。


(補足2)
環境構築の際には、Anacondaにより自動で、Python環境用の特別な場所にCUDAの新規インストールが行われます。このため、他の用途ですでにCUDAツールキットがインストールされている場合も、競合することはありません。TensorFlowのバージョン決定の際には、インストール済みのCUDAツールキットのバージョンを気にすることなく、NVIDIAドライバに対応している最新のCUDAのバージョンを確認してください。

Step3: TensorFlow、Pythonのバージョン

最後に、TensorFlowの公式サイトにて、TensorFlowのCUDA、Pythonへの対応を確認します。

TensorFlowのライブラリは、CPUを用いて計算処理を行う場合とGPUを用いて計算処理を行う場合とで別のライブラリに分かれています。それぞれのライブラリに対応するCUDA(GPU版のみ)、PythonのバージョンはTensorFlowの公式サイトにまとめられています。

なお、日本語で表示されている場合は、念のため、ページ上部のプルダウンメニューからLanguageをEnglishに切り替えて、英語版の情報を確認してください。執筆 (2020年1月)時点では、日本語版のページより新しい情報が掲載されています。

図4

例えば、本記事執筆時の最新安定版であるtensorflow-gpu 2.0.0は、Python 3.5~3.7、CUDA 10にて動作確認済みであることがわかり、筆者のPCではtensorflow-gpu 2.0.0が使用可能なこと、またその場合のPythonのバージョンは3.5~3.7を使用するとよいことがわかります。

おわりに

今回は、NVIDIAドライバとPythonライブラリやPythonの対応関係の確認方法を説明しました。NVIDIAドライバとTensorFlowのバージョンが対応していない場合、プログラムが正しく動作しないなどの問題が発生することがあるため、面倒でも必ず事前に対応関係の確認を行うようにしてください。

次回は、Anacondaを用いて環境構築を行います。対応関係の確認ができれば、環境構築まであと少しです。Anacondaは導入したライブラリの依存ライブラリを自動で検索してインストールする機能が含まれているため、数個のコマンドで簡単に環境を構築することができます。

ページの先頭へ