技術分享 | TensorRT詳細入門指北,如果你還不瞭解TensorRT,過來看看吧!

file Tensor是一個有助於在NVIDIA圖形處理單元(GPU)上高性能推理c++庫。它旨在與TesnsorFlow、Caffe、Pytorch以及MXNet等訓練框架以互補的方式進行工作,專門致力於在GPU上快速有效地進行網絡推理。

如今現有的一些訓練框架(例如TensorFlow)已經集成了TensorRT,因此可以將其用於加速框架中的推理。另外,TensorRT可以作爲用戶應用程序中的庫,它包括用於從Caffe,ONNX或TensorFlow導入現有模型的解析器,以及用於以編程方式(C++或Python API)構建模型。

一、TensorRT的好處 在訓練了神經網絡之後,TensorRT可以對網絡進行壓縮、優化以及運行時部署,並且沒有框架的開銷。TensorRT通過combines layers,kernel優化選擇,以及根據指定的精度執行歸一化和轉換成最優的matrix math方法,改善網絡的延遲、吞吐量以及效率。

對於深度學習推理中,有5個用於衡量軟件的關鍵因素:

  • 吞吐量
  • 效率
  • 延遲性
  • 準確性
  • 內存使用情況

TensorRT通過結合抽象出特定硬件細節的高級API和優化推理的實現來解決這些問題,以實現高吞吐量、低延遲和低設備內存佔用。

二、TensorRT適用於那些地方 通常,開發和部署一個深度學習模型的工作流程分爲了3個階段:

第一個階段是訓練模型【在該階段一般都不會使用TensorRT訓練任何模型】 第二個階段是開發一個部署的解決方案 第三個階段是使用開發的解決方案進行部署【即使用階段2中的解決方案來進行部署】

階段1:Training 在訓練階段,通常會先確定自己需要解決的問題,網絡的輸入輸出,以及網絡的損失函數,然後再設計網絡結構,接下來就是根據自己的需求去整理、擴充training data,validation data and test data。在訓練模型的過程中,我們一般都會通過監視模型的整個訓練流程來確定自己是否需要修改網絡的損失函數、訓練的超參數以及數據集的增強。最後我們會使用validation data對trained model進行性能評估。需要注意的是,在該階段一般都不會使用TensorRT訓練任何模型。

階段2:Developing A Deployment Solution 在這個階段,我們將會通過使用trained model來創建和驗證部署解決方案,該階段分爲以下幾個步驟:

1、首先需要考慮清楚神經網絡在系統中是如何進行工作的,根據需求中的優先事項設計出適應的解決方案。另一方面,由於不同系統之間存在多樣性的原因,我們在設計和實現部署結構時需要考慮很多方面的因素。【例如,是單個網絡還是多個網絡,需要哪些後處理步驟等等之內的因素】

2、當設計好解決方案後,我們便可以使用TensorRT從保存的網絡模型中構建一個inference engine。由於在training model期間可以選擇不同的framework,因此,我們需要根據不同框架的格式,使用相應的解析器將保存的模型轉換爲TensorRT的格式。具體的工作流程如下圖所示 file

3、model解析成功後,我們需要考慮優化選項——batch size、工作空間大小、混合精度和動態形狀的邊界,這些選項被選擇並指定爲TensorRT構建步驟的一部分,在此步驟中,您將基於網絡構建一個優化的推理引擎。

4、使用TensorRT創建inference engine後,我們需要驗證它是否可以復現原始模型的性能評估結果。如果我們選擇了FP32或FP16,那麼它與原始結果非常接近。如果選擇了INT8,那麼它與原始的結果會有一些差距。

5、一序列化格式保存inference engine-----called plan file

階段3:Deploying A Solution 該TensorRT庫將被鏈接到部署應用程序,當應用程序需要一個推理結果時將會調用該庫。爲了初始化inference engine,應用程序首先會從plan file中反序列化爲一個inference engine。另一方面,TensorRT通常是異步使用的,因此,當輸入數據到達時,程序調用帶有輸入緩衝區和TensorRT放置結果的緩衝區的enqueue函數。

三、TensorRT是如何工作的? 爲了優化模型的inference,TensorRT會根據網絡的定義執行優化【包括特定平臺的優化】並生成inference engine。此過程被稱爲構建階段,尤其是在嵌入式平臺上會消耗大量的時間,因此,一個典型的應用程序只會被構建一次engine,然後將其序列化爲plane file以供後續使用。【注意:生成的plane file 不能跨平臺或TensorRT 版本移植。另外,因爲plane file是明確指定GPU 的model,所以我們要想使用不同的GPU來運行plane file必須得重新指定GPU】

構建階段在layer graph上執行以下優化:

  • 消除沒有使用的outputs layer
  • 消除等同於沒有操作的operation
  • convolution,bias and ReLU的融合

把具有足夠相似的parameters和相同的source tensor的operation進行aggregation【例如1x1的convolution】 通過將輸出層定向到正確的最終目的來合併concatenate layer

四、TensorRT提供了哪些功能? 資料鏈接: https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html

  • End -

技術發展的日新月異,阿木實驗室將緊跟技術的腳步,不斷把機器人行業最新的技術和硬件推薦給大家。看到經過我們培訓的學員在技術上突飛猛進,是我們培訓最大的價值。如果你在機器人行業,就請關注我們的公衆號,我們將持續發佈機器人行業最有價值的信息和技術。 阿木實驗室致力於前沿IT科技的教育和智能裝備,讓機器人研發更高效!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章