用於ONNX的TensorRT後端
用於ONNX的TensorRT後端
解析ONNX模型以使用TensorRT執行。
另請參閱TensorRT文件。
有關最近更改的列表,請參見changelog。
支援的TensorRT版本
Master分支上的開發適用於具有完整維度和動態架構shape支援的TensorRT 7.2.1的最新版本。
對於TensorRT的早期版本,請參考其各自的分支。
完整尺寸+動態架構
在具有動態架構支援的全維度模式下,構建INetwork物件,需要呼叫以下API:
C ++
const auto explicitBatch = 1U <<
static_cast<uint32_t>(nvinfer1::NetworkDefinitionCreationFlag::kEXPLICIT_BATCH);
builder->createNetworkV2(explicitBatch)
Python
import tensorrt
explicit_batch = 1 << (int)(tensorrt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)
builder.create_network(explicit_batch)
有關這些API用法的示例,請參見:
sampleONNXMNIST
sampleDynamicReshape
支援的運算元
當前支援的ONNX運算元,可在運算元支援列表中找到。
安裝
依存關係
Dependencies
Protobuf>= 3.0.x
TensorRT 7.2.1
TensorRT 7.2.1 open source libaries (master branch)
編譯
對於在docker中進行構建,建議按照main(TensorRT儲存庫)[https://github.com/NVIDIA/TensorRT#setting-up-the-build-environment]中的說明使用和設定Docker容器,來構建onnx -tensorrt庫。
clone儲存庫後,可以通過執行以下命令,來構建解析器庫和可執行檔案:
cd onnx-tensorrt
mkdir build && cd build
cmake … -DTENSORRT_ROOT=<path_to_trt> && make -j
// Ensure that you update your LD_LIBRARY_PATH to pick up the location of the newly built library:
export LD_LIBRARY_PATH= P W D : PWD: PWD:LD_LIBRARY_PATH
可執行用法
可以使用onnx2trt可執行檔案,將ONNX模型轉換為序列化的TensorRT引擎:
onnx2trt my_model.onnx -o my_engine.trt
ONNX模型也可以轉換為人們可讀的文字:
onnx2trt my_model.onnx -t my_model.onnx.txt
ONNX模型也可以通過ONNX的優化庫(由dsandler新增)進行優化。要優化ONNX模型並輸出新的模型,可使用它-m來指定輸出模型名稱,用-O指定以分號分隔的優化過程列表,進行應用:
onnx2trt my_model.onnx -O “pass_1;pass_2;pass_3” -m my_model_optimized.onnx
通過執行以下命令,檢視更多所有可用的優化遍歷:
onnx2trt -p
通過執行以下命令,檢視更多用法資訊:
onnx2trt -h
Python模組
ONNX-TensorRT解析器的Python,繫結打包在隨附的.whl檔案中。用來安裝
python3 -m pip install <tensorrt_install_dir>/python/tensorrt-7.x.x.x-cp<python_ver>-none-linux_x86_64.whl
TensorRT 7.2.1支援ONNX版本1.6.0。通過以下方式安裝:
python3 -m pip install onnx==1.6.0
可以通過執行以下命令,來安裝ONNX-TensorRT後端:
python3 setup.py install
ONNX-TensorRT Python後端使用
可以在Python中如下使用ONNX的TensorRT後端:
import onnx
import onnx_tensorrt.backend as backend
import numpy as np
model = onnx.load("/path/to/model.onnx")
engine = backend.prepare(model, device=‘CUDA:1’)
input_data = np.random.random(size=(32, 3, 224, 224)).astype(np.float32)
output_data = engine.run(input_data)[0]
print(output_data)
print(output_data.shape)
C ++庫用法
模型解析器庫libnvonnxparser.so,在標頭檔案中宣告瞭其C ++ API:
NvOnnxParser.h
測試
安裝後(或在Docker容器內),可以按以下方式執行ONNX後端測試:
僅實模型測試:
python onnx_backend_test.py OnnxBackendRealModelTest
所有測試:
python onnx_backend_test.py
可以使用-v標誌,使輸出更加詳細。
預訓練模型
在ONNX格式預先訓練模式可以在找到ONNX
Model Zoo
https://github.com/onnx/onnx-tensorrt
相關文章
- TensorRT c++部署onnx模型C++模型
- c# onnx模型部署:TensorRT、OpenVino、ONNXRuntime、OpenCV dnnC#模型OpenCVDNN
- pytorch模型(.pt)轉onnx模型(.onnx)的方法PyTorch模型
- 快速用flask框架開發後端( 僅限於玩 )Flask框架後端
- 用 Git 作為聊天應用的後端Git後端
- 前後端分離,後端用springboot遇到的跨域問題後端Spring Boot跨域
- 基於Kubernetes實現前後端應用的金絲雀釋出後端
- 一款適用於後端開發人員的(高顏值)後臺擴充套件後端套件
- pytorch 轉 tensorRT 踩的幾個小坑_tensorrt engine set up failedPyTorchAI
- 【YOLOv5】手把手教你使用LabVIEW ONNX Runtime部署 TensorRT加速,實現YOLOv5實時物體識別YOLOView
- 用gpt直接寫後端的感覺GPT後端
- TensorRT 開始
- 雲應用:始於端,盛於雲
- React/Vue 實現的前端應用, java/Go/Python 實現的後端應用,前後端分離的應用部署的最佳實踐ReactVue前端JavaGoPython後端
- onnx模型轉openvino報錯nGraph does not support the following ONNX operations: If模型
- 基於Dart語言的開源後端框架:UpperDart後端框架
- 關於 SAP Enterprise Portal 的前後端技術棧後端
- 用TensorRT針對AArch64使用者的交叉編譯示例編譯
- 【YOLOv5】手把手教你使用LabVIEW ONNX Runtime部署 TensorRT加速,實現YOLOv5實時物體識別(含原始碼)YOLOView原始碼
- app後端和web後端的區別APP後端Web
- 使用ONNX來部署mmdetection中的模型模型
- 初步瞭解Express(基於node.js的後端框架)ExpressNode.js後端框架
- 後端基於方法的許可權控制--Spirng-Security後端
- 基於使用者認證的前後端實現後端
- TensorRT IRNNv2LayerRNN
- TensorRT基礎筆記筆記
- Google I/O 2018 : 應用於 PC 端的 PWAGo
- mockjs讓前端開發獨立於後端MockJS前端後端
- ?踩坑指南——onnx系列
- ONNX模型分析與使用模型
- 【推理引擎】ONNX 模型解析模型
- 從 0 構建一個基於 ER 圖的低程式碼後端,實現方式Laravel適用後端Laravel
- 前後端分離之更好的mock你的後端api後端MockAPI
- 基於node.js和oss的後端簽名直傳Node.js後端
- 有了XMLHttpRequest,前後端們終於過上了幸福的生活XMLHTTP後端
- 關於http和一次完整的前後端響應HTTP後端
- 前後端均適用的網路知識點大全後端
- JetsonNano2GB編譯Yolov5並用TensorRT加速教程NaN編譯YOLO