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

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

深度學(xué)習(xí)-TensorRT模型部署實(shí)戰(zhàn)

2023-06-16 19:22 作者:帥卡比丘弟呀  | 我要投稿

深度學(xué)習(xí)-TensorRT模型部署實(shí)戰(zhàn)

學(xué)習(xí)地址:https://pan.baidu.com/s/1u-6lfe3nA-Y9tsQdbX8vrw 提取碼: 6966


本課程劃分為四部分:


第一部分精簡(jiǎn)CUDA-驅(qū)動(dòng)API:學(xué)習(xí)CUDA驅(qū)動(dòng)API的使用,錯(cuò)誤處理方法,上下文管理方法,了解驅(qū)動(dòng)API所處位置,CUDA的開(kāi)發(fā)習(xí)慣。


第二部分精簡(jiǎn)CUDA-運(yùn)行時(shí)API:學(xué)習(xí)CUDA運(yùn)行時(shí)API的使用,力求精簡(jiǎn),力求夠用,學(xué)會(huì)編寫(xiě)核函數(shù)加速模型預(yù)處理(仿射變換),學(xué)習(xí)yolov5的后處理加速方法,共享內(nèi)存的使用。


第三部分tensorRT基礎(chǔ):學(xué)習(xí)tensorRT的模型編譯、推理流程,onnx解析器的使用,學(xué)習(xí)onnx的結(jié)構(gòu)和編輯修改方法,學(xué)習(xí)int8量化,插件開(kāi)發(fā)流程,簡(jiǎn)化的插件開(kāi)發(fā)方法,學(xué)習(xí)動(dòng)態(tài)shape的應(yīng)用。


第四部分tensorRT高級(jí):以項(xiàng)目驅(qū)動(dòng),學(xué)習(xí)大量具體的項(xiàng)目案例(分類(lèi)器、目標(biāo)檢測(cè)、姿態(tài)檢測(cè)、場(chǎng)景分割、道路分割、深度估計(jì)、車(chē)道線檢測(cè)、huggingface、insightface、mmdetection、onnxruntime、openvino),學(xué)習(xí)針對(duì)深度學(xué)習(xí)需要的封裝技術(shù)、多線程技術(shù)、框架設(shè)計(jì)技術(shù)。


1 安裝trtexec

在Jetson Xavier NX 中安裝trtexec,并將tensorrt的bin目錄加入到環(huán)境變量。我的Jetson Xavier NX自帶CUDA,所以安裝trtexec后就可以開(kāi)展模型轉(zhuǎn)換工作。使用trtexec過(guò)程中可以通過(guò)./trtexec --help 查看支持的參數(shù)。


2 TensorRT的工作流

1、 從開(kāi)源框架導(dǎo)出模型,比如導(dǎo)出ONNX模型


2、 選擇Batch大小


3、 選擇模型精度


4、 轉(zhuǎn)換模型


5、 部署轉(zhuǎn)換后的模型


我們可以通過(guò)TensorRT API調(diào)用和trtexec兩種方式轉(zhuǎn)換ONNX模型。使用ONNX轉(zhuǎn)換TensorRT更高效。


3 ONNX轉(zhuǎn)TensorRT

常規(guī)onnx轉(zhuǎn)TensorRT的命令:


trtexec --onnx=resnet50/model.onnx --saveEngine=resnet_engine.trt

模型轉(zhuǎn)換成功后可以通過(guò)trtexec命令驗(yàn)證生成隨機(jī)數(shù)據(jù)執(zhí)行推理是否成功


trtexec --shapes=input:1x3x224x224 --loadEngine=resnet50.trt

推理成功會(huì)顯示


&&&& PASSED TensorRT.trtexec


import tensorrt as trt?

?

verbose = True?

IN_NAME = 'input'?

OUT_NAME = 'output'?

IN_H = 224?

IN_W = 224?

BATCH_SIZE = 1?

?

EXPLICIT_BATCH = 1 << (int)(?

? ? trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)?

?

TRT_LOGGER = trt.Logger(trt.Logger.VERBOSE) if verbose else trt.Logger()?

with trt.Builder(TRT_LOGGER) as builder, builder.create_builder_config(?

) as config, builder.create_network(EXPLICIT_BATCH) as network:?

? ? # define network?

? ? input_tensor = network.add_input(?

? ? ? ? name=IN_NAME, dtype=trt.float32, shape=(BATCH_SIZE, 3, IN_H, IN_W))?

? ? pool = network.add_pooling(?

? ? ? ? input=input_tensor, type=trt.PoolingType.MAX, window_size=(2, 2))?

? ? pool.stride = (2, 2)?

? ? pool.get_output(0).name = OUT_NAME?

? ? network.mark_output(pool.get_output(0))?

?

? ? # serialize the model to engine file?

? ? profile = builder.create_optimization_profile()?

? ? profile.set_shape_input('input', *[[BATCH_SIZE, 3, IN_H, IN_W]]*3)??

? ? builder.max_batch_size = 1?

? ? config.max_workspace_size = 1 << 30?

? ? engine = builder.build_engine(network, config)?

? ? with open('model_python_trt.engine', mode='wb') as f:?

? ? ? ? f.write(bytearray(engine.serialize()))?

? ? ? ? print("generating file done!")?


一般的深度學(xué)習(xí)項(xiàng)目,訓(xùn)練時(shí)為了加快速度,會(huì)使用多 GPU 分布式訓(xùn)練。但在部署推理時(shí),為了降低成本,往往使用單個(gè) GPU 機(jī)器甚至嵌入式平臺(tái)(比如 NVIDIA Jetson)進(jìn)行部署,部署端也要有與訓(xùn)練時(shí)相同的深度學(xué)習(xí)環(huán)境,如 caffe,TensorFlow 等。由于訓(xùn)練的網(wǎng)絡(luò)模型可能會(huì)很大(比如,inception,resnet 等),參數(shù)很多,而且部署端的機(jī)器性能存在差異,就會(huì)導(dǎo)致推理速度慢,延遲高。這對(duì)于那些高實(shí)時(shí)性的應(yīng)用場(chǎng)合是致命的,比如自動(dòng)駕駛要求實(shí)時(shí)目標(biāo)檢測(cè),目標(biāo)追蹤等。所以為了提高部署推理的速度,出現(xiàn)了很多輕量級(jí)神經(jīng)網(wǎng)絡(luò),比如 squeezenet,mobilenet,shufflenet 等?;咀龇ǘ际腔诂F(xiàn)有的經(jīng)典模型提出一種新的模型結(jié)構(gòu),然后用這些改造過(guò)的模型重新訓(xùn)練,再重新部署。


深度學(xué)習(xí)-TensorRT模型部署實(shí)戰(zhàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
云浮市| 淳化县| 米易县| 西安市| 寿阳县| 交城县| 大连市| 县级市| 牡丹江市| 叙永县| 石家庄市| 昔阳县| 陇西县| 金溪县| 雷山县| 江阴市| 太白县| 衡东县| 衡阳县| 萝北县| 蓝田县| 临安市| 富阳市| 义马市| 温泉县| 泰顺县| 大英县| 酒泉市| 英吉沙县| 卢龙县| 尉氏县| 大渡口区| 汤阴县| 达州市| 凤冈县| 刚察县| 旬邑县| 通化市| 延长县| 西城区| 五寨县|