近年、AI(人工知能)を用いた開発が広く行われていますよね。そんな中で、ディープラーニングのフレームワークにおいて、世界で広く使われてているものがTensorFlowです。
ディープラーニングは、人間や動物の脳神経回路をモデルにしたアルゴリズムを多層構造化したものです。内部では、大量の行列の積和処理などの計算が行われているため、処理が非常に重くなりがちです。そのため、GPUを使って並列処理を行うことで処理時間を短縮できます。TensorFlowにおいてもGPUを利用すればニューラルネットワークを用いた開発を容易に行うことができます。この記事では、TensorFlowにGPUを導入する方法や利用する際の注意点をお伝えするので、ディープラーニングをTensorFlowとGPUを利用して行ってみましょう。
それでは今回は、TensorFlowにGPUを導入する方法についてお伝えします。
TensorFlowでGPUを使用した方がいい理由
TensorFlowは、Googleが開発した機械学習に用いるためのライブラリです。機械学習や数値解析、ディープラーニングに対応していて、容易にAI(人工知能)の開発を行うことができる非常に強力なツールです。
ディープラーニングの計算は、重みの行列に別の行列をかけて足し合わせる処理を行っていますが、GPUのグラフィック計算に用いられる行列処理と類似しているため非常に相性が良いです。また、GPUは並列的で比較的に単純な計算処理が得なため処理時間を非常に短縮できます。そのため、TensorFlowを利用してディープラーニングを行う際は、GPUを導入して開発をする方がよいといえるでしょう。
前準備に環境を整えよう
TensorFlowを導入する前に「TensorFlowを利用するための環境の準備」、「GPUを利用するための環境の準備」をしましょう。
TensorFlowを利用するための環境の準備
TensorFlowを利用して、AI(人工知能)の開発をする際非常に相性のよい言語がPythonです。TensorFlowを利用するために、まずはPythonをインストールしましょう。
TensorFlow2とGPUを利用するためには、インストールするべきPythonのバージョンが指定されています。Pythonのホームページから、ご自身のOS、TensorFlow2のGPUに対応したバージョンのインストールファイルをダウンロードし、指示に従ってインストールを完了させましょう。
GPUを利用するための環境の準備
GPUを利用するためには、NVIDIA社のCUDA(Compute Unified Device Architecture)が広く利用されています。CUDAとは、NVIDIA社が開発・提供しているGPUで動作する開発環境です。
※CUDAのインストール方法はこちら
CUDAをインストールする前に、TensorFlowのバージョンに対応したCUDAを調べましょう。その後、NVIDIA DEVELOPER のホームページからご自身のOS、インストールしたいバージョンに対応したCUDA Toolkitのインストールファイルをダウンロードして、指示に従ってインストールを完了させます。また、インストールしたCUDAのバージョンに対応したcuDNNをダウンロードして、CUDAがあるフォルダの中にコピーをして、システム環境変数を通しましょう。
これで、TensorFlowとGPUを使うための前準備は完了です。
TensorFlow 2をインストールしよう
次にTensrlFlow2をインストールする方法を紹介します。まずは、インストールしたCUDAのバージョンを確認します。TensorFlowのホームページのインストールタブを押して、GPUのサポートページから確認をしてください。
TensorFlow2 パッケージには、最新の安定版リリースのTensorFlowとプレビュービルドのtf-nightlyがありますが、基本的には安定板のTensorFlowをインストールするようにしましょう。
これでTensorFlow2のGPU版のインストールは完了です。
動作を確認する
実際にTensorfowをインストールできたら、まずはうまくTensorFlowでGPUが使える状態化を確認します。コマンドとしては2行で確認できますので、忘れずに行いましょう。
print(device_lib.list_local_devices())
を実行しましょう。うまくインストールが行われている場合は、
device_type: “CPU”
memory_limit: 268435456
locality {
}
incarnation: 2319180638018740093
, name: “/device:GPU:0”
device_type: “GPU”
memory_limit: 11324325888
locality {
bus_id: 1
}
……
]
このように、CPUとGPUが表示されます。もし、うまくGPUが使えない状態ですとCPUのみが表示されます。そのような場合のほとんどは、GPUのインストールが正しく行えていません。一度CUDAなどをアンインストールしてから再度インストールしましょう。
また、実際にコードを書いてTensorFlowを利用できるかを確認していきましょう。この場合は、TensorFlowのチュートリアルに掲載があるコードを使います。
方法としては、まずはTensorFlow、Mnistというデータセットをインポートします。そして、データを学習データと検証データに分割します。その後モデルを定義して、model.fitで学習を行い、model.evaluateでモデルを評価します。GPUがうまく使えていると、実行をしている最初にGPUが利用されている以下のコードが表示されます。
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer=’adam’,
loss=’sparse_categorical_crossentropy’,
metrics=[‘accuracy’])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
TensorFlowでGPUを使う場合の注意点
最後に、TensorFlowでGPUを使う場合の注意点をご紹介します。注意点は、「TensorFlowをアップグレードした際にCUDAのバージョンが対応しているかを確認する」、「電力が低い場合処理が回らない場合がある」ということです。
TensorFlowをアップグレードした際にCUDAのバージョンが対応しているかを確認する
TensorFlowのGPU版はそれぞれのバージョンで対応するCUDAのバージョンが規定されています。そのためもしもアップロードする場合は、CUDAのバージョンもアップロードする必要がある場合があります。その際は、古いバージョンのCUDAをアンインストールして、新しいバージョンのCUDAを再度インストールしてからTensorFlowをアップグレードするようにしましょう。
電力が低い場合処理が回らない場合がある
TensorFlowを用いてディープラーニングを行う場合は、非常に大量の計算処理をGPUにおいて行っています。そのため、非常に多くの電力を消費し、コンピューターを電源につながずにディープラーニングの学習を行っている場合は、途中で処理が止まってしまう可能性があります。必ずTensorFlowとGPUを使ってディープラーニングを行う場合は、電源につないだ状態で行うようにしましょう。
さて今回は、TensorFlowでディープラーニングする場合にGPUを利用する方法をご紹介しました。今回の内容をまとめると、以下のようになります。
- TensorFlowでGPUを使用した方が良い理由は、処理時間を非常に短縮できるから
- TensorFlowを導入する前に「TensorFlowを利用するための環境の準備」、「GPUを利用するための環境の準備」を行う必要がある
- TensorFlow 2は、pip install TensorFlow-gpu=2.〇.〇(2.〇.〇はCUDAのバージョンに対応したもの)でインストールができる
- インストール後、from tensorflow.python.client import device_libprint(device_lib.list_local_devices())で、GPUが表示されれば利用できることが確認できる
- TensorFlowでGPUを使う場合の注意点は、「TensorFlowをアップグレードした際にCUDAのバージョンが対応しているかを確認する」、「電力が低い場合処理が回らない場合がある」など
TensorFlowとGPUを合わせてディープラーニングを行うことで、計算効率を大きく上げることができるため、非常に有用です。ぜひ、TensorFlowとGPUを利用して、ディープラーニングを用いた開発を行いましょう。
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。