日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tensorrt轻松部署高性能dnn推理_基于TensorRT车辆实时推理优化

發(fā)布時間:2025/3/12 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tensorrt轻松部署高性能dnn推理_基于TensorRT车辆实时推理优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

基于TensorRT車輛實時推理優(yōu)化

Optimizing NVIDIA TensorRT Conversion for Real-time Inference on Autonomous Vehicles

自動駕駛系統(tǒng)使用各種神經(jīng)網(wǎng)絡模型,這些模型要求在GPU上進行極其精確和高效的計算。Zoox是一家全新開發(fā)robotaxis的初創(chuàng)公司,充分利用了NVIDIA硬盤的高性能、節(jié)能計算功能。最近,Zoox在舊金山發(fā)布了一個一小時的全自動駕駛,詳細展示了他們的AI堆棧。

與TensorFlow相比,NVIDIA TensorRT提供了顯著的加速(fp32為2-6x,Zoox網(wǎng)絡為9-19x),支持使用CUDA流的異步和并發(fā)推理能力。Zoox視覺/激光雷達/雷達/預測算法嚴重依賴于深部神經(jīng)網(wǎng)絡,這些神經(jīng)網(wǎng)絡在我們的車輛上都運行在NVIDIA gpu上,并且大多使用TensorRT部署。

TensorRT是一個用于高性能深度學習推理的SDK,它為深度學習推理應用程序提供低延遲和高吞吐量。

可以使用各種轉(zhuǎn)換管道將模型轉(zhuǎn)換為TensorRT引擎。例如,使用Caffe訓練的模型可以使用Caffe解析器輕松地轉(zhuǎn)換為TensorRT運行時。

但是,TensorFlow模型需要使用ONNX(開放式神經(jīng)網(wǎng)絡交換)轉(zhuǎn)換為TensorRT引擎。本文中介紹的工具是針對TensorFlow的,但是這些原則也可以應用到其他的訓練框架中。 在為所有這些深層神經(jīng)網(wǎng)絡部署和維護TensorRT引擎的過程中,我們發(fā)現(xiàn)了以下痛點: ONNX和TensorRT只支持有限的TensorFlow操作集。

內(nèi)核大小和步幅的某些組合可能會對TensorRT造成副作用。

遷移到精度降低的推理或TensorRT升級可能導致性能回歸。

在Zoox,我們開發(fā)了一組工具來促進TensorRT引擎的部署、驗證和維護,如圖2所示。在下面的部分中,我們將詳細介紹這些模塊。

TensorRT conversion checker

TensorRT轉(zhuǎn)換檢查器的目標是幫助您在訓練網(wǎng)絡之前識別可能的轉(zhuǎn)換失敗。checker是輕量級的,按設計是最小的(在本文后面的代碼示例中突出顯示)。在訓練之前,它會在所構建的網(wǎng)絡上觸發(fā)一個TensorRT轉(zhuǎn)換過程。我們只有在轉(zhuǎn)換成功后才開始訓練。

Figure 2. Zoox TensorRT conversion pipeline overview.

下面的代碼示例顯示了TensorRT轉(zhuǎn)換檢查器。要使用插件,用戶只需要導入數(shù)據(jù)包,在網(wǎng)絡構建期間注冊輸入/輸出節(jié)點,然后在訓練開始之前觸發(fā)轉(zhuǎn)換檢查。

import trt_checker

class Lenet5():

def network(self, X):

input = tf.identity(X, name = "input")

# Registers the input in the conversion checker.

trt_checker.register_input(input)

# Network definition.

...

# Output node.

output = tf.identity(logits, name="output")

# Registers the output node in the conversion checker.

trt_checker.register_output(output)

return output

def main():

...

# Checks if the model can be converted to trt.

conversion_result = trt_checker.check_conversion()

# Only train when trt conversion is successful.

if conversion_result:

accuracy = lenet_network.train()

Output deviation inspection

