当前位置: 首页 > 面试题库 >

TensorFlow后端的Keras不使用GPU

沙岳
2023-03-14
问题内容

我使用keras版本2.0.0和tensorflow版本0.12.1构建了docker
镜像的gpu版本https://github.com/floydhub/dl-
docker
。然后,我运行了mnist教程https://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py,但意识到keras没有使用GPU。以下是我的输出

root@b79b8a57fb1f:~/sharedfolder# python test.py
Using TensorFlow backend.
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-09-06 16:26:54.866833: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-09-06 16:26:54.866855: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-09-06 16:26:54.866863: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-09-06 16:26:54.866870: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-09-06 16:26:54.866876: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.

有人可以让我知道在keras使用GPU之前是否需要进行一些设置吗?我对所有这些都是新手,所以如果需要提供更多信息,请告诉我。

我已经安装了 页面上提到的先决条件

  • 按照适用于您平台的安装指南安装Docker:https : //docs.docker.com/engine/installation/

我能够启动Docker映像

docker run -it -p 8888:8888 -p 6006:6006 -v /sharedfolder:/root/sharedfolder floydhub/dl-docker:cpu bash
  • 仅限GPU版本:直接从Nvidia或按照此处的说明在计算机上安装Nvidia驱动程序。请注意,您不必安装CUDA或cuDNN。这些都包含在Docker容器中。

我能够执行最后一步

cv@cv-P15SM:~$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  375.66  Mon May  1 15:29:16 PDT 2017
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
  • 仅限GPU版本:按照此处的说明安装nvidia-docker:https : //github.com/NVIDIA/nvidia-docker。这将安装docker CLI的替代品。它负责在Docker容器中设置Nvidia主机驱动程序环境以及其他一些事项。

我可以在这里跑一步

# Test nvidia-smi
cv@cv-P15SM:~$ nvidia-docker run --rm nvidia/cuda nvidia-smi

Thu Sep  7 00:33:06 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.66                 Driver Version: 375.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 780M    Off  | 0000:01:00.0     N/A |                  N/A |
| N/A   55C    P0    N/A /  N/A |    310MiB /  4036MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0                  Not Supported                                         |
+-----------------------------------------------------------------------------+

我还能够运行nvidia-docker命令来启动gpu支持的映像。

我尝试过的

