我正在构建一个Docker镜像,用于深度学习:
cuda:11.2.0-cudnn8-devel-ubuntu20.04
PYTHON_VERSION=3.7.9
对于这个任务,我需要3个依赖项来安装,但我找不到合适的版本。我得到的错误,当构建Docker镜像:
E:找不到'libnvinfer8'的版本'8.1.1.33-1+cuda11.2'E:未找到"libnvinfer dev"的版本"8.1.1.33-1+cuda11.2"E:未找到"libnvinfer-plugin8"的版本"8.1.1.33-1+cuda11.2">
我也在尝试其他版本,但没有成功,所以问题是:在哪里/如何找到适用于cuda 11.2和ubuntu 20.04的正确版本。有经验法则吗?
要检查tensorflow
安装所需的TensorRT版本:
>>> import tensorflow
>>> tensorflow.__version__
'2.8.0'
>>> from tensorflow.python.compiler.tensorrt import trt_convert as trt
>>> trt.trt_utils._pywrap_py_utils.get_linked_tensorrt_version()
(7, 2, 2)
>>> trt.trt_utils._pywrap_py_utils.get_loaded_tensorrt_version()
2022-03-24 08:59:15.415733: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64
最后一个命令显示您的系统中确实缺少libnvinfer.so
(您也可以使用ldconfig -p | grep libnv
来检查这一事实(。
要安装它(改编自Tensorflow的gpu.Dockerfile
(,请从上面的输出中获取TensorRT版本,在英伟达存储库中仔细检查它是否适用于CUDA版本,然后安装:
export LIBNVINFER=7.2.2 LIBNVINFER_MAJOR_VERSION=7 CUDA_VERSION=11.0
apt-get install -y libnvinfer${LIBNVINFER_MAJOR_VERSION}=${LIBNVINFER}-1+${CUDA_VERSION} libnvinfer-plugin${LIBNVINFER_MAJOR_VERSION}=${LIBNVINFER}-1+${CUDA_VERSION}
上面的最后一个Python命令现在应该开始工作了。如果再次出现类似错误,请仔细检查so文件位置(使用ldconfig -p | grep libnv
进行检查(是否包含在LD_LIBRARY_PATH
中。
还要仔细检查您的CUDA版本。在我的情况下,我运行的是docker.io/nvidia/cuda:11.5.1-cudnn8-runtime-ubuntu20.04
映像,它已经包含数学库,特别是libnvrtc.so.11.2
(因此对于英伟达存储库上比TensorRT支持的CUDA版本更新的CUDA(。在运行上面的apt-get
命令后,这一点变得很明显,该命令给出了以下输出:
The following packages have unmet dependencies:
libnvinfer7 : Depends: cuda-nvrtc-11-0 but it is not going to be installed
怀疑时:https://www.tensorflow.org/install/source#gpu
事实上,这就是答案,它就像一种魅力。。请访问官方网站了解已测试的构建配置
- tensorflow-2.5.0
- 库达:11.2.0
- PYTHON_VERSION=3.8.11
- libcudn8=8.1.1.33-1+cuda11.2
- libcudnn8 dev=8.1.1.33-1+cuda11.2