TensorRT 7.2.1开发初步
TensorRT 7.2.1開發初步
TensorRT 7.2.1開發人員指南演示了如何使用C ++和Python API來實現最常見的深度學習層。它顯示了如何采用深度學習框架構建現有模型,并使用該模型通過提供的解析器構建TensorRT引擎。開發人員指南還提供了針對常見用戶任務的分步說明,例如創建TensorRT網絡定義,調用TensorRT構建器,序列化和反序列化以及如何向引擎提供數據和執行推理;同時使用C ++或Python API。
有關先前發布的TensorRT開發人員文檔,請參見TensorRT存檔。
1.什么是TensorRT?
NVIDIA的核心? TensorRT?是有助于在NVIDIA圖形處理單元(GPU)的高性能推理一個C ++庫。它旨在與TensorFlow,Caffe,PyTorch,MXNet等訓練框架以互補的方式工作。它專門致力于在GPU上快速有效地運行已經受過訓練的網絡,以生成結果(過程在各個地方都稱為評估,檢測,回歸或推斷)。
一些訓練框架(例如TensorFlow)已經集成了TensorRT,因此可以將其用于加速框架內的推理。另外, TensorRT可以用作用戶應用程序中的庫。它包括用于從Caffe,ONNX或TensorFlow導入現有模型的解析器,以及用于以編程方式構建模型的C ++和Python API。
圖1. TensorRT是用于生產部署的高性能神經網絡推理優化器和運行時引擎。
TensorRT通過融合層和優化內核選擇來優化網絡,以改善延遲,吞吐量,能效和內存消耗。如果應用程序指定,將另外優化網絡以使其以較低的精度運行,從而進一步提高性能并減少內存需求。
下圖顯示TensorRT定義為部分高性能推理優化器和部分運行時引擎。它可以吸收在這些流行框架上訓練過的神經網絡,優化神經網絡計算,生成輕量級運行時引擎(這是唯一需要部署到生產環境中的東西),然后它將使吞吐量,延遲最大化以及這些GPU平臺上的性能。
圖2. TensorRT是可編程的推理加速器。
TensorRT API包括最常見的深度學習層實現。有關圖層的更多信息,請參見TensorRT圖層。還可以使用C ++插件API或Python插件API為TensorRT不立即支持的,不常用或更具創新性的層提供實現。
1.1. TensorRT的好處
在訓練了神經網絡之后,TensorRT使網絡可以作為運行時進行壓縮,優化和部署,而無需框架開銷。
TensorRT根據指定的精度(FP32,FP16或INT8)組合各層,優化內核選擇,并執行規范化和轉換為優化的矩陣數學運算,以改善延遲,吞吐量和效率。
對于深度學習推理,有五個用于衡量軟件的關鍵因素:
吞吐量
給定時間段內的產出量。每臺服務器的吞吐量通常以推斷/秒,或樣本/秒來衡量,對于數據中心的經濟高效擴展至關重要。
效率
每單位功率交付的吞吐量量,通常表示為性能/瓦特。效率是經濟高效地擴展數據中心的另一個關鍵因素,因為服務器,服務器機架和整個數據中心必須在固定的功率預算內運行。
推理時間
執行推理的時間,通常以毫秒為單位。低延遲對于提供快速增長的實時基于推理的服務至關重要。
準確性
受過訓練的神經網絡提供正確答案的能力。對于基于圖像分類的用法,關鍵指標表示為前5個或前1個百分比。
內存使用情況
需要保留以在網絡上進行推理的主機和設備內存取決于所使用的算法。這限制了哪些網絡以及網絡的哪些組合可以在給定的推理平臺上運行。這對于需要多個網絡且內存資源有限的系統尤其重要,例如在智能視頻分析和多攝像機,多網絡自動駕駛系統中使用的級聯多級檢測網絡。
使用TensorRT的替代方法包括:
? 使用訓練框架本身執行推斷。
? 編寫專門設計用于使用低級庫和數學運算來執行網絡的自定義應用程序。
使用訓練框架執行推理很容易,但是與使用TensorRT之類的優化解決方案相比,給定GPU上的性能往往低得多。訓練框架傾向于實施強調通用性的通用代碼,優化往往集中在有效的訓練上。
編寫僅用于執行神經網絡的自定義應用程序,可以獲得更高的效率。但是,這可能會非常費力,并且需要大量專業知識才能在現代GPU上達到較高的性能水平。此外,在一個GPU上進行的優化可能無法完全轉換為同一系列中的其他GPU,并且每一代GPU都可能引入只能通過編寫新代碼來利用的新功能。
TensorRT通過結合抽象出特定硬件細節的高級API和優化推理的實現來解決這些問題,以實現高吞吐量,低延遲和低設備內存占用。
1.1.1. TensorRT中受益對象
TensorRT供負責基于新的或現有的深度學習模型,構建功能和應用程序,或將模型部署到生產環境中的工程師使用。這些部署可能會在數據中心或云中的服務器,嵌入式設備,機器人/車輛,或將在工作站上運行的應用程序軟件中。
TensorRT已在各種場景中成功使用,包括:
機器人
使用TensorRT的機器人來運行各種計算機視覺模型,以自動引導在動態環境中飛行的無人機系統。
自動駕駛汽車
TensorRT用于支持NVIDIA Drive產品中的計算機視覺。
科技計算
TensorRT嵌入了一種流行的技術計算軟件包,可實現神經網絡模型的高吞吐量執行。
深度學習訓練和部署框架
TensorRT包含在幾種流行的深度學習框架中,包括TensorFlow和MXNet。有關TensorFlow和MXNet容器發行說明,請參見TensorFlow發行說明和 MXNet發行說明。
視頻分析
TensorRT在使用NVIDIA的DeepStream產品成熟的視頻分析解決方案都在1- 16種攝像頭資料,并在數據中心,其中視頻資料的大量數據集。
自動語音識別
TensorRT用于在小型臺式/臺式設備上支持語音識別。設備上支持有限的詞匯表,而云中提供了更大的詞匯表語音識別系統。
1.2. TensorRT適合哪里?
通常,用于開發和部署深度學習模型的工作流經歷三個階段。
? 第一階段是訓練
? 第二階段正在開發部署解決方案
? 第三階段是該解決方案的部署
階段1:訓練
在訓練階段,數據科學家和開發人員將首先描述要解決的問題,并決定將使用的精確輸入,輸出和損失函數。還將收集,整理,擴充并可能標記訓練,測試和驗證數據集。然后將設計網絡結構并訓練模型。在訓練期間,監視學習過程,該過程可能會提供反饋,這將導致損失函數修改,獲取或增加訓練數據。此過程結束時,將驗證模型性能并保存經過訓練的模型。DGX-1? ,Titan或Tesla數據中心GPU。
在訓練階段的任何階段通常都不會使用TensorRT。
階段2:開發部署解決方案
在第二階段,數據科學家和開發人員將從成熟模型開始,并使用該成熟的模型創建和驗證部署解決方案。將這一階段分解為若干步驟,將獲得:
-
考慮一下神經網絡在更大的系統中是如何工作的,并設計和實施適當的解決方案。可能包含神經網絡的系統范圍千差萬別。示例包括:
o 車輛中的自動駕駛系統
o 公共場所或公司校園中的視頻安全系統
o 消費者設備的語音接口
o 工業生產線自動化質量保證系統
o 提供產品推薦的在線零售系統
o 提供娛樂篩選器的消費者Web服務,用戶可以將其應用于上載的圖像。
確定優先事項。考慮到可以實現的不同系統的多樣性,在設計和實現部署體系結構時可能需要考慮很多因素。
o 有一個或多個網絡?例如,是否在開發基于單個網絡的功能或系統(人臉檢測),或者系統也不是由不同模型的混合或級聯組成,或者可能不是由更廣泛的,可以提供收集模型的設備所組成?由最終用戶提供?
o 將使用什么設備或計算元素來運行網絡?CPU,GPU或其它?如果模型要在GPU上運行,單一類型的GPU,還是需要設計一個可以在各種GPU上運行的應用程序?
o 數據如何到達模型?什么是數據管道?數據是來自攝像頭或傳感器,來自一系列文件,還是通過網絡連接上傳?
o 將進行哪些預處理?數據將以什么格式輸入?如果是圖像,是否需要裁剪,旋轉?如果是文本,它是什么字符集?是否允許所有字符作為模型的輸入?是否有特殊令牌?
o 有什么延遲和吞吐量要求?
o 可以將多個請求一起批處理嗎?
o 是否需要一個網絡的多個實例來實現所需的整體系統吞吐量和延遲?
o 將如何處理網絡的輸出?
o 需要哪些后處理步驟?
TensorRT提供了一個快速,模塊化,緊湊,健壯,可靠的推理引擎,可以支持部署架構內的推理需求。 -
數據科學家和開發人員定義了推理解決方案的體系結構,從而確定優先級之后,使用TensorRT從保存的網絡中構建了推理引擎。有多種方法可以執行此操作,具體取決于所使用的訓練框架和網絡體系結構。一般情況下,需要保存的神經網絡,并從它的保存格式解析成TensorRT使用ONNX解析器(見左側圖3),來自Caffe 解析器或UFF解析器。
圖3. ONNX Workflow V1
-
解析網絡后,考慮優化選項-批處理大小,工作空間大小,混合精度以及動態形狀上的邊界這些選項是在TensorRT構建步驟中選擇和指定的,可以在其中基于網絡構建優化的推理引擎。本文的后續部分提供了詳細的說明和工作流這一部分的許多示例,將模型解析為TensorRT并選擇了優化參數(請參見圖3)。
-
使用TensorRT創建推理引擎后,將需要驗證它是否可以重現訓練過程中測量的模型結果。如果選擇了FP32或FP16,則它應與結果非常接近。如果選擇了INT8,則在訓練過程中獲得的準確度與推理準確度之間可能會有很小的差距。
-
以序列化格式寫出推理引擎。這也稱為調度文件。
階段3:部署解決方案
該TensorRT庫將被鏈接到部署應用程序,將調用推斷結果的庫。要初始化推理引擎,應用程序將首先將模型從調度文件中反序列化為推理引擎。
TensorRT通常異步使用,因此,當輸入數據到達時,程序將使用輸入緩沖區和TensorRT,將結果放入其中的緩沖區調輸入函數。
總結
以上是生活随笔為你收集整理的TensorRT 7.2.1开发初步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Turing渲染着色器网格技术分析
- 下一篇: 2D池化IPoolingLayer