【问题标题】:How to check if dlib is using GPU or not?如何检查 dlib 是否正在使用 GPU?
【发布时间】:2019-01-12 19:31:35
【问题描述】:

我的机器有 Geforce 940mx GDDR5 GPU。

我已经安装了运行 GPU 加速 dlib(支持 GPU)的所有要求:

  1. CUDA 9.0 工具包,包含来自https://developer.nvidia.com/cuda-90-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal 的所有 3 个补丁更新

  2. cuDNN 7.1.4

然后我在 Github 上克隆 dlib/davisKing 存储库后执行以下所有命令,以编译 dlib 与 GPU 支持 :

$ git clone https://github.com/davisking/dlib.git
$ cd dlib
$ mkdir build
$ cd build
$ cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
$ cmake --build .
$ cd ..
$ python setup.py install --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA

现在我怎么可能检查/确认 dlib(或其他依赖于 dlib 的库,如 Adam Geitgey 的 face_recognition)是否在 python shell/Anaconda(jupyter Notebook)中使用 GPU?

【问题讨论】:

    标签: python-3.x tensorflow face-recognition dlib


    【解决方案1】:

    除了前面使用命令的答案,

    dlib.DLIB_USE_CUDA
    

    有一些替代方法可以确定 dlib 是否真的在使用您的 GPU。

    检查它的最简单方法是检查 dlib 是否识别您的 GPU。

    import dlib.cuda as cuda
    print(cuda.get_num_devices())
    

    如果设备数量 >= 1,则 dlib 可以使用您的设备。

    另一个有用的技巧是在运行 dlib 代码的同时运行

    $ nvidia-smi
    

    这应该为您提供完整的 GPU 利用率信息,您可以在其中单独查看总利用率以及每个进程的内存使用情况。

    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 410.48                 Driver Version: 410.48                    |
    |-------------------------------+----------------------+----------------------+
    | 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 1070    Off  | 00000000:01:00.0  On |                  N/A |
    |  0%   52C    P2    36W / 151W |    763MiB /  8117MiB |      5%      Default |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID   Type   Process name                             Usage      |
    |=============================================================================|
    |    0      1042      G   /usr/lib/xorg/Xorg                            18MiB |
    |    0      1073      G   /usr/bin/gnome-shell                          51MiB |
    |    0      1428      G   /usr/lib/xorg/Xorg                           167MiB |
    |    0      1558      G   /usr/bin/gnome-shell                         102MiB |
    |    0      2113      G   ...-token=24AA922604256065B682BE6D9A74C3E1    33MiB |
    |    0      3878      C   python                                       385MiB |
    +-----------------------------------------------------------------------------+
    

    在某些情况下,进程框可能会显示“不支持进程”之类的信息,这并不意味着您的 GPU 无法运行代码,但它不仅仅支持这种日志记录。

    【讨论】:

    • 出于某种原因,我发现 print(cuda.get_num_devices()) 即使在没有 GPU 的机器上也会返回 1。奇怪的是,dlib.DLIB_USE_CUDA 在非 GPU 盒 (False) 和 GPU 盒 (True) 上返回预期的默认值。
    【解决方案2】:

    如果 dlib.DLIB_USE_CUDA 为 true,则它使用 cuda,如果为 false,则不是。

    顺便说一句,这些步骤什么都不做,也不需要使用 python:

    $ mkdir build
    $ cd build
    $ cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
    $ cmake --build .
    

    只需运行 setup.py 即可。

    【讨论】:

    • dlib.DLIB_USE_CUDA 返回 False,这意味着它没有使用 GPU。那么我在上述步骤中做错了什么,为什么它没有使用 GPU。 @Davis King,你有什么暗示这可能是什么问题
    • 而且你提到的命令(上面)不是必需的,为什么我们不需要在编译setup.py之前构建dlib的c++文件(使用cmake)
    • 这些命令是否足以编译(重建)python API: git clone github.com/davisking/dlib.git cd dlib python install setup.py --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA --clean
    • 是的。 setup.py 做所有事情。这就是它的工作。阅读它的输出。它会告诉你它在做什么以及为什么。
    【解决方案3】:

    以下 sn-ps 已被简化为使用或检查 dlib 是否使用 GPU。

    首先,检查 dlib 是否识别您的 GPU。
    import dlib.cuda as cuda; print(cuda.get_num_devices());

    其次,dlib.DLIB_USE_CUDA 如果它是 false,只需通过以下方式允许它使用 GPU 支持
    dlib.DLIB_USE_CUDA = True.

    【讨论】:

    • 你确定dlib.DLIB_USE_CUDA = True 足以让 dlib 使用 GPU 支持吗?你能提供一个关于这个的链接吗?
    • 我怀疑dlib.DLIB_USE_CUDA是否可以显式设置
    猜你喜欢
    • 2018-06-17
    • 2018-11-23
    • 2020-07-06
    • 1970-01-01
    • 2022-01-27
    • 2020-08-12
    • 2019-04-12
    • 1970-01-01
    相关资源
    最近更新 更多