代码之家  ›  专栏  ›  技术社区  ›  Kong

TensorFlow后端不使用GPU的Keras

  •  18
  • Kong  · 技术社区  · 9 年前

    我构建了docker镜像的gpu版本 https://github.com/floydhub/dl-docker keras版本2.0.0和tensorflow版本0.12.1。然后我运行了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.
    

    我已经安装了 page

    我可以启动docker图像

    docker run -it -p 8888:8888 -p 6006:6006 -v /sharedfolder:/root/sharedfolder floydhub/dl-docker:cpu bash
    
    • 仅限GPU版本:直接从Nvidia或按照说明在您的机器上安装Nvidia驱动程序 here

    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)
    

    我能跑这一步 here

    # 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                                         |
    +-----------------------------------------------------------------------------+
    

    我还能够运行英伟达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"

    这是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
    

    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版本。

    4 回复  |  直到 9 年前
        1
  •  30
  •   desertnaut SKZI    8 年前

    它是 从不 两者兼有是个好主意 tensorflow tensorflow-gpu

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

    您只需从系统中删除这两个软件包,然后重新安装

    pip uninstall tensorflow tensorflow-gpu
    pip install tensorflow-gpu
    

    此外,令人费解的是,为什么您似乎使用 floydhub/dl-docker:cpu floydhub/dl-docker:gpu 一

        2
  •  5
  •   Deemah    8 年前

    我也有类似的问题-keras没有使用我的GPU。我有tensorflow gpu安装根据指示进入康达,但安装keras后,它只是没有列出gpu作为可用的设备。我意识到keras的安装增加了tensorflow包!所以我有tensorflow和tensorflow gpu包。我发现有keras gpu包可用。在完全卸载keras、tensorflow、tensorflow gpu并安装tensorflow gpu、keras gpu后,问题得到解决。

        3
  •  3
  •   Stephen Rauch Afsar Ali    8 年前

    将来,您可以尝试使用虚拟环境来分离tensorflow CPU和GPU,例如:

    conda create --name tensorflow python=3.5
    activate tensorflow
    pip install tensorflow
    

    conda create --name tensorflow-gpu python=3.5
    activate tensorflow-gpu
    pip install tensorflow-gpu
    
        4
  •  -2
  •   Amal Jogy    5 年前

    这对我很有效:

    推荐文章