출처 :
Jeong, Eun Jin, et al. "Deep Learning Inference Parallelization on Heterogeneous Processors with TensorRT." IEEE Embedded Systems Letters (2021).
본 논문은 향후 진행할 AD(Auto Driving) 프로젝트의 연구 방향에 대한 유관 연구 조사로 읽었기 때문에 방법에 대한 이야기는 빼고 문제 상황과 연구 방향 등에 초점을 맞춰 요약하였습니다.
Abstract: 임베디드 디바이스에서 Deep Learning Application의 사용이 증가함에 따라 디바이스는 CPU와 GPU 외에 NPU(Neural Processing units)라는 새로운 연산 unit을 도입하게 되었습니다. 빠르고 효과적으로 Deep Learning Application을 개발하기 위하여 NVIDIA에서는 NVIDIA Hardware platform에서 구동되는 '*TensorRT'라는 *SDK(Software Development Kit)를 제공합니다. 하지만 현재 TensorRT를 포함한 대부분의 Deep Learning Framework는 Deep Learning Inference(추론)을 위해 Single proccessor만 사용하고 있습니다. (GPU와 NPU를 동시에 사용하지 않음.) 하여 이 paper를 통해, 추론에서 최상의 Throughput을 내기 위한 새로운 방법을 제시합니다. : TensorRT상에서 하나의 Deep Learning App을 구동할 때, GPU와 NPU를 Parallelization methology를 사용하여 동시에 추론하는 방법을 새롭게 도입해 실험을 진행했고, 실험 결과 81% 에서 391% 가량의 성능 향상 결과를 확인할 수 있었습니다.
*TensorRT : 학습이 완료된 Deep Learning model을 최적화하여 NVIDIA GPU 상에서 추론 속도를 향상(수 ~ 수십 배)시키는 모델 최적화 엔진 (딥러닝 추론 가속 엔진)*SDK : Software Development kit로 API를 포괄하는 개념입니다.
Introduction: 임베디드 디바이스에서 DL(Deep Learning) inference application의 사용이 증가하며 많은 임베디드 디바이스들은 추가적인 Hardware resource들을 장착하기 시작했습니다. 예를 들어 본 논문에서 사용할 NVIDIA의 Jetson AGX Xavier는 multi-core CPU와 GPU 외에 추가적인 하드웨어 리소스인 deep learning accelerators(*DLAs)를 장착하고 있습니다. 본 논문에서는 학습이 완료된 network를 임베디드 디바이스에서 실행하기 위하여 TensorRT로 불리는 SDK를 사용합니다. 지금까지의 많은 연구들은 DL applications를 가속하기 위하여 software optimization을 사용해왔습니다. (예를 들어 quantization, low-rank approximation, layer fusion 등이 있으며, 이 중 몇몇의 최적화 기법들은 TesorRT에 적용되었습니다.) 이번 연구에서는 DL application의 throughput을 최대로 올리기 위하여 *network-level optimization을 진행합니다. 해당 기법은 Hardware platform과 Objective function에 의존적이며 이와 관련한 많은 연구들이 있었습니다. 앞 줄의 내용을 설명하기 위해 본 논문에서 인용된 다른 논문들은 아래와 같습니다.
[2] : multicore cpu의 자원을 최대로 활용하기 위한 방법
[3] : Heterogeneous cpu core에서 Throughput을 증가시키기 위한 방법
[4] : Mobile platform에서 GPU를 사용해 Single execution을 가속하기 위한 방법 (Deep X)
[5] : Mobile platform에서 GPU를 사용해 Single execution을 가속하기 위한 방법 (CNNdroid)
[6] : CPU/GPU Pipelining으로 Throughput 향상시키는 방법 (pre/post 기법으로 GPU에서 network body 실행되는 동안 cpu로 task 처리)
[7] : multiple deep neural networks (DNNs)을 CPU-GPU heterogeneous system에서 실행하여 Throughput 증가
[8] : multiprocessor system에서 conventional parallel scheduling을 통해 CNN model을 dataflow graph로 변환
[9] : 각 network가 single PE에 매핑되었다 가정했을 때 multiple DNN instances를 scheduling하는 방법
[10] : multiple DNN instances가 GPU와 NPU를 포함한 Heterogeneous system에서 구동될 때 각 network에 task-level parallelism을 적용해 Throughput을 증가시키는 방법 (그러나 single DL applicarion에서 GPU와 NPU를 동시에 지원하는 SDK가 존재하지 않는 한계가 있습니다.)
하여, 본 논문에서는 single DNN application의 throughput을 최대치로 올리기 위하여 TensorRT를 기반으로 한 parallelization 기법을 제시합니다. (GPU와 NPU를 동시에 사용할 수 있도록) 최종적으로 GPU와 NPU를 동시에 사용해 두 network instances를 concurrently하게 실행하여 Heterogeneous processors의 사용성을 향상시킬 수 있습니다.
*DLA : Deep learning accelerators로 neural porcessing units(NPUs)라고 불리기도 합니다.
*network-level optimization : 본 논문에서 제시하는 개념으로, task-level parallelism과 pipelining을 포함한 다양한 레벨에서의 Parallelism 기법입니다. 이 기법은 하드웨어 플랫폼과 objective function에 큰 영향을 받습니다.
Conclusion: 여섯 개의 real-life benchmark를 사용하여 성능을 측정한 결과 81%에서 391% 가량의 성능 향상을 확인할 수 있었습니다. 기존까지 임베디드 디바이스에서 pipelining과 multi-threading의 parallelism이 적용된 연구는 거의 없거나 존재하지 않았습니다. 이번 연구가 특정 하드웨어 플랫폼(Jetson)을 통한 검증 결과이긴 하지만 다른 Platform에도 확장 가능할 것이라 판단하며, 유용한 결론을 도출했다고 생각합니다.