• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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配置本地镜像与容器的存储位置
    下一篇:Ubuntu使用nginx搭建webdav文件服务器的详细过程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    docker容器内安装TensorRT的问题 docker,容器,内,安装,TensorRT,