TensorRT 7.2.1 开发概要(上)
TensorRT 7.2.1 開發(fā)概要(上)
Abstract
這個TysRR7.2.1開發(fā)者指南演示了如何使用C++和Python API來實現最常用的深層學習層。它展示了如何使用深度學習框架構建現有模型,并使用該模型使用提供的解析器構建一個TensorRT引擎。開發(fā)指南還提供了常見用戶任務的分步指令,例如創(chuàng)建TensorRT網絡定義、調用TensorRT builder、序列化和反序列化,以及如何用數據給引擎提供數據并執(zhí)行推理;同時使用C++或Python API。
有關先前發(fā)布的TensorRT開發(fā)人員文檔,請參閱TensorRT歸檔文件。
- What Is TensorRT?
NVIDIA?TensorRT的核心?
是一個C++庫,它有助于NVIDIA圖形處理單元(GPU)的高性能推理。它旨在與TensorFlow、Caffe、Pythorch、MXNet等訓練框架互補工作。它特別關注在GPU上快速高效地運行已經訓練過的網絡,以生成結果(一個在不同地方被稱為評分、檢測、回歸的過程,或推斷)。
一些訓練框架,如TensorFlow,已經集成了TensorRT,因此它可以用來加速框架內的推理。或者,TensorRT可以用作用戶應用程序中的庫。它包括用于從CAFE、ONNX或TensorFlow導入現有模型的分析器,以及以編程方式構建模型的C++和Python API。
Figure 1. TensorRT is a high-performance neural network inference
optimizer and runtime engine for production deployment.
TensorRT通過結合層和優(yōu)化內核選擇來優(yōu)化網絡,以提高延遲、吞吐量、能效和內存消耗。如果應用程序指定,它將額外優(yōu)化網絡,以較低的精度運行,進一步提高性能并減少內存需求。
下圖顯示了定義為部分高性能推理優(yōu)化器和部分運行時引擎的TensorRT。它可以接收在這些流行框架上訓練的神經網絡,優(yōu)化神經網絡計算,生成一個輕量級的運行時引擎(這是您唯一需要部署到生產環(huán)境中的東西),然后它將最大限度地提高這些GPU平臺上的吞吐量、延遲和性能。
Figure 2. TensorRT is a programmable inference accelerator.
TensorRT API包括最常見的深度學習層的實現。有關層的詳細信息,請參見TensorRT層。您還可以使用C++插件API或Python插件API來提供不經常使用或更創(chuàng)新的層的實現,這些層是TensorRT不支持的。
1.1. Benefits Of TensorRT
在訓練神經網絡之后,TensorRT可以將網絡壓縮、優(yōu)化和部署為一個運行時,而不需要框架的開銷。
TensorRT結合層,優(yōu)化內核選擇,并根據指定的精度(FP32、FP16或INT8)執(zhí)行標準化和轉換到優(yōu)化的矩陣數學,以提高延遲、吞吐量和效率。
對于深度學習推理,有5個關鍵因素用于衡量軟件:
吞吐量
一定時期內的產量。每臺服務器的吞吐量通常以推斷/秒或采樣數/秒來衡量,這對于數據中心的經濟高效擴展至關重要。
效率
每單位功率傳輸的吞吐量,通常用性能/瓦表示。效率是經濟高效的數據中心擴展的另一個關鍵因素,因為服務器、服務器機架和整個數據中心必須在固定的電源預算內運行。
延遲
執(zhí)行推理的時間,通常以毫秒為單位。低延遲對于提供快速增長的、基于實時推理的服務至關重要。
準確度
經過訓練的神經網絡傳遞正確答案的能力。對于基于圖像分類的用法,關鍵指標表示為前5個或前1個百分比。
內存使用
在網絡上進行推理所需保留的主機和設備內存取決于所使用的算法。這限制了在給定的推理平臺上可以運行哪些網絡和哪些網絡組合。這對于需要多個網絡且內存資源有限的系統尤其重要,例如用于智能視頻分析的級聯多類檢測網絡和多攝像頭、多網絡自動駕駛系統。
Alternatives to using TensorRT include:
Using the training framework itself to perform inference. Writing a custom application that is designed specifically to execute the network using low-level libraries and math operations.
使用訓練框架來執(zhí)行推理是很容易的,但是在給定的GPU上往往會導致比使用像TensorRT這樣的優(yōu)化解決方案可能要低得多的性能。訓練框架傾向于實現更通用的代碼,強調通用性,當它們被優(yōu)化時,優(yōu)化往往集中在有效的訓練上。
只需編寫一個自定義應用程序來執(zhí)行一個神經網絡可以獲得更高的效率,但是,它可能是相當勞動密集的,并且需要相當多的專業(yè)知識才能在現代GPU上達到高水平的性能。此外,在一個GPU上工作的優(yōu)化可能無法完全轉化為同一系列中的其他GPU,并且每一代GPU都可能引入新功能,這些功能只能通過編寫新代碼來利用。
TensorRT通過將抽象出特定硬件細節(jié)的高級API和優(yōu)化推理以實現高吞吐量、低延遲和低設備內存占用的實現來解決這些問題。
1.1.1. Who Can Benefit From TensorRT
TensorRT供工程師使用,這些工程師負責根據新的或現有的深度學習模型構建特性和應用程序,或者將模型部署到生產環(huán)境中。這些部署可以部署到數據中心或云中的服務器、嵌入式設備、機器人或車輛中,或運行在工作站上的應用軟件中。
TensorRT已成功應用于多種情況,包括:
機器人
公司銷售的機器人使用TensorRT運行各種計算機視覺模型,在動態(tài)環(huán)境中自動引導無人駕駛系統飛行。
自動駕駛汽車
TensorRT用于NVIDIA驅動器產品中的計算機視覺。
科學技術計算
一個流行的技術計算包嵌入了TensorRT,以實現神經網絡模型的高吞吐量執(zhí)行。
深度學習訓練和部署框架
TensorRT學習框架包括TensorRT和一些流行的MXNet流框架。有關TensorFlow和MXNet容器發(fā)行說明,請參閱TensorFlow發(fā)行說明和MXNet發(fā)行說明。
視頻分析
TensorRT被用于NVIDIA的DeepStream產品中,為復雜的視頻分析解決方案提供強大的支持,無論是在1-16個攝像頭的邊緣,還是在數據中心,數百甚至數千個視頻源可能會聚集在一起。
自動語音識別
TensorRT用于小型桌面/桌面設備上的語音識別。在云端提供了更大詞匯量的語音識別系統,該設備支持有限的詞匯量。
總結
以上是生活随笔為你收集整理的TensorRT 7.2.1 开发概要(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于TensorRT的BERT实时自然语
- 下一篇: TensorRT 7.2.1 开发概要(