我在下面尝试了以下建议

  1. 检查您是否已完成本教程的第9步(https://github.com/ignaciorlando/skinner/wiki/Keras-and-TensorFlow-installation)。注意:您的文件路径在该docker映像中可能完全不同,您必须以某种方式找到它们。

我在我的bashrc中附加了建议的行,并验证了bashrc文件已更新。

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64' >> ~/.bashrc
echo 'export CUDA_HOME=/usr/local/cuda-8.0' >> ~/.bashrc
  1. 在我的python文件中导入以下命令

import os os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152 os.environ["CUDA_VISIBLE_DEVICES"]="0"

不幸的是,单独或一起执行的两个步骤都无法解决问题。Keras仍以CPU版本的tensorflow作为后端运行。但是,我可能已经发现了可能的问题。我通过以下命令检查了我的tensorflow的版本,发现其中两个。

这是CPU版本

root@08b5fff06800:~# pip show tensorflow
Name: tensorflow
Version: 1.3.0
Summary: TensorFlow helps the tensors flow
Home-page: http://tensorflow.org/
Author: Google Inc.
Author-email: opensource@google.com
License: Apache 2.0
Location: /usr/local/lib/python2.7/dist-packages
Requires: tensorflow-tensorboard, six, protobuf, mock, numpy, backports.weakref, wheel

这是GPU版本

root@08b5fff06800:~# pip show tensorflow-gpu
Name: tensorflow-gpu
Version: 0.12.1
Summary: TensorFlow helps the tensors flow
Home-page: http://tensorflow.org/
Author: Google Inc.
Author-email: opensource@google.com
License: Apache 2.0
Location: /usr/local/lib/python2.7/dist-packages
Requires: mock, numpy, protobuf, wheel, six

有趣的是,输出显示keras使用的是Tensorflow版本1.3.0,这是CPU版本而不是0.12.1(GPU版本)

import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K

import tensorflow as tf
print('Tensorflow: ', tf.__version__)

输出量

root@08b5fff06800:~/sharedfolder# python test.py
Using TensorFlow backend.
Tensorflow:  1.3.0

我想现在我需要弄清楚如何让keras使用tensorflow的gpu版本。


问题答案:

这是 从未 有两个是个好主意tensorflow,并tensorflow- gpu包并排安装(在一个单独的一次发生在我身上不小心,Keras使用的CPU版本)。

我想现在我需要弄清楚如何让keras使用tensorflow的gpu版本。

您应该只从系统中删除这两个软件包,然后重新安装tensorflow-gpu[注释后更新]:

pip uninstall tensorflow tensorflow-gpu
pip install tensorflow-gpu

此外,令人困惑的是为什么您似乎要使用该floydhub/dl-docker:cpu容器,而根据说明,您应该使用该容器floydhub/dl- docker:gpu



 类似资料:
  • 我已经在纸质空间云架构体系上创建了虚拟笔记本,后端有Tensorflow GPU P5000虚拟实例。当我开始训练我的网络时,它比我的MacBook Pro用纯CPU运行时引擎慢2倍。如何确保Keras NN在训练过程中使用GPU而不是CPU? 请在下面找到我的代码:

  • 问题内容: 我安装了Tensorflow后端和CUDA的Keras。我有时想按需强迫Keras使用CPU。不用说在虚拟环境中安装单独的仅CPU的Tensorflow就能做到吗?如果可以,怎么办?如果后端是Theano,则可以设置标志,但是我还没有听说过可以通过Keras访问Tensorflow标志。 问题答案: 如果要强制Keras使用CPU 方式1 在导入Keras / Tensorflow之前

  • Keras是紧凑,易于学习的高级Python库,运行在TensorFlow框架之上。它的重点是理解深度学习技术,例如为神经网络创建维护形状和数学细节概念的层。freamework的创建可以是以下两种类型 - 顺序API 功能API 在Keras中创建深度学习模型有以下 8 个步骤 - 加载数据 预处理加载的数据 模型的定义 编译模型 指定模型 评估模型 进行必要的预测 保存模型 下面将使用Jupy

  • 什么是“后端” Keras是一个模型级的库,提供了快速构建深度学习网络的模块。Keras并不处理如张量乘法、卷积等底层操作。这些操作依赖于某种特定的、优化良好的张量操作库。Keras依赖于处理张量的库就称为“后端引擎”。Keras提供了两种后端引擎Theano/Tensorflow,并将其函数统一封装,使得用户可以以同一个接口调用不同后端引擎的函数 Theano是一个开源的符号主义张量操作框架,由

  • 什么是“后端” Keras是一个模型级的库,提供了快速构建深度学习网络的模块。Keras并不处理如张量乘法、卷积等底层操作。这些操作依赖于某种特定的、优化良好的张量操作库。Keras依赖于处理张量的库就称为“后端引擎”。Keras提供了三种后端引擎Theano/Tensorflow/CNTK,并将其函数统一封装,使得用户可以以同一个接口调用不同后端引擎的函数 Theano是一个开源的符号主义张量操

  • 请注意,CPU没有被利用,任务管理器上的任何其他内容都表明任何东西都没有被充分利用。我没有以太网连接,并且连接到Wifi(我不认为这会影响任何事情,但我不确定Jupyter是否会影响Wifi,因为它是通过web浏览器运行的)。我正在培训大量数据(~128GB),这些数据都加载到RAM(512GB)中。我运行的模型是一个完全卷积的神经网络(基本上是一个U型网络结构),具有566290个可训练参数。到