此插件的目標是在運行整個特定于模型的計算之前,報告轉(zhuǎn)換的TensorRT引擎的潛在精度回歸。這個插件在轉(zhuǎn)換后的TensorRT引擎和原始TensorFlow圖上運行推理,輸入完全相同(由用戶隨機生成或指定)。然后報告輸出偏差的分布,給開發(fā)人員一個潛在精度回歸的預警。此模塊是逐層檢查模塊的構建塊。

Figure 3. Output deviation inspection

Layer-by-layer inspection

下面的代碼示例顯示逐層檢查:

def layer_by_layer_analysis(graph, input_layer):

median_error = []

for layer in graph.layers():

errors = convert(graph, input=input_layer, output=layer)

median_error.append(median(errors))

plot(median_error)

如果觀察到精度回歸,我們希望找出TensorRT引擎中的哪個層或操作對回歸有顯著貢獻。這促使我們開發(fā)了逐層檢測模塊。調(diào)用時,模塊為每個中間操作運行一個轉(zhuǎn)換作業(yè),并報告此特定操作生成的中值/最大錯誤(如圖4所示)。當研究在不同版本的TensorRT中觀察到的不同行為時,此模塊非常有用。

Figure 4. Example regression observed in semantic segmentation when upgrading from TensorRT 5.1.5 to TensorRT 7.0.

圖4顯示了這種回歸的一個例子,在這個例子中,我們觀察到語義分割輸出有輕微的回歸。我們對TensorRT 5.1引擎和TensorRT 7.0引擎進行了逐層檢查,然后繪制了每層的中間誤差。 圖5顯示了每一層產(chǎn)生的中值誤差。我們可以看到在這個特定網(wǎng)絡的上采樣層中可能存在一個bug。基于這些信息,我們能夠在一個較小的網(wǎng)絡上重現(xiàn)這種回歸,并將此錯誤報告給NVIDIA。此錯誤現(xiàn)在已在TensorRT 7.1中修復。

圖5. 圖4中使用的兩臺TensorRT發(fā)動機的逐層檢查結果。橙色線顯示了TensorRT 7.0推理輸出與TensorFlow推理輸出相比的中間誤差。藍線顯示了TensorRT 5.0引擎生成的結果。上采樣層的誤差分布有顯著差異。

Latency flame graph

為了可視化推理中的瓶頸并找出可能的優(yōu)化操作,我們將TensorRT剖面儀生成的逐層計時信息繪制成火焰圖。計時詳細信息根據(jù)每個層的名稱范圍分組,如圖6所示。這使我們能夠看到網(wǎng)絡的哪個部分花費的時間比預期的要長。

Figure 6. Latency flame graph on Inception Net. The 1767 samples shown in this graph indicates that a forward pass on this network takes 1.767 ms.

Automated conversion pipeline

在Zoox,我們維護一個自動轉(zhuǎn)換管道,跟蹤每個模型使用的轉(zhuǎn)換選項。當觸發(fā)時,自動轉(zhuǎn)換管道將所有記錄的模型轉(zhuǎn)換為TensorRT引擎,并將它們上載到云中進行部署。它還為新轉(zhuǎn)換的TensorRT引擎運行驗證作業(yè)以驗證準確性。這個管道幫助我們只用一個命令就可以將所有現(xiàn)有的模型升級到TensorRT的新版本。

Incompatible graph test suite

Zoox維護一個TensorFlow到TensorRT的轉(zhuǎn)換測試套件。它測試了從TensorFlow圖到tensort引擎的轉(zhuǎn)換失敗案例,以及報告的NVIDIA錯誤識別。

每個測試構建一個TensorFlow圖,將其轉(zhuǎn)換為TensorRT,并將輸出偏差與TensorFlow圖進行比較。使用此測試套件,我們不僅可以向Zoox工程師演示哪些圖形結構或操作可能不適用于TensorRT,而且還可以檢測升級到TensorRT的新版本時修復了哪些回歸。

Summary

