最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

提升10倍推理速度:利用TensorRT 在Jetson NX上的模型部署

2023-06-01 16:23 作者:西湖大學(xué)空中機(jī)器人  | 我要投稿

隨著算力的不斷提升和數(shù)據(jù)的不斷增長,深度學(xué)習(xí)算法有了巨大的發(fā)展。深度學(xué)習(xí)算法也越來越多的應(yīng)用在各個領(lǐng)域中,比如圖像識別算法應(yīng)用于自動駕駛領(lǐng)域和安防等場景,再比如語音處理和自然語言處理應(yīng)用于人機(jī)交互,以及近期火熱對于許多領(lǐng)域都有重大影響的AIGC。針對不同的平臺,如何使深度學(xué)習(xí)算法的推理速度更快,無疑可以影響用戶的體驗,甚至可以影響一個算法的有效性,這是深度學(xué)習(xí)模型部署所要研究的問題。目前模型部署框架則有NVIDIA推出的TensorRT,谷歌的Tensorflow和用于ARM平臺的tflite,開源的caffe,百度的飛漿。

在AIOT、移動設(shè)備以及自動駕駛等領(lǐng)域,出于成本和性能方面的考慮,可能無法使用高性能的GPU服務(wù)器,因此NVIDIA推出了Jetson NX,可以廣泛地應(yīng)用于嵌入式設(shè)備和邊緣計算等場景。同時,Nvidia所開發(fā)的TensorRT可以對深度學(xué)習(xí)模型的推理過程進(jìn)行加速,使得Jetson NX也可以使用一些深度學(xué)習(xí)算法從而擁有更廣泛的應(yīng)用價值。Triton是NVIDIA于2018年開源的服務(wù)框架,可以對TensorRT生成的推理引擎進(jìn)行更好的調(diào)度以及處理推理請求。

本文主要介紹了基于Jetson NX使用TensorRT和Triton對深度學(xué)習(xí)算法模型進(jìn)行部署的流程,并以yolov5和ResNet兩種視覺領(lǐng)域常用的算法為例進(jìn)行了評測。

模型部署流程

Jetson上的模型部署因為是基于arm的,與傳統(tǒng)基于x86的主機(jī)或服務(wù)器的部署略有差別,但基本類似,主要分為三步:

  • 模型轉(zhuǎn)換為onnx

  • 生成基于TensorRT的推理引擎

  • 使用Triton完成部署?

1.模型轉(zhuǎn)換為onnx

首先可以將pytorch或其他框架訓(xùn)練好的模型轉(zhuǎn)換為onnx格式用于后續(xù)的部署。pytorch中提供了將模型文件導(dǎo)出為onnx格式的函數(shù)。以yolov5為例:

可以將原模型導(dǎo)出為onnx格式,其中model是我們要進(jìn)行導(dǎo)出的模型文件,f為導(dǎo)出的onnx模型文件。

2.生成基于TensorRT的推理引擎

TensorRT主要用于優(yōu)化模型推理速度,是硬件相關(guān)的。主要有兩種將torch生成的模型轉(zhuǎn)化為TensorRT的engine的方式:

  • 將模型的.pth權(quán)重文件轉(zhuǎn)化為.wts文件。之后編寫c++程序?qū)?wts進(jìn)行編譯,生成推理引擎,通過調(diào)用推理引擎來進(jìn)行TensorRT的推理。

  • 將網(wǎng)絡(luò)結(jié)構(gòu)保存為onnx格式,然后利用ONNX-TensorRT工具將onnx模型文件轉(zhuǎn)換為TensorRT推理引擎即可即可。

注:兩種方法生成的推理引擎無法直接互換使用,需要進(jìn)行一定的轉(zhuǎn)換。

在本文中,我們使用第二種方法生成推理引擎。即使用上一步中轉(zhuǎn)化好的onnx模型文件,使用ONNX-TensorRT工具trtexec將onnx模型文件轉(zhuǎn)化為推理引擎。在Jetson上安裝arm版的TensorRT后可以使用trtexec將onnx模型文件生成推理引擎,使用方法如下:

--onnx代表輸入的模型文件, --fp16代表使用半精度浮點(diǎn)類型數(shù)據(jù),--saveEngine代表保存的推理引擎名稱。

