TensorRT 筆記 - 在 Conda 虛擬環境中安裝


完成時間:2022 年 2 月 24 日

最后修改:---

為什么要寫這篇博客(此部分可以跳過)

  因為一些原因,要用到 TensorRT 對訓練好的模型進行推理加速,官網的文檔全英文看得累啊,想找找現成的中文文檔看看。搜了一圈,要么安裝的版本都太老了,要么直接上來就一頓操作猛如虎,也不說為什么要這么做,寫的也不是很全。安裝過程中我也碰到了各種奇奇怪怪的坑,我已經掉進去了一次,坑里有我一個就夠了 -_-|||

  因為主要用的是 Python,所以這里是在 Ubuntu 20.04 LTS 上的 Anaconda 虛擬環境里安裝 TensorRT 的 Python API,如果有時間,還是推薦直接看一手的官方文檔

什么是 TensorRT

  TensorRT 是英偉達推出的一個工具,可以用來加速網絡模型的推理。一般的使用過程是從 TensorFlow 或 Pytorch 等的模型,轉換為 ONNX 格式的模型,再生成 TensorRT 的模型。ONNX 是微軟聯合 Facebook 開發的一種通用的模型格式,可以作為中間的橋梁,讓其他的深度學習框架也能讀取我們已經訓練好的模型。

安裝的環境

  TensorRT 官網介紹了許多種安裝方式,Windows 下用的是 zip 包的方式,linux 下就有很多種了,可以使用 tar 包安裝,這種方式可以多版本共存。這里使用的是 pip wheel 的安裝方式,目前只支持 linux 系統。Ubuntu 系統還可以使用 deb 包的方式安裝,但只能同時安裝一個版本,不同版本間不能共存,這種方式也有一堆的坑 → _→

操作系統是 Ubuntu 20.04 LTS,安裝的 TensorRT 版本是 8.2。TensorRT 支持 Python API 和 C++ API,使用 deb 或 tar 包的方式兩種 API 接口都會被包括。

必要的組件

  首先,最重要的是要有一塊英偉達的顯卡,而且正確的安裝了驅動。沒驅動和沒顯卡貌似在 TensorRT 看來都是一樣的,安裝時會提示找不到合適的版本。因為是在 Anaconda 的虛擬環境中安裝,這里我們不需要在系統上安裝 CUDA,conda 會自動在虛擬環境中安裝一個 CUDA 包,這個包只是完整 CUDA 庫的一個子集。

  Ubuntu 下安裝英偉達的顯卡驅動很方便,直接打開一個芯片圖案的程序 Additional Drivers,在里面把開源驅動切換成英偉達的驅動就好了。舊版本的 Ubuntu 需要重啟,似乎是要給內核里寫點東西,可以根據說明操作。

開始安裝

  目前 pip wheel 的方式只支持 Python 3.6 - 3.9,CUDA 11.x,因為我們不是在系統的 Python 里安裝,CUDA 版本暫時不用管。安裝前需要先確認 setuptools 和 pip 已經安裝,可以用 conda 的 list 命令列出特定的包:

1 conda list -f pip 2 conda list -f setuptools

   官方文檔上是先使用命令  python3 -m pip install --upgrade setuptools pip  升級它們,但有時候可能升級失敗,導致 pip 先被卸載,但新版本沒能安裝成功,后面使用 pip 時就會提示 "pip-script.py is not present",這個時候要重新安裝 pip,可以使用 easy_install 或 conda 命令安裝:

1 easy_install pip

  之后需要安裝 nvidia-pyindex 包,這其實是一個 pip 源,用來連接英偉達的服務器下載我們需要的各種包。所以如果安裝的時候,pip 下載很慢也只能等着,只能從英偉達的服務器下載,pip 換源也沒用。安裝 nvidia-pyindex 包用下面這條命令:

1 pip install nvidia-pyindex

  安裝裝好之后,就可以開始安裝 TensorRT 了。使用下面的命令:

1 pip install --upgrade nvidia-tensorrt

  這條命令會安裝或者更新已有的 TensorRT,同時會自動下載安裝 CUDA 和 cuDNN,它們是 TensorRT 的依賴包。因為安裝的時候沒有指定版本號,這里默認都會安裝最新的版本,CUDA 的版本可能比我們實際支持的版本更高。在終端輸入  nvidia-smi 可以查看顯卡狀態,上面會顯示支持的 CUDA 版本。使用 deb 方式安裝時,要在系統里安裝 CUDA,要和這里的版本號一致,安裝在虛擬環境里時就不需要了。

  安裝的時候如果出現下面的錯誤信息,說明沒用被正確的安裝,除了可能是 Python 版本不對外,也有可能是驅動沒裝上

1 This package can be installed as: 2 ``` 3 $ pip install nvidia-pyindex 4 $ pip install nvidia-tensorrt 5 ```

  裝好后,可以測試一下:

1 python3 2 >>> import tensorrt 3 >>> print(tensorrt.__version__) 4 >>> assert tensorrt.Builder(tensorrt.Logger())

  如果安裝正確,print() 函數會打印出 TensorRT 的版本,后面的 assert 命令不會有任何輸出。

總結

  使用 pip wheel 安裝 TensorRT 算是最簡單的一種方式了,目前只支持 linux 系統和 Python 3.6 - 3.9 的版本,只需要正確的安裝了顯卡驅動程序就可以,其他的依賴包都會自動安裝。英偉達官方提供了許多的例子,如果需要運行它們,還要安裝 onnx 或 pycuda 等組件,因為虛擬環境里的 CUDA 可能不是完整的包,不支持 nvcc,就需要在系統里安裝完整的 CUDA,並且要求 pycuda 在它之后再安裝,不然 pycuda 無法找到 CUDA API。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM