私はKerasモデルを実行していますが、提出期限は36時間ですが、モデルをCPUでトレーニングすると約50時間かかりますが、GPUでKerasを実行する方法はありますか?
Tensorflowバックエンドを使用していて、anacondaをインストールせずにJupyterノートブックで実行しています。
私はKerasモデルを実行していますが、提出期限は36時間ですが、モデルをCPUでトレーニングすると約50時間かかりますが、GPUでKerasを実行する方法はありますか?
Tensorflowバックエンドを使用していて、anacondaをインストールせずにJupyterノートブックで実行しています。
回答:
はい、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()
ではごきげんよう。
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
K.tensorflow_backend._get_available_gpus()
TensorFlow 2.0では機能しません。
承知しました。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'
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)
スクリプトがタスクマネージャーでGPUを実行しているかどうかを確認します。そうでない場合は、他の回答がすでに示唆しているように、CUDAバージョンが、使用しているtensorflowバージョンに適していると考えてください。
さらに、テンソルフローでGPUを実行するには、CUDAバージョン用の適切なCUDA DNNライブラリが必要です。ここからダウンロード/抽出し、DLL(例:cudnn64_7.dll)をCUDA binフォルダー(例:C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin)に配置します。