在這篇文章中,我們介紹了Zoox-TensorRT轉(zhuǎn)換管道中的幾個特性。TensorRT轉(zhuǎn)換檢查器參與神經(jīng)網(wǎng)絡訓練的早期階段,以確保在您浪費時間和資源進行全面訓練之前發(fā)現(xiàn)不兼容的操作。可以在每一層調(diào)用推理精度驗證來識別不利于降低精度計算的操作。詳細的分析揭示了不必要的計算,這些計算不是在TensorRT內(nèi)部優(yōu)化的,但是可以通過在圖構建期間簡單的代碼更改來優(yōu)化。

自動轉(zhuǎn)換管道幫助您驗證每個TensorRT升級或模型重新轉(zhuǎn)換。利用該流水線,我們成功地為神經(jīng)網(wǎng)絡在Zoox自主駕駛平臺上執(zhí)行各種流線型感知任務提供了TensorRT轉(zhuǎn)換支持。

總結

以上是生活随笔為你收集整理的tensorrt轻松部署高性能dnn推理_基于TensorRT车辆实时推理优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品中文字幕乱码三区 | 久久电影一区二区 | 中文av一区二区三区 | 高清无打码 | 狠狠操夜夜操 | 精品午夜一区二区三区 | 久久精品99久久久久久久久 | 99热久 | 男女调教视频 | 香蕉av777xxx色综合一区 | 重口变态虐黄网站 | 黄色不卡| 亚洲高清在线 | 在线黄色av | 住在隔壁的她动漫免费观看全集下载 | 国产精品久久久久久无人区 | 三上悠亚ed2k| 中文字幕电影av | 久久草精品 | 国产精品久久久久无码av色戒 | 最近免费中文字幕大全免费版视频 | www亚洲一区 | 精品国产一区三区 | 色五婷婷| 麻豆av网址 | 国产女人叫床高潮大片免费 | 波多野吉衣av | 老司机狠狠爱 | 黄色一级一片免费播放 | 成人三级电影网站 | 亚洲免费片 | 欧洲亚洲一区二区三区 | 日本大尺度吃奶做爰久久久绯色 | 七月婷婷综合 | 亚洲欧美色图在线 | 亚洲福利av | 小视频免费在线观看 | 97香蕉超级碰碰久久免费软件 | 婷婷资源网 | 四虎在线视频免费观看 | 超碰成人网 | 91在线看 | 大奶子情人| 天堂在线资源8 | 国产美女引诱水电工 | 好吊一区二区三区视频 | 国产精品一二三四五 | 国产精品美女毛片真酒店 | 色综合天天综合网天天看片 | 活大器粗np高h一女多夫 | 亚洲天堂五月 | 成人在线观看国产 | av手机版| 国产精品s | 色婷婷久久综合中文久久蜜桃av | 天堂网a | 国产东北露脸精品视频 | 亚洲精品一区二区潘金莲 | 一本av在线| 香蕉伊思人视频 | 大地av | 国产一区二区三区精品愉拍 | 韩日a级片 | 成av人片一区二区三区久久 | 日日夜夜撸啊撸 | 伊人网综合网 | 亚洲天堂中文 | 人妻熟女一区 | 琪琪女色窝窝777777 | 三级精品视频 | 欧美三日本三级少妇99 | 精品午夜福利视频 | 国产成人在线一区 | 国产成人精品视频 | 爱爱一区二区三区 | 六月激情综合 | 欧美性天堂 | 草碰在线 | jzzjzz日本丰满少妇 | 国产无遮挡又黄又爽又色视频 | 午夜你懂的 | 色婷婷一区二区三区四区 | 精品久久中文字幕 | 成人3d动漫在线观看 | 潘金莲黄色一级片 | 999黄色片 | 插综合 | 国产情侣av在线 | 欧美福利视频导航 | 都市激情久久 | 综合一区| 免费av影视| 爱操在线 | av在线资源 | 亚洲色图另类 | 污污视频在线免费观看 | 成人欧美一区二区三区黑人冫 | 亚洲无毛 | 黄av在线播放 |