docker中tensorflow无法调用GPU

主机中,运行nvidia-smi查询到的信息为:

 NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2

0x1

项目中build docker 的文档,需要pull的nvidia docker版本是10.01

FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu16.04

生成的docker,导入到主机中,程序运行正常,但GPU显存和使用率均为极低,可以判断为没有调起GPU。

0x2

将nvidia docker的版本改为10.2,重新生成一次docker,导入主机,程序运行正常,但依然没有使用到GPU。

0x3

查看TensorFlow官网的文档,得到如下信息(https://www.tensorflow.org/install/source#gpu)

GPU

版本Python 版本编译器构建工具cuDNNCUDA
tensorflow-2.6.03.6-3.9GCC 7.3.1Bazel 3.7.28.111.2
tensorflow-2.5.03.6-3.9GCC 7.3.1Bazel 3.7.28.111.2
tensorflow-2.4.03.6-3.8GCC 7.3.1Bazel 3.1.08.011.0
tensorflow-2.3.03.5-3.8GCC 7.3.1Bazel 3.1.07.610.1
tensorflow-2.2.03.5-3.8GCC 7.3.1Bazel 2.0.07.610.1
tensorflow-2.1.02.7、3.5-3.7GCC 7.3.1Bazel 0.27.17.610.1
tensorflow-2.0.02.7、3.3-3.7GCC 7.3.1Bazel 0.26.17.410.0

使用用python的pip查询一下安装到docker里的tensorflow版本,是最新的2.6.2,由上述资料可知,它使用的cuda是11.2版本,跟docker内的cuda10.1/10.2有冲突,问题似乎出在这里了。再检查build docker的文档,在一个include文件里,有列出了tensorflow的版本要求 

tensorflow-gpu>=2.2.0,<2.7.0

官方编译的版本没有cuda 10.2 的版本,尝试使用10.1的 tensorflow 2.3.0。标准操作是将tensorflow版本要求改为

tensorflow-gpu==2.3.0

但重新生成docker比较花时间,决定使用手工降级tensorflow的方法试验一下。本项目涉及的相关库如下,不如项目可能有所差异:

gast-0.3.3 h5py-2.10.0 numpy-1.18.5 scipy-1.4.1 tensorflow-estimator-2.3.0 tensorflow-gpu-2.3.0

使用python -m pip download tensorflow-gpu == 2.3.0,会下载它依赖的所有库。

0x4 

在docker中,将tensorflow 从2.6.2降级到2.3.0后,程序运行正常,GPU也能正常调用了。也就是说,docker中安装的cuda版本必须要和tensorflow编译包中的依赖版本一致,但不必跟主机中的cuda版本一致。主机中的cuda版本高于docker版本是可以的,但低于docker版本效果如何,没有继续进行验证了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值