【问题标题】:Can't detect GPU on tensorflow docker container launched from Pycharm无法检测从 Pycharm 启动的 tensorflow docker 容器上的 GPU
【发布时间】:2020-02-09 06:22:45
【问题描述】:

我正在尝试从 Pycharm IDE 中使用 tensorflow 提供的支持 gpu 的 docker 映像运行一个简单的 tensorflow 示例。一切正常,除了当我运行它时,tensorflow 没有从容器中检测到 GPU 并且默认返回到 CPU

tensorflow/stream_executor/cuda/cuda_driver.cc:318] failed call to cuInit:

运行: Ubuntu 18.04.3 码头工人 19.03.3 最新版本的 NVIDIA docker 支持:https://github.com/NVIDIA/nvidia-docker

我已经使用远程解释器功能设置了我的 Pycharm 项目来运行图像:tensorflow:latest-gpu

如果我从命令行运行容器:

docker run --gpus all --rm tensorflow/tensorflow:latest-gpu nvidia-smi

我明白了:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26       Driver Version: 430.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| 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 108...  Off  | 00000000:41:00.0  On |                  N/A |
| 28%   26C    P8     9W / 250W |    443MiB / 11177MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

..它告诉我 docker 安装、镜像和 nvidia docker 支持都可以。

现在当 Pycharm 运行容器时,它不包含“--gpus all”命令行选项。

如果我在没有 --gpus all 参数的情况下运行上述相同的命令:

docker run --rm tensorflow/tensorflow:latest-gpu nvidia-smi

我明白了:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"nvidia-smi\": executable file not found in $PATH": unknown.

所以这表明 Pycharm 没有添加标志作为罪魁祸首。

但是,根据以下文档:https://docs.docker.com/config/containers/resource_constraints/(GPU 底部) 环境变量 NVIDIA_VISIBLE_DEVICES=all 应该完成同样的事情。我确认即使没有 --gpus all 参数,这个环境变量也会被设置。

此外,似乎没有办法从 Pycharm 中添加额外的命令行参数。所以我被困住了。我觉得这个设置并不太奇特,希望我缺少一些基本的东西。

【问题讨论】:

  • 我在同一条船上。你找到解决办法了吗?
  • 不幸的是,我最终在本地安装了 CUDA 并在 pycharm 中设置了本地 venv。效果很好
  • 谢谢。我最终使用了 Visual Code。

标签: docker tensorflow pycharm nvidia-docker


【解决方案1】:

我在 pycharm 和 pytorch 上遇到过类似的问题。不知道为什么会这样,但我现在找到了一种解决方法,通过在脚本启动时进行以下调用:

import os
os.system('nvidia-smi') 

PS:我遇到的错误是

RuntimeError:来自 cudaGetDeviceCount() 的意外错误。在调用可能已经设置错误的 NumCudaDevices() 之前,您是否运行了一些 cuda 函数?错误 803:系统有不支持的显示驱动程序/cuda 驱动程序组合

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多