docker容器內(nèi)安裝TensorRT的問題
Ubuntu上卸載已安裝的版本:
sudo apt-get purge "libnvinfer*"
如果想把安裝文件都刪掉以釋放空間,執(zhí)行:
dpkg -l | grep tensorrt
查看到安裝包名,假如是nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.1.6-ga-20201007,則執(zhí)行:
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主機(jī)上安裝TensorRT按照https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing-debian 做即可,下載安裝repo的deb文件后執(zhí)行下面的步驟即可,假如安裝適配CUDA10.2的TensorRT7.2.1版,執(zhí)行:
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容器內(nèi)安裝就不能使用上面的步驟了,否則在安裝最后一步時總是會遇到類似如下的錯誤:
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.
容器內(nèi)分明安裝的是CUDA10.2,TensorRT也是7.2.1.6+cuda10.2版的,但是就總是報上面類似的錯誤,換成其他版本也是一樣的繼續(xù)報類似錯,折騰得很郁悶,后來仔細(xì)看NVIDIA的文檔發(fā)現(xiàn)

看來在docker容器內(nèi)安裝TensorRT得用另外的辦法,但是呢,用Network Repo方式安裝去指定安裝一堆libnvinfer*庫(根據(jù)需要修改8為7)是在是麻煩:

而且裝完后后來編譯程序時發(fā)現(xiàn)還有這樣那樣的問題,哪怕是指定版本的方式也是同樣有問題:

又來回折騰了一陣還是有錯,最后往下看發(fā)現(xiàn)了這個最簡單可靠的方式:

也就是說,最前面報那種莫名其妙的錯,其實(shí)是因?yàn)閐ocker容器內(nèi)配置有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安裝的話由于有兩種源會導(dǎo)致包沖突,只需要在/etc/apt/preferences.d/下增加個文件local-repo,內(nèi)容是:
Package: * Pin: origin "" Pin-Priority: 1001
然后執(zhí)行
sudo apt-get update sudo apt-get install tensorrt
就順利安裝完成local repo對應(yīng)的版本cuda10.2-trt7.2.1.6,然后編譯程序也沒見什么錯誤了!
感覺NVIDIA的文檔有的地方寫得真的是爛,不能針對每種環(huán)境安裝分別清楚無誤完整地說明白么,非要把很多攪合在一起讓用戶自己去蹚一個個坑
另外,如果是使用的RTX30序列的GPU,CUDA版本需要 >= 11.1,不然,雖然TensorRT可以安裝,但是實(shí)際運(yùn)行時可能會報下面這樣的錯誤:
[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容器內(nèi)安裝TensorRT的問題的詳細(xì)內(nèi)容,更多關(guān)于docker安裝TensorRT的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Linux下定時自動備份Docker中所有SqlServer數(shù)據(jù)庫的腳本
這篇文章主要介紹了Linux下定時自動備份Docker中所有SqlServer數(shù)據(jù)庫?,編寫shell文件給出一個備份的范例,在Linux添加定時任務(wù),通過下列命令來檢測并安裝這個服務(wù),需要的朋友可以參考下2022-09-09
Docker內(nèi)部MySQL如何開啟binlog日志
這篇文章主要介紹了Docker內(nèi)部MySQL如何開啟binlog日志問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
如何使用Docker部署Xxl-Job分布式任務(wù)調(diào)度中心
XXL-Job是一個開源的分布式任務(wù)調(diào)度中心,它提供了一個可視化的任務(wù)管理界面,可以方便地創(chuàng)建、編輯和監(jiān)控任務(wù),本文詳細(xì)的講解了如何使用Docker部署xxl-job分布式任務(wù)調(diào)度服務(wù),感興趣的朋友跟隨小編一起看看吧2024-03-03
在Ubuntu下通過Docker部署MySQL服務(wù)器的詳細(xì)步驟
Docker 是一個開源的容器化平臺,能夠讓開發(fā)者將應(yīng)用程序及其依賴打包成一個輕量級的、可移植的容器,MySQL 是一個流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),本文給大家介紹了在Ubuntu下通過Docker部署MySQL服務(wù)器的詳細(xì)步驟,需要的朋友可以參考下2025-01-01
Docker中數(shù)據(jù)卷(volume)管理的兩種方式
數(shù)據(jù)卷有兩種形式,一種是容器中的某個目錄,它可以被別的容器引用,只要有一個容器引用了這個數(shù)據(jù)卷,數(shù)據(jù)就不會被刪除;另一種數(shù)據(jù)卷是將容器中的數(shù)據(jù)卷和宿主機(jī)的目錄進(jìn)行掛載。 數(shù)據(jù)卷可以在多個容器之間共享,修改數(shù)據(jù)卷不會影響鏡像2021-07-07

