22
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

Windows10:KerasでGPUを使用する環境構築のTip's(TensorFlow)

〇導入する各ソフトウェアのバージョン

  • Anaconda:5.0(Python 3.6)
  • CUDA:8.0
  • cuDNN:6.0
  • Keras:2.1.1
  • tensorflow-gpu:1.4.0

〇導入のポイント(2017年12月現在)

  • 【1.導入-CUDA8.0のインストール】CUDAは9.0ではなく8.0をインストール ⇒ WindowsのcuDNNはまだCUDA9.0に非対応
  • 【2.環境構築】kerasのインストールはコマンドプロントではなくPowerShellで行う ⇒ pipでインストール時に文字コードによる導入失敗を回避
  • 【3.利用】Kerasで少し重い処理を行うと「failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED」というエラーが発生するためGPUメモリの使用制限を設定する ⇒ TensorFlowのデフォルトだとGPUのメモリを100%まで利用しようとするため、ある程度でGPUのメモリ確保失敗が発生する

1.導入

1.1.CUDA8.0のインストール

CUDA Toolkit 8.0 - Feb 2017
↑「Operating System:Windows, Architecture:x86_64, Version:10」を選択しダウンロード&インストール

1.2.cuDNN6.0のインストール

cuDNN Download
Download cuDNN v6.0 (April 27, 2017), for CUDA 8.0」から「cuDNN v6.0 Library for Windows 10」を選択しダウンロード。
ダウンロードしたファイルを展開し「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0」配下の同じディレクトリに設置(上書き)

1.3.Anaconda 5.0(Python 3.6)のインストール

Download Anaconda Distribution
「Python 3.6 version」の64-Bitをダウンロード&インストール

2.環境構築(KerasとTensorFlowのインストールを含む)

下の作業は「Windows PowerShell」で行うこと。

2.1.仮想環境の作成

conda create -n [仮想環境名] python=3.6

2.2.仮想環境のアクティブ化

activate [仮想環境名]

2.3.TensorFlow(GPU)のインストール

pip install --ignore-installed --upgrade tensorflow-gpu

2.4.Kerasのインストール

pip install keras

3.利用

3.1.「failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED」というエラーが発生した場合

下の様なログが出力されPython自体が落ちます。

[W 10:55:58.509 NotebookApp] Saving untrusted notebook classifier/fine-tuning-vgg16.ipynb
2017-12-23 10:56:26.508105: E C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\stream_executor\cuda\cuda_blas.cc:366] failed to create cublas handle: CUBL
AS_STATUS_ALLOC_FAILED

python_error.jpg

3.1.1.【対応】必要なライブラリをimport後、下のコードを実行してGPUの使用率を制限する

# TensorFlowのGPUメモリ使用量の制限
import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.8
set_session(tf.Session(config=config))

ログに下の様な使用率が出力されるのでtotalMemoryとfreeMemoryの値を参考に上のper_process_gpu_memory_fractionに使用率を指定

name: GeForce GTX 1070 major: 6 minor: 1 memoryClockRate(GHz): 1.7715
pciBusID: 0000:01:00.0
totalMemory: 8.00GiB freeMemory: 6.64GiB

「6.6 / 8.0 = 0.825」 ⇒「per_process_gpu_memory_fraction = 0.8」

gpu.jpg
tf.png

これでバリバリKerasでGPUを利用できます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
22
Help us understand the problem. What are the problem?