将深度学习低延迟推理性能提高一倍
將深度學(xué)習(xí)低延遲推理性能提高一倍
JetPack 3.1 Doubles Jetson’s Low-Latency Inference Performance
NVIDIA發(fā)布了JetPack 3.1,這是Jetson TX1和TX2的生產(chǎn)Linux軟件版本。通過(guò)對(duì)TensorRT
2.1和cuDNN 6.0的升級(jí),JetPack 3.1為實(shí)時(shí)應(yīng)用(如視覺(jué)引導(dǎo)導(dǎo)航和運(yùn)動(dòng)控制)提供了高達(dá)2倍的深度學(xué)習(xí)推理性能,這得益于加速批量大小1。改進(jìn)后的功能使Jetson比以往任何時(shí)候都能部署更大的智能,使一代自主機(jī)器包括傳送機(jī)器人、遠(yuǎn)程呈現(xiàn)和視頻分析。為了進(jìn)一步推動(dòng)機(jī)器人技術(shù)的發(fā)展,NVIDIA最近推出的Isaac計(jì)劃是一個(gè)端到端的平臺(tái),用于訓(xùn)練和部署先進(jìn)的人工智能到現(xiàn)場(chǎng)。
Figure 1. The regenerative wave- and solar-powered Wave Glider by Liquid Robotics is capable of traversing oceans autonomously with Jetson on board for low-power vision and AI processing.
AI at the Edge
今年春天早些時(shí)候,當(dāng)NVIDIA推出Jetson TX2時(shí),事實(shí)上的邊緣計(jì)算平臺(tái)在性能上得到了顯著提升。如圖1中的Wave Glider平臺(tái)所示,位于網(wǎng)絡(luò)邊緣的遠(yuǎn)程物聯(lián)網(wǎng)(IoT)設(shè)備經(jīng)常會(huì)遇到網(wǎng)絡(luò)覆蓋率、延遲和帶寬降低的情況。雖然物聯(lián)網(wǎng)設(shè)備通常充當(dāng)向云傳輸數(shù)據(jù)的網(wǎng)關(guān),但邊緣計(jì)算通過(guò)訪(fǎng)問(wèn)安全的板載計(jì)算資源重塑了物聯(lián)網(wǎng)的可能性。NVIDIA的Jetson嵌入式模塊在Jetson TX1上提供1tflop/s的服務(wù)器級(jí)性能,在10W的功率下使Jetson TX2的AI性能翻倍。
JetPack 3.1
Jetpack3.1withLinuxforTegra(L4T)R28.1是JetsonTX1和TX2的生產(chǎn)軟件版本,具有長(zhǎng)期支持(LTS)。用于TX1和TX2的L4T板支持包(bsp)適合于客戶(hù)產(chǎn)品化,它們的共享Linux內(nèi)核4.4代碼庫(kù)提供了兩者之間的兼容性和無(wú)縫移植。從Jetpack3.1開(kāi)始,開(kāi)發(fā)人員可以訪(fǎng)問(wèn)TX1和TX2上相同的庫(kù)、API和工具版本。
Table 1: Software package versions included in JetPack 3.1 and L4T BSP for Jetson TX1 and TX2.
除了從cuDNN 5.1升級(jí)到6.0和對(duì)CUDA 8的維護(hù)更新之外,JetPack 3.1還包括用于構(gòu)建流媒體應(yīng)用程序的最新vision和多媒體API。您可以將Jetpack3.1下載到您的主機(jī)PC,使用最新的BSP和工具來(lái)閃存Jetson。
Low-latency Inference with TensorRT 2.1
最新版本的TensorRT包含在JetPack 3.1中,因此您可以在Jetson上部署優(yōu)化的運(yùn)行時(shí)深度學(xué)習(xí)推理。TensorRT通過(guò)網(wǎng)絡(luò)圖優(yōu)化、核融合和半精度FP16支持來(lái)提高推理性能。TensorRT 2.1包括關(guān)鍵特性和增強(qiáng)功能,例如多權(quán)重批處理,這些特性和增強(qiáng)功能進(jìn)一步提高了Jetson TX1和TX2的深度學(xué)習(xí)性能和效率,并減少了延遲。
批量大小1的性能已經(jīng)顯著提高,導(dǎo)致GoogLeNet的延遲降低到5毫秒。對(duì)于延遲敏感的應(yīng)用程序,批處理大小1提供最低的延遲,因?yàn)槊恳粠诘竭_(dá)系統(tǒng)時(shí)就被處理(而不是等待對(duì)多個(gè)幀進(jìn)行批處理)。如Jetson TX2上的圖2所示,使用TensorRT 2.1可以使用于GoogLeNet和ResNet圖像識(shí)別推理的TensorRT 1.0的吞吐量增加一倍。
Figure 2: Inference throughput of GoogLeNet and ResNet-50 using Jetson TX2 Max-Q and Max-P power profiles. TensorRT 2.1
provides twice the inference throughput on GoogleLeNet and ResNet.
表2中的延遲顯示了與批處理大小1成比例的減少。使用TensorRT 2,Jetson TX2在Max-P性能配置文件中為GoogLeNet實(shí)現(xiàn)了5ms的延遲,在Max-Q效率配置文件中運(yùn)行時(shí)實(shí)現(xiàn)了7ms的延遲。ResNet-50在Max-P中有12.2ms的延遲,在Max-Q中有15.6ms的延遲。ResNet通常用于提高GoogLeNet以外的圖像分類(lèi)的準(zhǔn)確性,使用TensorRT 2.1可以使運(yùn)行時(shí)性能提高2倍以上。而且Jetson TX2的8GB內(nèi)存容量,即使在ResNet這樣的復(fù)雜網(wǎng)絡(luò)上,也可以實(shí)現(xiàn)高達(dá)128的大批量。
Table 2: Jetson TX2 deep learning inference latency measurements comparing TensorRT 1.0 and 2.1. (Lower is better.)
減少的延遲使得深度學(xué)習(xí)推理方法可以用于要求近實(shí)時(shí)響應(yīng)的應(yīng)用中,例如高速無(wú)人機(jī)和地面車(chē)輛上的碰撞避免和自主導(dǎo)航。
Custom Layers
#include “NvInfer.h”
using namespace nvinfer1;
class MyPlugin : IPlugin
{
public:
int getNbOutputs() const;
Dims
getOutputDimensions(int index, const Dims* inputs,
int nbInputDims);
void configure(const Dims* inputDims, int nbInputs,
const Dims* outputDims, int nbOutputs, int maxBatchSize);
int initialize();
void terminate();
size_t getWorkspaceSize(int maxBatchSize) const;
int enqueue(int batchSize, const void* inputs,
void** outputs, void* workspace, cudaStream_t stream);
size_t
getSerializationSize();
void serialize(void* buffer);
protected:
virtual ~MyPlugin() {}
};
您可以使用與上面的代碼類(lèi)似的自定義IPlugin構(gòu)建自己的共享對(duì)象。在用戶(hù)的enqueue()函數(shù)中,可以使用CUDA內(nèi)核實(shí)現(xiàn)自定義處理。TensorRT 2.1使用這種技術(shù)實(shí)現(xiàn)了一個(gè)更快的RCNN插件,用于增強(qiáng)對(duì)象檢測(cè)。此外,TensorRT為長(zhǎng)短期存儲(chǔ)單元(LSTM)和門(mén)控遞歸單元(GRU)提供了新的RNN層,用于改進(jìn)基于記憶的時(shí)間序列識(shí)別。提供這些功能強(qiáng)大的全新層類(lèi)型,可以加快在嵌入式邊緣應(yīng)用程序中部署高級(jí)深度學(xué)習(xí)應(yīng)用程序的速度。
Figure 3: Robotic reference platforms available with Jetson on board for AI research & development.
NVIDIA Isaac Initiative
隨著人工智能能力在邊緣的快速增長(zhǎng),英偉達(dá)推出了Isaac計(jì)劃,以推進(jìn)機(jī)器人技術(shù)和人工智能的最新水平。Isaac是一個(gè)端到端的機(jī)器人平臺(tái),用于開(kāi)發(fā)和部署智能系統(tǒng),包括仿真、自主導(dǎo)航堆棧和嵌入式Jetson。為了開(kāi)始開(kāi)發(fā)自主人工智能,Isaac支持圖3所示的機(jī)器人參考平臺(tái)。這些噴氣動(dòng)力平臺(tái)包括無(wú)人機(jī)、無(wú)人地面車(chē)輛(UGV)、無(wú)人地面車(chē)輛(USV)和人類(lèi)支援機(jī)器人(HSR)。參考平臺(tái)提供了一個(gè)Jetson動(dòng)力基地,可以在現(xiàn)場(chǎng)進(jìn)行實(shí)驗(yàn),隨著時(shí)間的推移,該計(jì)劃將擴(kuò)展到包括新平臺(tái)和機(jī)器人。
Get Started Deploying AI
JetPack 3.1包括cuDNN 6和TensorRT 2.1。現(xiàn)在Jetson TX1和TX2都有。Jetson平臺(tái)的單批推理低延遲性能提高了一倍,并支持具有自定義層的新網(wǎng)絡(luò),因此比以往任何時(shí)候都更適合邊緣計(jì)算。
總結(jié)
以上是生活随笔為你收集整理的将深度学习低延迟推理性能提高一倍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TensorRT 3:更快的Tensor
- 下一篇: CUDA 11功能展示