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