Tensorflow/nvidia/cuda docker 版本不匹配

Posted

技术标签:

【中文标题】Tensorflow/nvidia/cuda docker 版本不匹配【英文标题】:Tensorflow/nvidia/cuda docker mismatched versions 【发布时间】:2019-08-18 18:08:40 【问题描述】:

我正在尝试将 tensorflow 和 nvidia 与 docker 一起使用,但遇到以下错误:

docker run --runtime=nvidia -it --rm tensorflow/tensorflow:latest-gpu python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"

docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:344:启动容器进程导致“process_linux.go:424:容器初始化导致\”process_linux.go:407:运行预启动挂钩 1 导致 \\ “错误运行钩子:退出状态1,标准输出:,标准错误:执行命令:[/usr/bin/nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig.real --device=all --compute --utility --require=cuda>=10.0 brand=tesla,driver>=384,driver

我在尝试运行 nvidia-smi 时遇到类似错误:

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

但是当尝试使用 cuda:9.0-base 运行 nvidia-smi 时,它就像一个魅力:

docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi

我是否需要确保 cuda 10 可以工作,或者我可以使用 cuda 9 运行 tensorflow?以及如何使用 cuda:9.0-base 运行 tensorflow 的 docker 映像? (仍然是 docker newby)。

非常感谢!

【问题讨论】:

【参考方案1】:

好的,我想我终于开始弄清楚我机器上的问题了。

tensorflow 镜像不关心 cuda 镜像版本,它不使用 docker cuda 镜像。它关心我的 nvidia 驱动程序,因为它在 tensorflow 图像中集成了 CUDA。

(与我当前的驱动程序一起使用的 docker cuda 映像是 cuda:9.0)

这意味着我必须找到与我的驱动程序 (390.116) 一起使用的 tensorflow 映像,或者更新驱动程序。

我用 tensorflow:1.12.0-gpu-py3 尝试了同样的命令,没有任何问题。

【讨论】:

添加到您的答案中。每个级别的 CUDA 附带的 nvidia-driver 可以与任何具有该级别 CUDA 或旧级别 CUDA 的容器一起使用。使用新的 nvidia-driver 和旧的 CUDA 级别将起作用。使用较旧的 nvidia-driver 和较新的 CUDA 级别将无法正常工作。 tensorflow-gpu 与特定的 CUDA 版本相关联,因此它确实关心 cuda 版本。您必须拥有正确的 CUDA 版本,并且需要支持该 CUDA 版本的驱动程序。您的 docker 映像“无关紧要”,因为它已经安装了必要的 CUDA 版本。一个特定的 CUDA 版本有 a minimum driver version required(向下滚动到表 1),但它可以与比它更新的驱动程序一起使用。 是的,这就是我的意思,但没有正确解释。将编辑我的答案。

以上是关于Tensorflow/nvidia/cuda docker 版本不匹配的主要内容,如果未能解决你的问题,请参考以下文章

.do是啥格式,要怎么打开

do…while循环

need to do 和 need do的区别

求一首女生独唱的歌中有唱到do、do do do dore、mi、fa、sol、la、si

command to do还是doing

do, not do