Kerasモデルをgpuで実行できますか?


125

私はKerasモデルを実行していますが、提出期限は36時間ですが、モデルをCPUでトレーニングすると約50時間かかりますが、GPUでKerasを実行する方法はありますか?

Tensorflowバックエンドを使用していて、anacondaをインストールせずにJupyterノートブックで実行しています。


これを見つけました:medium.com/@kegui/… ここの狭いフィールドで高評価の質問を熟読し、Mediumで完全な「答え」を出し、実際の収益を得ることができるように感じます。
EngrStudent

AMD GPUの場合。この投稿を参照してください。stackoverflow.com/a/60016869/6117565
bikram

回答:


175

はい、GPUでケラスモデルを実行できます。最初に確認する必要があるものはほとんどありません。

  1. システムにGPUが搭載されている(Nvidia。AMDはまだ動作しないため)
  2. tensorflowのGPUバージョンをインストールしました
  3. CUDAをインストールしました インストール手順をインストールしました
  4. GPUが機能しているかどうかを確認して、テンソルフローがGPUで実行されていることを確認します

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

または

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

出力は次のようになります。

[
  name: "/cpu:0"device_type: "CPU",
  name: "/gpu:0"device_type: "GPU"
]

これがすべて完了すると、モデルはGPUで実行されます。

keras(> = 2.1.1)がGPUを使用しているかどうかを確認するには:

from keras import backend as K
K.tensorflow_backend._get_available_gpus()

ではごきげんよう。


この権利のためにpython 3.5をインストールする必要がありますか?それ以外のtensorflowは機能しませんか?
ライアン

必要はありません。TFは2.7と3.5の両方で動作します。正しいバージョンのTFを選択してください。
Vikash Singh

さてさて、2.7に行く、3.5のインストールに問題がある
Ryan

私はこのエラーを受け取りますCould not find any downloads that satisfy the requirement tensorflow in /usr/local/lib/python2.7/dist-packages Downloading/unpacking tensorflow Cleaning up... No distributions at all found for tensorflow in /usr/local/lib/python2.7/dist-packages Storing debug log for failure in /home/hyperworks/.pip/pip.log
Ryan

12
K.tensorflow_backend._get_available_gpus()TensorFlow 2.0では機能しません。
nbro

21

承知しました。GPU用のTensorFlowがすでにインストールされていると思います。

ケラをインポートした後、次のブロックを追加する必要があります。私は56コアCPUとGPUを備えたマシンで作業しています。

import keras
import tensorflow as tf


config = tf.ConfigProto( device_count = {'GPU': 1 , 'CPU': 56} ) 
sess = tf.Session(config=config) 
keras.backend.set_session(sess)

もちろん、この使用法は私のマシンに最大制限を適用します。cpuおよびgpu消費値を減らすことができます。


エラーmodule 'tensorflow' has no attribute 'ConfigProto'
Divyanshu Srivastava

tensorflow 2を使用していますか?tf 1.Xでテストしました。
johncasey

13

2.0互換性のある回答:上記の回答では、KerasモデルでGPUを使用する方法について詳しく説明していますが、GPUをどのように使用できるかについて説明しますTensorflow Version 2.0

使用可能なGPUの数を知るには、以下のコードを使用できます。

print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

操作とテンソルが割り当てられているデバイスを見つけるにtf.debugging.set_log_device_placement(True)は、プログラムの最初のステートメントとして記述します。

デバイス配置ログを有効にすると、Tensorの割り当てまたは操作が印刷されます。たとえば、次のコードを実行します。

tf.debugging.set_log_device_placement(True)

# Create some tensors
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)

print(c)

以下に示す出力が得られます。

デバイス/ job:localhost / replica:0 / task:0 / device:GPU:0でop MatMulを実行していますtf.Tensor([[22. 28.] [49. 64.]]、shape =(2、2)、 dtype = float32)

詳細については、このリンクを参照してください


1

もちろん。TensorflowまたはCNTkバックエンドで実行している場合、コードはデフォルトでGPUデバイスで実行されます。ただし、Theanoバックエンドの場合、以下を使用できます。

Theanoフラグ:

「THEANO_FLAGS = device = gpu、floatX = float32 python my_keras_script.py」


0

スクリプトがタスクマネージャーでGPUを実行しているかどうかを確認します。そうでない場合は、他の回答がすでに示唆しているように、CUDAバージョンが、使用しているtensorflowバージョンに適していると考えてください。

さらに、テンソルフローでGPUを実行するには、CUDAバージョン用の適切なCUDA DNNライブラリが必要です。ここからダウンロード/抽出し、DLL(例:cudnn64_7.dll)をCUDA binフォルダー(例:C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin)に配置します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.