1. DeepStream이란?
Deepstream은 SDK형태로 제공하며 Vision AI application과 service를 쉽고 빠르게 개발할 수 있게 해줍니다. 그리고 DeepStream은 multi-platform, scaleablity를 제공하며 on-premise, on-edge, cloud환경 모두에서 deploy가능합니다.
Multi-platform: window, mac, linux 등의 다양한 플랫폼을 의미
Scaleability: 유저수나 트래픽이 많아져도 application이 잘 작동함을 의미
흠... 여기까지 들었을때는 그래서 DeepStream이 먼지 모르시겠죠? 쉽게 설명을 위해 NVIDIA 세계관(?)의 End-to-END AI Development는 아래와 같습니다. 빨간색 부분이 DeepStream이며 해당부분(3번)에서 알 수 있듯이 만들어진(training이 끝난) ML 모델을 특정 application이나 service에 deploy하기 위해 사용되는 것이 DeepStream입니다.
그래서 DeepStream은 (1)입력 데이터(e.g. 드론이 찍은 항공이미지, 로봇의 카메라, 미디어 동영상)를 받아 (2)ML 모델의 입력 shape이나 특성에 맞게 preprocess를 하고 (3)ML 모델로 inference를 하고 (4)postprocess까지 한 뒤 (5)분석 및 시각화까지 하는 것을 목적으로 합니다.
2. DeepStream을 왜 써야할까?
DeepStream만의 강점은 다음과 같습니다.
- Seamless Development
- C/C++, Python, low-code graphical programming(Graph Composer)와 같이 다양한 development를 제공
- DeepStream ships은 다양한 hardware accelerated plugins를 제공
- 다양한 pretrained된 ML model(e.g. SSD, YOLO, MaskRCNN)을 제공
- Custom function과 libraries과 통합가능
- TensoRT를 이용하여 multi-GPU, mult-stream, batch support 등 다양한 옵션을 제공하여 극대화된 performance를 제공
- Low-Code Programming with Graph Composer
- Graph Composer는 low-code graphical progamming을 제공을 통해 손쉽게 복잡한 pipelines을 만들어 줄 수 있음
- 위의 pipelining을 docker container builder를 통해 processing 및 deploy 가능
- Securely Manage Apps & Services
- DeepStream SDK은 cloud 또는 edge system에 유연하게 실행될 수 있음
- 안전한 IoT device communication을 위해 two-way TLS authentication(with SSL certificates)을 제공
- IoT 통합 인터페이스를 Redis, Kafka, MQTT, and AMQP와 함께 제공
- Containerized apps을 관리하기위해 Kubernetes와 Helm Charts 사용
- DeepStream SDK plug-ins
- Stereo Camera 지원
- H.264, H.265 video decoding
- JPEG decoding
- Metadata generation and encoding
- Metadata serialization/deserialization
- Stream aggregation and batching
- Object tracking 지원
- Accelerated X11/EGL-based rendering
- Scaling, format conversion, and rotation
- Filtering based on Region of Interest (ROI)
- Audio/Video Template Plug-In
- ...
3. DeepStream의 Performance
DeepStream을 이용했을 때 end-to-end application performance를 측정하였습니다. End-to-end application에는 data ingestion, decoding, image processing이 포함되어있고 1080p/30fps streams을 input으로 사용하였습니다.
다양한 task의 application과 다양한 모델에 대해 model inference속도(FPS)를 측정한 것을 알 수 있습니다. 이 Performance가 좋은 것은지는 다른 framework/system이랑 비교를 통해 확인해봐야겟지만 그래두 좋다는 거겠죠? ㅋㅋ
다음 글에서는 DeepStream을 실제로 사용하는 방법 및 코드를 설명드리도록 하겠습니다. 감사합니다~~
4. Reference
https://developer.nvidia.com/deepstream-sdk
https://www.nvidia.com/en-us/on-demand/session/gtcspring22-s41777/
'AI Engineering > NVIDIA' 카테고리의 다른 글
[NVIDIA] DALI multi-GPU 사용법 with PyTorch (2) | 2023.06.22 |
---|---|
[NVIDIA] DALI 사용법 with PyTorch (4) | 2023.06.18 |
[NVIDIA] TensorRT inference 코드 및 예제 (feat. yolov7) (3) | 2022.07.29 |
[NVIDIA] TensorRT plugin 사용 및 예제 (feat. yolov7) (6) | 2022.07.25 |