精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深度學習模型轉成TensorRT引擎的流程

NVIDIA英偉達企業解決方案 ? 來源:NVIDIA英偉達企業解決方案 ? 作者:NVIDIA英偉達企業解 ? 2022-05-25 11:24 ? 次閱讀

前面我們花了很多力氣在 TAO 上面訓練模型,其最終目的就是要部署到推理設備上發揮功能。除了將模型訓練過程進行非常大幅度的簡化,以及整合遷移學習等功能之外,TAO 還有一個非常重要的任務,就是讓我們更輕松獲得 TensorRT 加速引擎。

將一般框架訓練的模型轉換成 TensorRT 引擎的過程并不輕松,但是 TensorRT 所帶來的性能紅利又是如此吸引人,如果能避開麻煩又能享受成果,這是多么好的福利!

下圖是將一般模型轉成 TesnorRT 的標準步驟,在中間 “Builder” 右邊的環節是相對單純的,比較復雜的是 “Builder” 左邊的操作過程

9d325b6e-db60-11ec-ba43-dac502259ad0.png

下圖就上圖 “NetworkDefinition” 比較深入的內容,TensorRT 提供 Caffe、uff 與 ONNX 三種解析器,其中 Caffe 框架已淡出市場、uff 僅支持 TensorFlow 框架,其他的模型就需要透過 ONNX 交換格式進行轉換。

9d87b744-db60-11ec-ba43-dac502259ad0.png

這里以 TensorRT 所提供的 YOLOv3 范例來做范例,在安裝 Jetpack 4.6 版本的 Jetson Nano 設備上進行體驗,請進入到 TesnorRT 的 YOLOv3 范例中:

cd  /usr/src/tensorrt/samples/python/yolov3_onnx

?

根據項目的 README.md 指示,我們需要先為工作環境添加依賴庫,不過由于部分庫的版本關系,請先將 requirements.txt 的第 1、3 行進行以下的修改:

numpy==1.19.4protobuf>=3.11.3onnx==1.10.1Pillow; python_version<"3.6"Pillow==8.1.2; python_version>="3.6"pycuda<2021.1

然后執行以下指令進行安裝:

python3 -m pip install -r requirements.txt

接下來需要先下載 download.yml 里面的三個文件,

wget https://pjreddie.com/media/files/yolov3.weights wget https://raw.githubusercontent.com/pjreddie/darknet/f86901f6177dfc6116360a13cc06ab680e0c86b0/cfg/yolov3.cfg wgethttps://github.com/pjreddie/darknet/raw/f86901f6177dfc6116360a13cc06ab680e0c86b0/data/dog.jpg

然后就能執行以下指令,將 yolov3.weights 轉成 yolov3.onnx

./yolov3_to_onnx.py  -d  /usr/src/tensorrt

這個執行并不復雜,是因為 TensorRT 已經提供 yolov3_to_onnx.py 的 Python 代碼,但如果將代碼打開之后,就能感受到這 750+ 行代碼要處理的內容是相當復雜,必須對 YOLOv3 的結構與算法有足夠了解,包括解析 yolov3.cfg 的 788 行配置。想象一下,如果這個代碼需要自行開發的話,這個難度有多高!

接下去再用下面指令,將 yolov3.onnx 轉成 yolov3.trt 加速引擎:

./onnx_to_tensorrt.py  -d  /usr/src/tensorrt

以上是從一般神經網絡模型轉成 TensorRT 加速引擎的標準步驟,這需要對所使用的神經網絡的結構層、數學公式、參數細節等等都有相當足夠的了解,才有能力將模型先轉換成 ONNX 文件,這是技術門檻比較高的環節。

  • TAO 工具訓練的模型轉成 TensorRT 引擎的工具

用 TAO 工具所訓練、修剪并匯出的 .etlt 文件,可以跳過上述過程,直接在推理設備上轉換成 TensorRT 加速引擎,我們完全不需要了解神經網絡的任何結構與算法內容,直接將 .etlt 文件復制到推理設備上,然后用 TAO 所提供的轉換工具進行轉換就可以。

這里總共需要執行三個步驟:

1、下載 tao-converter 工具,并調試環境:

