Python 我可以在gpu上运行Keras模型吗?
我正在运行Keras模型,提交截止时间为36小时,如果我在cpu上训练我的模型,大约需要50小时,有没有办法在gpu上运行KerasPython 我可以在gpu上运行Keras模型吗?,python,tensorflow,keras,jupyter,Python,Tensorflow,Keras,Jupyter,我正在运行Keras模型,提交截止时间为36小时,如果我在cpu上训练我的模型,大约需要50小时,有没有办法在gpu上运行Keras 我正在使用Tensorflow后端并在我的Jupyter笔记本上运行它,而没有安装anaconda。是的,您可以在GPU上运行keras型号。你需要先检查的东西很少 你的系统有GPU(Nvidia,因为AMD还不能工作) 您已经安装了tensorflow的GPU版本 您已经安装了CUDA 验证tensorflow是否使用GPU运行 sess=tf.Session(
我正在使用Tensorflow后端并在我的Jupyter笔记本上运行它,而没有安装anaconda。是的,您可以在GPU上运行keras型号。你需要先检查的东西很少
sess=tf.Session(config=tf.ConfigProto(log\u device\u placement=True))
对于TF>v2.0
sess=tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log\u device\u placement=True))
(感谢@nbro和@Ferro在评论中指出这一点)
或
输出将如下所示:
[
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()
祝你一切顺利。当然。我想您已经为GPU安装了TensorFlow 导入keras后,需要添加以下块。我在一台有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的消耗值。当然可以。如果您在Tensorflow或CNTk后端上运行,则默认情况下,您的代码将在GPU设备上运行 Theano标志: THEANO\u FLAGS=device=gpu,floatX=float32 python my\u keras\u script.py
2.0兼容答案:上述答案详细解释了如何在Keras模型上使用GPU,我想解释如何在
Tensorflow 2.0版
上使用GPU
要知道有多少GPU可用,我们可以使用以下代码:
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
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)
要找出您的运算和张量分配给哪些设备,
放置tf.debug。将\u log\u device\u placement(True)
设置为程序的第一条语句
启用设备放置日志记录会导致打印任何张量分配或操作。例如,运行以下代码:
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
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)
给出如下所示的输出:
在设备中执行op MatMul
/作业:localhost/副本:0/任务:0/设备:GPU:0 tf.Tensor([[22.28.]
[49.64.],shape=(2,2),dtype=float32)
有关更多信息,请参阅任务管理器中的脚本是否正在运行GPU。如果不是,请怀疑您的CUDA版本与您正在使用的tensorflow版本是正确的,正如其他答案所建议的那样
此外,需要一个适合CUDA版本的CUDA DNN库才能使用tensorflow运行GPU。下载/解压缩DLL(例如cudnn64_7.DLL)并将其放入CUDA bin文件夹(例如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin)。我在Windows 10上使用Anaconda,带有GTX 1660 Super。在此之后,我首先安装了CUDA环境。但是现在Anaconda上有一个
keras gpu
元包,显然不需要事先安装CUDA和cuDNN库(我的已经安装了)
这就是我创建一个名为keras\gpu的专用环境的原因:
# need to downgrade from tensorflow 2.1 for my particular setup
conda create --name keras_gpu keras-gpu=2.3.1 tensorflow-gpu=2.0
要添加@johncasey的答案,但对于TensorFlow 2.0,添加此块对我很有用:
import tensorflow as tf
from tensorflow.python.keras import backend as K
# adjust values to your needs
config = tf.compat.v1.ConfigProto( device_count = {'GPU': 1 , 'CPU': 8} )
sess = tf.compat.v1.Session(config=config)
K.set_session(sess)
解决了我遇到的
set\u会话
错误:您需要从tensorflow路径使用keras后端,而不是keras本身。我必须为此安装python 3.5。否则tensorflow将无法工作?无需。TF同时适用于2.7和3.5。选择了TF的正确版本,就是这样。好吧,我会选择2.7,安装3.5I时有问题。我得到这个错误-在/usr/local/lib/python2.7/dist-packages下载/解包tensorflow清理中找不到任何满足要求的下载。。。在/usr/local/lib/python2.7/dist-packages中找不到tensorflow的任何发行版,在/home/hyperworks/.pip/pip.log
模块“tensorflow”没有属性“ConfigProto”
您正在使用tensorflow 2?我用tf 1.X测试了它。唯一的答案是,在gpu上运行keras需要安装另一整套软件,从nvidia驱动程序到keras本身的'-gpu'构建,再加上注意cudnn和cuda的正确安装和链接。如果我只列出“gpu”,现在就没有显示XLA_gpu了。也许这也是keras似乎没有看到我的gpu的原因