使用trtexec -h可以查看更多參數(shù)說明。

執(zhí)行結(jié)束后可以得到類似如下的性能結(jié)果報告:

如果最后顯示為PASSED則代表推理引擎生成成功,2-9為用偽數(shù)據(jù)進(jìn)行的性能測試結(jié)果。

3.使用Triton完成部署?

在上一步中使用TensorRT得到推理引擎后,可以使用Triton進(jìn)行進(jìn)一步的部署。

Jetson版的Triton Server安裝可以參考?[Triton Inference Server Support for Jetson and JetPack][1]。

安裝完成后,配置模型即可完成部署,更多信息可參考[ Triton Model Configuration Documentation][2]。

在本文以如下配置過程為例:

配置文件的目錄格式如下:

即構(gòu)建好模型文件的目錄和配置文件,并將上一步中得到的推理引擎復(fù)制到相應(yīng)目錄下作為model.plan,一個簡單的配置文件config.pbtxt可以設(shè)置如下:

完成以上配置后,即可使用tritonserver進(jìn)行部署:

部署成功后結(jié)果如上圖所示,可以使用pytritonclient將需要預(yù)測的數(shù)據(jù)進(jìn)行預(yù)處理后訪問8001端口進(jìn)行推理調(diào)用。

性能評測

本文分別對視覺領(lǐng)域常用的兩種算法Yolov5和ResNet進(jìn)行了評測,對TensorRT的加速進(jìn)行了量化的評估。

ResNet?


圖1 ResNet加速性能評價

本文對ResNet常見的兩種網(wǎng)絡(luò)結(jié)構(gòu)ResNet18和ResNet50分別進(jìn)行了測試,實驗結(jié)果如圖1所示,加速版本與未加速版本所使用的設(shè)置均一致,測量的指標(biāo)為query per second(qps),batchsize均為1,加速比約為6.02。

圖2 Yolov5加速性能評價


Yolo是視覺領(lǐng)域常用的目標(biāo)檢測算法,本文對Yolov5的加速性能進(jìn)行了測試,分別對半精度浮點(diǎn)類型和全精度浮點(diǎn)類型的加速性能進(jìn)行了實驗。實驗結(jié)果如圖2所示,加速版本與未加速版本所使用的實驗設(shè)置均一致,圖像輸入尺寸為320×320,測量的性能指標(biāo)為qps??梢钥闯觯繕?biāo)識別算法只有在加速后可以實現(xiàn)實時的目標(biāo)檢測,加速比約為10.96。

總結(jié)

本文主要介紹了基于Jetson NX使用TensorRT和Triton對深度學(xué)習(xí)算法模型進(jìn)行部署方法和整體流程,并以yolov5和ResNet兩種視覺領(lǐng)域常用的算法為例進(jìn)行了評測。在基本不損失精度的情況下,TensorRT可以對常見的深度學(xué)習(xí)算法模型進(jìn)行很好的加速并部署在Jetson上。利用這項技術(shù),使Jetson不再依賴服務(wù)器,可以在本地實時常見的深度學(xué)習(xí)任務(wù)。在邊緣計算、移動端設(shè)備計算等場景中有非常廣闊的應(yīng)用價值。

參考資料

[1]https://github.com/triton-inference-server/server/blob/r22.10/docs/user_guide/jetson.md

[2]https://github.com/triton-inference-server/server/blob/main/docs/model_configuration.md#model-configuration

[封面]https://developer.nvidia.com/tensorrt

本文共2714字,申請文章授權(quán)請聯(lián)系后臺運(yùn)營人員


提升10倍推理速度:利用TensorRT 在Jetson NX上的模型部署的評論 (共 條)

分享到微博請遵守國家法律
沂源县| 云安县| 永顺县| 镇沅| 金寨县| 吴旗县| 甘肃省| 师宗县| 原平市| 金塔县| 上思县| 化德县| 永宁县| 云安县| 皋兰县| 且末县| 三江| 连南| 疏附县| 开江县| 临洮县| 陇西县| 金溪县| 鲁山县| 抚州市| 日照市| 盐池县| 正蓝旗| 东丰县| 东宁县| 嘉义县| 错那县| 磴口县| 达日县| 镇平县| 麻江县| 永丰县| 梨树县| 万安县| 托克托县| 西充县|