請根據以下 Jetpack 版本,下載對應的 tao-converter 工具:

Jetpack 4.4:https://developer.nvidia.com/cuda102-trt71-jp44-0 Jetpack 4.5:https://developer.nvidia.com/cuda110-cudnn80-trt72-0 Jetpack 4.6:https://developer.nvidia.com/jp46-20210820t231431z-001zip

下載壓縮文件后執行解壓縮,就會生成 tao-converterREADME.txt 兩個文件,再根據 README.txt 的指示執行以下步驟:

(1)安裝 libssl-dev 庫:

sudo  apt  install  libssl-dev

(2) 配置環境,請在 ~/.bashrc 最后面添加兩行設置:

export TRT_LIB_PATH=/usr/lib/aarch64-linux-gnuexportTRT_INCLUDE_PATH=/usr/include/aarch64-linux-gnu

(3) 將 tao-convert 變成可執行文件:

source ~/.bashrcchmod  +x  tao-convertersudocptao-converter/usr/local/bin

2、安裝 TensorRT 的 OSS (Open Source Software)

這是 TensorRT 的開源插件,項目在 https://github.com/NVIDIA/TensorRT,下面提供的安裝說明非常復雜,我們將繁瑣的步驟整理之后,就是下面的步驟:

export  ARCH=請根據設備進行設置,例如Nano為53、NX為72、Xavier為62export  TRTVER=請根據系統的TensorRT版本,例如Jetpack 4.6為8.0.1git  clone  -b  $TRTVER  https://github.com/nvidia/TensorRT  TRToss cd  TRToss/git checkout  -b  $TRTVER  &&  git  submodule  update  --init  --recursivemkdir  -p  build  &&  cd  buildcmake .. -DGPU_ARCHS=$ARCH-DTRT_LIB_DIR=/usr/lib/aarch64-linux-gnu/-DCMAKE_C_COMPILER=/usr/bin/gcc-DTRT_BIN_DIR=`pwd`/out-DTRT_PLATFORM_ID=aarch64-DCUDA_VERSION=10.2make  nvinfer_plugin  -j$(nproc)sudomv/usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.8.0.1  /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.8.0.1.baksudocplibnvinfer_plugin.so.8.0.1/usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.8.0.1

這樣就能開始用 tao-converter 來將 .etlt 文件轉換成 TensorRT 加速引擎了。

3、用 tao-converter 進行轉換

(1)首先將 TAO 最終導出 (export) 的文件復制到 Jetson Nano 上,例如前面的實驗中最終導出的文件 ssd_resnet18_epoch_080.etlt

(2)在 Jetson Nano 上執行 TAO 的 ssd.ipynb 最后所提供的轉換指令,如下:

%set_env KEY=tao converter  -k  $KEY -d  3,300,300     -o  NMS     -e  ssd_resnet18_epoch_080.trt   # 自己設定輸出名稱    -m  16     -t  fp16                       # 使用export時相同精度    -i  nchw ssd_resnet18_epoch_080.etlt

這樣就能生成在 Jetson Nano 上的 ssd_resnet18_epoch_080.trt 加速引擎文件,整個過程比傳統方式要簡便許多。

原文標題:NVIDIA Jetson Nano 2GB系列文章(64):將模型部署到Jetson設備

文章出處:【微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    4940

    瀏覽量

    102815
  • 深度學習
    +關注

    關注

    73

    文章

    5492

    瀏覽量

    120976
  • 模型訓練
    +關注

    關注

    0

    文章

    18

    瀏覽量

    1331

