1. 程式人生 > >初見-TensorRT簡介<轉>

初見-TensorRT簡介<轉>

copy 量化 tar 軟件包 引擎 夠快 環境 相對 load

下面是TensorRT的介紹,也可以參考官方文檔,更權威一些:https://developer.nvidia.com/tensorrt

關於TensorRT首先要清楚以下幾點:

1. TensorRT是NVIDIA開發的深度學習推理工具,只支持推理,不支持訓練;目前TensorRT3已經支持Caffe、Caffe2、TensorFlow、MxNet、Pytorch等主流深度學習庫;

2. TensorRT底層針對NVIDIA顯卡做了多方面的優化,不僅僅是量化,可以和 CUDA CODEC SDK 結合使用,也就是另一個開發包DeepStream;

3. TensorRT獨立於深度學習框架,通過解析框架文件來實現,不需要額外安裝DL庫;



 NVIDIA TensorRT是一種高性能神經網絡推理(Inference)引擎,用於在生產環境中部署深度學習應用程序,應用有圖像分類、分割和目標檢測等,可提供最大的推理吞吐量和效率。TensorRT是第一款可編程推理加速器,能加速現有和未來的網絡架構。
TensorRT需要CUDA的支持。TensorRT包含一個為優化生產環境中部署的深度學習模型而創建的庫,可獲取經過訓練的神經網絡(通常使用32位或16位數據),並針對降低精度的INT8運算來優化這些網絡。借助CUDA的可編程性,TensorRT將能夠加速助推深度
神經網絡日益多樣化、復雜的增長趨勢。通過TensorRT的大幅度加速,服務提供商能夠以經濟實惠的成本部署這些計算密集型人工智能工作負載。

    已有來自各行各業的公司開始采用NVIDIA推理平臺,借助此從數據中獲得全新洞察,並為企業和消費者部署智能服務。

    TensorRT由英偉達(NVIDIA)發布,目前包括TensorRT1、TensorRT 
2、TensorRT 3,是深度學習軟件包,支持FP16特性。TensorRT支持使用Caffe的模型。TensorRT相對簡單易用,在深度學習算法推理階段能將GPU的計算能力更大程度釋放出來。 TensorRT在不斷的改進過程中,在保證軟件精度的同時,不斷提高速度。TensorRT針對運行時性能自動優化訓練過的神經網絡。 TensorRT是一個C++庫。TensorRT只能用來做Inference(推理),不能用來進行train。 TensorRT基本處理過程:(1)、caffe model轉化GIE的model,或者從磁盤或者網絡加載GIE可用的model;(2)、運行GIE引擎(數據提前copy到GPU中);(3)、提取結果。 轉化GIE model兩種方式:(
1)、caffeToGIEModel;(2)、參考sampleMNIST API自己構建GIE model. 用深度神經網絡解決監督機器學習問題包含兩個步驟:第一步是使用GPU對海量標簽數據進行深度神經網絡訓練,訓練時需要叠代的通過網絡進行前向傳播和反向傳播。最終會生成訓練好的model文件。第二步是推理(Inference)即使用訓練好的模型對新 數據做出預測,僅需通過網絡進行前向傳播。TensorRT是一款高性能的推理引擎,旨在為常見的深度學習應用如圖像分類、分割、目標檢測等提供最大的推理吞吐量和效率。針對運行時性能,TensorRT會優化已訓練的神經網絡。 使用TensorRT包含兩個階段:構建(build)和部署(deployment)。在構建階段,TensorRT對網絡配置進行優化,並生成一個優化了的plan用於計算深度神經網絡的前向傳播。這個plan是一個優化了的目標代碼,可以序列化存儲在內存或磁盤上。 部署階段通常采用長時間運行的服務或用戶應用程序的形式,該服務或用戶應用程序接受批量輸入數據,通過對輸入數據執行plan來執行推理,並返回批量輸出數據。使用TensorRT,你無需在部署硬件上安裝並運行深度學習框架。 TensorRT構建階段:TensorRT運行時需要三個文件來部署一個分類神經網絡:一個網絡體系結構文件(deploy.prototxt),已訓練的權值(net.caffemodel)和一個標簽文件為每個輸出類提供一個名稱。另外,你必須定義batch size和輸出層。 TensorRT對神經網絡圖(neural network graph)進行了幾個重要的轉換和優化:消除未使用的輸出的層以避免不必要的計算;在可能的情況下,convolution、bias和ReLU層被融合以形成單個層,包括垂直層融合和水平層融合。 在TensorRT解析器讀入已訓練的網絡和配置文件後,TensorRT在構建階段對API用戶透明地執行其轉換。 在構建階段,TensorRT優化網絡,在部署階段,TensorRT以最小化延遲和最大化吞吐量運行優化了的網絡。 TensorRT 2.1關鍵特性:(1)、支持自定義層;(2)、INT8支持以用於性能改進;(3)、提供遞歸神經網絡(LSTM(Long Short-Term Memory)、GRU(Gated Recurrent Unit))實現;(4)、”original” RNN層實現。 2017年9月,NVIDIA發布了神經網絡推理加速器TensorRT3,TensorRT 3是一款針對人工智能應用生產部署的高性能優化編譯器和運行時引擎,用於在生產環境中部署深度學習程序。它能夠快速優化、驗證並部署經過訓練的神經網絡, 從而在超大型數據中心、嵌入式GPU或車用GPU平臺上開展推理工作。它能夠確保高度精確的INT8和FP16網絡執行。 TensorRT 3能支持Caffe2、Mxnet、Pytorch、TensorFlow等所有的深度學習框架,將TensorRT 3和NVIDIA的GPU結合起來,能在所有的框架中進行超快速和高效的推理傳輸,支持圖像和語言識別、自然語言處理、可視化搜索和個性化推薦等AI服務。 借助該推理引擎可以大幅提升雲端及包括機器人、無人駕駛汽車在內的終端設備的推理性能,並有效降低成本。

可從 https://developer.nvidia.com/nvidia-tensorrt-download 下載TensorRT 1.0和TensorRT2.1.

安裝TensorRT 2.1要求:

(1)、操作系統僅支持Ubuntu14.04或Ubuntu 16.04,目前不支持Windows和Mac;

(2)、安裝的CUDA要求是7.5或8.0;

(3)、有兩種方法安裝TensorRT2.1:通過deb包或者通過tar文件;

(4)、對於顯卡為GTX 750和K1200的用戶需要將CUDA升級到8.0。

TensorRT 2.1用戶指南可以參考: http://docs.nvidia.com/deeplearning/sdk/tensorrt-user-guide/index.html

以上部分內容翻譯於: https://devblogs.nvidia.com/parallelforall/deploying-deep-learning-nvidia-tensorrt/

GitHub: https://github.com/fengbingchun/CUDA_Test

  • TensorRT簡介

初見-TensorRT簡介<轉>