docker容器内安装TensorRT的问题

 更新时间:2021年05月17日 11:40:57   作者:Arnold-FY-Chen  
很多朋友在使用docker容器内安装TensorRT的时候,遇到一大堆棘手的问题,不知道怎么处理好了,今天小编就docker安装TensorRT的问题给大家详细介绍下,感兴趣的朋友一起看看吧

Ubuntu上卸载已安装的版本:

   sudo apt-get purge "libnvinfer*"

如果想把安装文件都删掉以释放空间,执行:

   dpkg -l | grep tensorrt

查看到安装包名,假如是nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.1.6-ga-20201007,则执行:

sudo dpkg -P nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.1.6-ga-20201007

这样就把/var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.1.6-ga-20201007_1-1这样的目录文件删掉了。

在Ubuntu主机上安装TensorRT按照https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing-debian 做即可,下载安装repo的deb文件后执行下面的步骤即可,假如安装适配CUDA10.2的TensorRT7.2.1版,执行:

sudo dpkg -i nv-tensorrt-repo-ubuntu1804-cuda10.2-trt7.2.1.6-ga-20201006_1-1_amd64.deb

   sudo apt-key add /var/nv-tensorrt-repo-cuda10.2-trt7.2.1.6-ga-20201006/7fa2af80.pub

   sudo apt-get update

   sudo apt-get install tensorrt

如果是在docker容器内安装就不能使用上面的步骤了,否则在安装最后一步时总是会遇到类似如下的错误:

The following packages have unmet dependencies:
 tensorrt : Depends: libnvinfer-dev (= 7.2.1-6+cuda10.2) but 8.0.0-1+cuda11.3 is to be installed
            Depends: libnvinfer-plugin-dev (= 7.2.1-6+cuda10.2) but 8.0.0-1+cuda11.3 is to be installed
            Depends: libnvparsers-dev (= 7.2.1-6+cuda10.2) but 8.0.0-1+cuda11.3 is to be installed
            Depends: libnvonnxparsers-dev (= 7.2.1-6+cuda10.2) but 8.0.0-1+cuda11.3 is to be installed
            Depends: libnvinfer-samples (= 7.2.1-6+cuda10.2) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

容器内分明安装的是CUDA10.2,TensorRT也是7.2.1.6+cuda10.2版的,但是就总是报上面类似的错误,换成其他版本也是一样的继续报类似错,折腾得很郁闷,后来仔细看NVIDIA的文档发现

看来在docker容器内安装TensorRT得用另外的办法,但是呢,用Network Repo方式安装去指定安装一堆libnvinfer*库(根据需要修改8为7)是在是麻烦:

而且装完后后来编译程序时发现还有这样那样的问题,哪怕是指定版本的方式也是同样有问题:

又来回折腾了一阵还是有错,最后往下看发现了这个最简单可靠的方式:

也就是说,最前面报那种莫名其妙的错,其实是因为docker容器内配置有NVIDIA CUDA network repository,而手工下载安装nv-tensorrt-repo-ubuntu1804-cuda10.2-trt7.2.1.6-ga-20201006_1-1_amd64.deb这样的TensorRT local repository后,使用sudo apt-get install tensorrt安装的话由于有两种源会导致包冲突,只需要在/etc/apt/preferences.d/下增加个文件local-repo,内容是:

Package: *
Pin: origin ""
Pin-Priority: 1001

然后执行

 sudo apt-get update
 sudo apt-get install tensorrt

就顺利安装完成local repo对应的版本cuda10.2-trt7.2.1.6,然后编译程序也没见什么错误了!

感觉NVIDIA的文档有的地方写得真的是烂,不能针对每种环境安装分别清楚无误完整地说明白么,非要把很多搅合在一起让用户自己去蹚一个个坑

另外,如果是使用的RTX30序列的GPU,CUDA版本需要 >= 11.1,不然,虽然TensorRT可以安装,但是实际运行时可能会报下面这样的错误:

[W] [TRT] Half2 support requested on hardware without native FP16 support, performance will be negatively affected.
[E] [TRT] ../rtSafe/cuda/caskUtils.cpp (98) - Assertion Error in trtSmToCask: 0 (Unsupported SM.)

11.1.0虽然可以用,但是编译caffe或darknet等某些程序时可能会有下面的错误:

    nvcc fatal: Unsupported gpu architecture 'compute_86'

所以对于RTX30序列的GPU,最好安装CUDA的版本 >= 11.1.1

以上就是docker容器内安装TensorRT的问题的详细内容,更多关于docker安装TensorRT的资料请关注脚本之家其它相关文章!

相关文章

  • Docker中如何删除image(镜像)的方法

    Docker中如何删除image(镜像)的方法

    这篇文章主要介绍了Docker中如何删除image(镜像)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Docker镜像瘦身大小从1.43 GB减少到22.4MB

    Docker镜像瘦身大小从1.43 GB减少到22.4MB

    本文主要介绍了 Docker镜像瘦身大小从1.43 GB减少到22.4MB,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Dockerfile及新型容器镜像构建技术详解

    Dockerfile及新型容器镜像构建技术详解

    本文详细介绍了dockerfile以及新型容器镜像构建技术,文章中通过详细的代码示例介绍了dockerfile生成容器镜像器的全过程,感兴趣的小伙伴可以参考一下
    2023-04-04
  • Docker 命令教程(附中文解释)

    Docker 命令教程(附中文解释)

    这篇文章主要介绍了Docker 命令教程的相关资料,在学习Docker的过程中,特地把所以命令实验了一番并整理,希望大家尽快掌握此部分的知识,有需要的小伙伴可以参考下
    2016-10-10
  • Docker 动态修改容器端口映射的方法

    Docker 动态修改容器端口映射的方法

    这篇文章主要介绍了Docker 动态修改容器端口映射的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 关于Jenkins + Docker + ASP.NET Core自动化部署的问题(避免踩坑)

    关于Jenkins + Docker + ASP.NET Core自动化部署的问题(避免踩坑)

    这篇文章主要介绍了关于Jenkins + Docker + ASP.NET Core自动化部署的问题,本文给大家带来了docker安装方法及一些注意事项,内容有点小长,希望朋友们耐心看完,一定有收获
    2021-05-05
  • docker-swarm教程之安全保护加密数据的方法详解

    docker-swarm教程之安全保护加密数据的方法详解

    默认情况下,集群管理器使用的raft 算法的日志在磁盘上加密,这种静态加密可保护服务配置和数据免受访问加密Raft日志的攻击者的攻击,因此引入了Docker secret功能,来保证加密文件的安全,本文将给大家详细的介绍一下如何安全的保护加密数据
    2023-08-08
  • docker commit命令的具体使用

    docker commit命令的具体使用

    本文主要介绍了docker commit命令的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 详解Docker镜像与容器的常见操作

    详解Docker镜像与容器的常见操作

    这篇文章主要介绍了详解Docker镜像与容器的常见操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Docker拉取镜像的完整步骤

    Docker拉取镜像的完整步骤

    这篇文章主要给大家介绍了关于Docker拉取镜像的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09

最新评论