下面是TensorRT的介紹,也能夠參考官方文檔,更權威一些:https://developer.nvidia.com/tensorrt html
關於TensorRT首先要清楚如下幾點:git
1. TensorRT是NVIDIA開發的深度學習推理工具,只支持推理,不支持訓練;目前TensorRT3已經支持Caffe、Caffe二、TensorFlow、MxNet、Pytorch等主流深度學習庫;github
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)發佈,目前包括TensorRT一、TensorRT 二、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能支持Caffe二、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