背景
tensorflow安装过程很痛苦,解决了不能识别gpu问题后,又出现“tf-trt warning: could not find tensorrt”,关于这个问题官方也没有对应的解决办法。不断折腾过程中偶然发现了解决办法,做个记录,也为遇到相同问题的同行者提供参考
关注tensorflow各依赖项的版本对应关系
安装前请先参考 tensorflow官网 关于其依赖关系的版本对应关系,否则各种意外需要填入无尽的时间成本:
确定目标版本
安装tensorflow前,本文设备环境如下表:
类目 | 版本 |
---|---|
ubuntu | 20.04 |
显卡驱动 | 555.42.06 |
cuda | 12.5 |
cuda toolkit | 12.2 |
cudnn | 8.9.7 |
tensorrt | 10.2 |
python | 3.10 |
因此,基于上述官网版本关系,本文安装的tensorflow的目标版本为“2.15”
读者请参考官网版本依赖找出自身设备环境的版本关系,以确定tensorflow的目标版本
安装tensorflow
安装依赖
pip install grpcio
tensorflow
pip install --upgrade pip
pip install "tensorflow[and-cuda]==2.15" --extra-index-url https://pypi.nvidia.com
随后输入命令验证:
python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('gpu'))"
大概率会出现“trt warning: could not find tensorrt”:
解决办法
把调试信息打开,查看找不到tensorrt的具体输出,在终端输入命令:
export tf_cpp_max_vlog_level=3
随后再次运行官网验证命令:
python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('gpu'))"
很幸运,我们能看到在“trt warning: could not find tensorrt”信息前,有提示找不到“libnvinfer.so.8.6.1”和“libnvinfer_plugin.so.8.6.1”
有了这个提示基本上就有解决思路了,首先找找设备上是否有这两个lib文件,通过搜索发现目录“/usr/lib/x86_64-linux-gnu”和“${home}/.local/python3.10/site-packages/tensorrt_libs”都有,且都是之前确认的版本为10.2的tensorrt:
剩下就是将这两个文件喂给tensorflow,可以通过创建symbo link的形式,创建到目录“/usr/lib”下,输入命令:
sudo ln ~/.local/lib/python3.10/site-packages/tensorrt_libs/libnvinfer.so.10 /usr/lib/libnvinfer.so.8.6.1
sudo ln ~/.local/lib/python3.10/site-packages/tensorrt_libs/libnvinfer_plugin.so.10 /usr/lib/libnvinfer_plugin.so.8.6.1
最后,再次输入运行官网验证命令查看是否解决问题:
python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('gpu'))"
顺利的话,应该不再会看到“trt warning: could not find tensorrt”信息的提示:
总结
记录下tensorflow填坑过程,希望能帮助到有相同问题的伙伴,如有描述不清楚和不正确的地方,欢迎指正:xinjue.zou.whi@gmail.com
发表评论