6/07/2019

TensorRT 5.0 와 DeepStream 기능

1. TensorRT 와 DeepStream 

DeepStream는 NVIDIA에서 제공하는 Gstreamer의 확장으로, TensorRT의 기능을 포함 Gstreamer기능이라고 생각하면 되겠다.
Gstreamer 에 AI Inference 하기 위해서 별도의 Gstreamer Plugin을 추가하여 개발한 것이다.
DeepStream이 완전지원이 된다면, 사용자는 손쉽게 Gsteamer 처럼 파이프라인만 구축하고 실행을 하면 되기 때문에 상당히 매력적인 기능이다.

현재 Jetson TX2의 경우 JetPack 4.2 용 TensorRT 5.0 의 DeepStream은 아직 제공하고 있지 않으며,  Jetpack 3.2 TensorRT 4.0 기준용 Version로 제공을 하고 있다.
TensorRT 5.0의 경우 Jetson AGX Xavier 에서만 제공하고 있다.


  • Jetson TX2 : DeepStream 1.5 까지 지원 (현재) 
  • Jetson AGX Xavier : DeepStream 3.0 지원  (최근에 지원)


DeepStream SDK Download
  https://developer.nvidia.com/embedded/deepstream-on-jetson-downloads


1.1 Jetson TX2 와 Jetson AGX Xavier 비교 

DeepStream 에서 주요기능은 TensorRT의 역할일 것이며, 나머지는 Gstreamer와 거의 동일하기 때문에 크게 신경을 쓰지 않아도 될 것 같다.

가장 주목해서 봐야할 기능은 DLA(Deep Learning Accelerator)의 기능이 될 것이며, 이것은 TensorRT의 기능이다.
현재 Jetson TX2에서도 TensorRT에서 DLA(gieexec or trtexec)는 지원을 하고 있지만, 아래의 비교를 보면, 
Jetson TX2는 HW 미지원이고 Jetson AGX Xavier는 HW 지원 이다

Jetson AGX Xavier에서 다음으로 봐야할 기능이  Vison Accelerator 일 것 같으며 는  OpenCV or VisionWork처럼 HW적으로 지원해줄 것 같은데,  
아직 써보지 못해서 뭐라고 말은 못하겠다.

기존에 사용되어지는 CUDA기반의 VisionWork/OpenCV가 별도의 엔진이 존재하는 것인지 좀 의문스럽다.

추후 Jetson AGX Xavier를 사용 할 기회가 있다면 사용 해본 후에 관련내용을 다시 정리해보자.
두개의 GPU기능을 보면 차이가 많이나며, Tensor 처리부분도 역시 차이가 많이 난다.

  • Jetson TX2 와  Jetson AGX Xavier 비교 
아래에서 비교해보면 알겠지만, 성능차이가 압도적이다. 
  1. GPU 성능: 아키텍쳐 변경 및 Clock 과 TensorCores ( AI Interence 할 경우)
  2. DL Accelerator:  AI Interence 할 경우, TensorRT 
  3. Vision Accelerator:  비디오 입력시 , 영상처리 

FeatureJetson™ TX2Jetson™ AGX Xavier
GPU256 Core Pascal @ 1.3GHz512 Core Volta @ 1.37GHz
64 Tensor Cores
DL Accelerator-(2x) NVDLA
Vision Accelerator-(2x) 7-way VLIW Processor
CPU6 core Denver and A57 @ 2GHz
(2x) 2MB L2
8 core Carmel ARM CPU @ 2.26GHz
(4x) 2MB L2 + 4MB L3
Memory8GB 128 bit LPDDR4
58.4 GB/s
16GB 256-bit LPDDR4x @ 2133MHz
137 GB/s
Storage32GB eMMC32GB eMMC
Video Encode(2x) 4K @30
HEVC
(4x) 4Kp60 / (8x) 4Kp30
HEVC
Video Decode(2x) 4K @30
12 bit support
(2x) 8Kp30 / (6x) 4Kp60
12 bit support
Camera12 lanes MIPI CSI-2
D-PHY 1.2 30Gbps
16 lanes MIPI CSI-2 | 8 lanes SLVS-EC
D-PHY 40Gbps / C-PHY 109Gbps
PCI Express5 lanes PCIe Gen 2
1x4 + 1x1 | 2x1 + 1x4
16 lanes PCIe Gen 4
1x8 + 1x4 + 1x2 + 2x1
Mechanical50mm x 87mm
400 pin connector
100mm x 87mm
699 pin connector
Power7.5W / 15W10W / 15W / 30W


Jetson Board 비교
  http://connecttech.com/xavier-tx2-comparison/

DeepStream SDK 내용
  http://on-demand.gputechconf.com/gtc-cn/2018/pdf/CH8307.pdf

NVIDIA Tesla T4의 기능소개
상위문서를 보면, NVIDIA T4 가 나오는데,  NGC(Nvidia GPU Cloud)를 이용하여 동작되는 것으로 보면, ARM용은 아니며, x86용 기반으로 동작되는  기기 인 것 같다.
  https://www.nvidia.com/ko-kr/data-center/tesla-t4/


2. DeepStream 의 기능 

전체구조를 보면, 쉽게 IP Camera or 보안장비에 연결되어 RTSP로 영상데이터를 받아 이를 Gstream의 중간 기능에, 
TensorRT(Inference Engine)를 추가하여 영상 분석과 Detection 및 Tracking 기능을 주로 추가하여 합성되는 기능이다.

DeepStream SW의 구조를 봐도 상위 설명과 크게 다르지 않으며, 아래의 구조를 보면 쉽게 이해간다.
주요기능이 TRT(TensorRT)를 어떻게 Gstream PiPe에 효율적으로 넣을 것인가가 핵심기능이 될 것 같다.

개인적으로 문제가 될 부분을 미리 예상해보자면

  1. Toltal Latency 문제 : 파이프라인이 길어져서 발생되는 총 Latency 문제 
  2. Gstream 객체간의 Latency :  즉 Pipe Line에서도 각 객체의 Latency가 다를 것이며, 이에관련된 Buffer 처리문제
  3. TensorRT 적용부분:  Gstream에서 이 부분에서 Buffer문제와 빠른 동작이 요구될터인데, HW적으로 어떻게 지원될지가 궁금하다. 





NVIDIA Deep Stream SDK
  https://developer.nvidia.com/deepstream-sdk


  • NVIDIA Tesla T4 기반의 DeepStream SDK 3.0 
아래의 문서를 보면 상당히 편하게 동작이 되는 것을 알 수 있는지만, 이 기능이 Jetson에도 제공해줄지는 의문이다. (현재 Jetson AGX Xavier에는 SDK 3.0제공)

  https://devblogs.nvidia.com/intelligent-video-analytics-deepstream-sdk-3-0/


  •  DeepStream SDK 2.0 
x86 Server 기반의 DeepStream 기능을 소개한다.
  https://devblogs.nvidia.com/accelerate-video-analytics-deepstream-2/?ncid=so-int-dmsk20ntllh-43648


  • DeepStream 기반의 Github 
  https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps/tree/master/yolo