将深度学习低延迟推理性能提高一倍

将深度学习低延迟推理性能提高一倍

JetPack 3.1 Doubles Jetson’s Low-Latency Inference Performance

NVIDIA发布了JetPack 3.1,这是Jetson TX1和TX2的生产Linux软件版本。通过对TensorRT 2.1和cuDNN 6.0的升级,JetPack 3.1为实时应用(如视觉引导导航和运动控制)提供了高达2倍的深度学习推理性能,这得益于加速批量大小1。改进后的功能使Jetson比以往任何时候都能部署更大的智能,使一代自主机器包括传送机器人、远程呈现和视频分析。为了进一步推动机器人技术的发展,NVIDIA最近推出的Isaac计划是一个端到端的平台,用于训练和部署先进的人工智能到现场。

 

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

今年春天早些时候,当NVIDIA推出Jetson TX2时,事实上的边缘计算平台在性能上得到了显著提升。如图1中的Wave Glider平台所示,位于网络边缘的远程物联网(IoT)设备经常会遇到网络覆盖率、延迟和带宽降低的情况。虽然物联网设备通常充当向云传输数据的网关,但边缘计算通过访问安全的板载计算资源重塑了物联网的可能性。NVIDIA的Jetson嵌入式模块在Jetson TX1上提供1tflop/s的服务器级性能,在10W的功率下使Jetson TX2的AI性能翻倍。

JetPack 3.1

Jetpack3.1withLinuxforTegra(L4T)R28.1是JetsonTX1和TX2的生产软件版本,具有长期支持(LTS)。用于TX1和TX2的L4T板支持包(bsp)适合于客户产品化,它们的共享Linux内核4.4代码库提供了两者之间的兼容性和无缝移植。从Jetpack3.1开始,开发人员可以访问TX1和TX2上相同的库、API和工具版本。

 Table 1: Software package versions included in JetPack 3.1 and L4T BSP for Jetson TX1 and TX2.

除了从cuDNN 5.1升级到6.0和对CUDA 8的维护更新之外,JetPack 3.1还包括用于构建流媒体应用程序的最新vision和多媒体API。您可以将Jetpack3.1下载到您的主机PC,使用最新的BSP和工具来闪存Jetson。

Low-latency Inference with TensorRT 2.1

最新版本的TensorRT包含在JetPack 3.1中,因此您可以在Jetson上部署优化的运行时深度学习推理。TensorRT通过网络图优化、核融合和半精度FP16支持来提高推理性能。TensorRT 2.1包括关键特性和增强功能,例如多权重批处理,这些特性和增强功能进一步提高了Jetson TX1和TX2的深度学习性能和效率,并减少了延迟。             

批量大小1的性能已经显著提高,导致GoogLeNet的延迟降低到5毫秒。对于延迟敏感的应用程序,批处理大小1提供最低的延迟,因为每一帧在到达系统时就被处理(而不是等待对多个帧进行批处理)。如Jetson TX2上的图2所示,使用TensorRT 2.1可以使用于GoogLeNet和ResNet图像识别推理的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实现了5ms的延迟,在Max-Q效率配置文件中运行时实现了7ms的延迟。ResNet-50在Max-P中有12.2ms的延迟,在Max-Q中有15.6ms的延迟。ResNet通常用于提高GoogLeNet以外的图像分类的准确性,使用TensorRT 2.1可以使运行时性能提高2倍以上。而且Jetson TX2的8GB内存容量,即使在ResNet这样的复杂网络上,也可以实现高达128的大批量。

 

Table 2: Jetson TX2 deep learning inference latency measurements comparing TensorRT 1.0 and 2.1. (Lower is better.)

减少的延迟使得深度学习推理方法可以用于要求近实时响应的应用中,例如高速无人机和地面车辆上的碰撞避免和自主导航。

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() {}

};

您可以使用与上面的代码类似的自定义IPlugin构建自己的共享对象。在用户的enqueue()函数中,可以使用CUDA内核实现自定义处理。TensorRT 2.1使用这种技术实现了一个更快的RCNN插件,用于增强对象检测。此外,TensorRT为长短期存储单元(LSTM)和门控递归单元(GRU)提供了新的RNN层,用于改进基于记忆的时间序列识别。提供这些功能强大的全新层类型,可以加快在嵌入式边缘应用程序中部署高级深度学习应用程序的速度。

 

Figure 3: Robotic reference platforms available with Jetson on board for AI research & development.

NVIDIA Isaac Initiative

随着人工智能能力在边缘的快速增长,英伟达推出了Isaac计划,以推进机器人技术和人工智能的最新水平。Isaac是一个端到端的机器人平台,用于开发和部署智能系统,包括仿真、自主导航堆栈和嵌入式Jetson。为了开始开发自主人工智能,Isaac支持图3所示的机器人参考平台。这些喷气动力平台包括无人机、无人地面车辆(UGV)、无人地面车辆(USV)和人类支援机器人(HSR)。参考平台提供了一个Jetson动力基地,可以在现场进行实验,随着时间的推移,该计划将扩展到包括新平台和机器人。

 

Get Started Deploying AI

JetPack 3.1包括cuDNN 6和TensorRT 2.1。现在Jetson TX1和TX2都有。Jetson平台的单批推理低延迟性能提高了一倍,并支持具有自定义层的新网络,因此比以往任何时候都更适合边缘计算。

 

posted @ 2020-06-22 14:36  吴建明wujianming  阅读(594)  评论(0编辑  收藏  举报