原文標題:NVIDIA Jetson Nano 2GB系列文章(64):將模型部署到Jetson設備

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    深度學習模型的魯棒性優化

    深度學習模型的魯棒性優化是一個復雜但至關重要的任務,它涉及多個方面的技術和策略。以下是一些關鍵的優化方法: 一、數據預處理與增強 數據清洗 :去除數據中的噪聲和異常值,這是提高模型魯棒
    的頭像 發表于 11-11 10:25 ?156次閱讀

    GPU深度學習應用案例

    GPU在深度學習中的應用廣泛且重要,以下是一些GPU深度學習應用案例: 一、圖像識別 圖像識別是深度學習
    的頭像 發表于 10-27 11:13 ?327次閱讀

    FPGA加速深度學習模型的案例

    FPGA(現場可編程門陣列)加速深度學習模型是當前硬件加速領域的一個熱門研究方向。以下是一些FPGA加速深度學習
    的頭像 發表于 10-25 09:22 ?141次閱讀

    AI大模型深度學習的關系

    AI大模型深度學習之間存在著密不可分的關系,它們互為促進,相輔相成。以下是對兩者關系的介紹: 一、深度學習是AI大
    的頭像 發表于 10-23 15:25 ?374次閱讀

    深度學習編譯器和推理引擎的區別

    深度學習編譯器和推理引擎在人工智能領域中都扮演著至關重要的角色,但它們各自的功能、應用場景以及優化目標等方面存在顯著的差異。以下是對兩者區別的詳細探討。
    的頭像 發表于 07-17 18:12 ?1188次閱讀

    深度學習模型有哪些應用場景

    深度學習模型作為人工智能領域的重要分支,已經在多個應用場景中展現出其巨大的潛力和價值。這些應用不僅改變了我們的日常生活,還推動了科技進步和產業升級。以下將詳細探討深度
    的頭像 發表于 07-16 18:25 ?1679次閱讀

    深度學習模型量化方法

    深度學習模型量化是一種重要的模型輕量化技術,旨在通過減少網絡參數的比特寬度來減小模型大小和加速推理過程,同時盡量保持
    的頭像 發表于 07-15 11:01 ?455次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學習</b><b class='flag-5'>模型</b>量化方法

    利用Matlab函數實現深度學習算法

    在Matlab中實現深度學習算法是一個復雜但強大的過程,可以應用于各種領域,如圖像識別、自然語言處理、時間序列預測等。這里,我將概述一個基本的流程,包括環境設置、數據準備、模型設計、訓
    的頭像 發表于 07-14 14:21 ?1903次閱讀

    基于Python的深度學習人臉識別方法

    基于Python的深度學習人臉識別方法是一個涉及多個技術領域的復雜話題,包括計算機視覺、深度學習、以及圖像處理等。在這里,我將概述一個基本的流程
    的頭像 發表于 07-14 11:52 ?1183次閱讀

    深度學習模型中的過擬合與正則化

    深度學習的廣闊領域中,模型訓練的核心目標之一是實現對未知數據的準確預測。然而,在實際應用中,我們經常會遇到一個問題——過擬合(Overfitting)。過擬合是指模型在訓練數據上表現
    的頭像 發表于 07-09 15:56 ?783次閱讀

    深度學習中的模型權重

    深度學習這一充滿無限可能性的領域中,模型權重(Weights)作為其核心組成部分,扮演著至關重要的角色。它們不僅是模型學習的基石,更是
    的頭像 發表于 07-04 11:49 ?947次閱讀

    深度學習模型訓練過程詳解

    深度學習模型訓練是一個復雜且關鍵的過程,它涉及大量的數據、計算資源和精心設計的算法。訓練一個深度學習模型
    的頭像 發表于 07-01 16:13 ?1089次閱讀

    深度學習模型優化與調試方法

    深度學習模型在訓練過程中,往往會遇到各種問題和挑戰,如過擬合、欠擬合、梯度消失或爆炸等。因此,對深度學習
    的頭像 發表于 07-01 11:41 ?697次閱讀

    Torch TensorRT是一個優化PyTorch模型推理性能的工具

    那么,什么是Torch TensorRT呢?Torch是我們大家聚在一起的原因,它是一個端到端的機器學習框架。而TensorRT則是NVIDIA的高性能深度
    的頭像 發表于 01-09 16:41 ?1530次閱讀
    Torch <b class='flag-5'>TensorRT</b>是一個優化PyTorch<b class='flag-5'>模型</b>推理性能的工具

    深度學習如何訓練出好的模型

    和足夠的計算資源,還需要根據任務和數據的特點進行合理的超參數調整、數據增強和模型微調。在本文中,我們將會詳細介紹深度學習模型的訓練流程,探討
    的頭像 發表于 12-07 12:38 ?1057次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學習</b>如何訓練出好的<b class='flag-5'>模型</b>