728x90
반응형

 

 

 

1. TensorRT : NCHW vs NHWC

 

 

"It’s recommended to use NCHW format to get better performance with TensorRT."

 

 

NVIDIA 에서는 TensorRT 입력 값으로 NCHW 포맷을 권장한다. 사용자가 TensorRT Engine 에 Input 값을 NHWC 포맷으로 입력해도 되지만, TensorRT 에서 최적화 될 때, 입력값과 호환되도록 여러 형식 변환기를 자동으로 삽입한다. 즉, NVIDIA는 입력값이 어찌되었던 GPU Acceleration 으로 인해 NCHW 를 형식을 채택한다. 

 

또한, NHWC 형식을 선호하는 경우 UFF Parser 가 호환성을 처리할 수 있으며, 일반적으로 Caffe 는 NCHW 형식을 사용하며, 호환하는데 문제가 없다고 한다. 참고로 TensorFlow 의 포맷은 NHWC 이다. 

 

결론은, TensorRT 에서 성능이 중요할 경우 입력값으로 NCHW 형식을 채택해야한다.

 

 

 

 

 

 

 

2. Tensor Core : NCHW vs NHWC

 

 

이와는 반대로 NHWC 형식이 성능이 더 좋은 사례는 아래와 같다. 

 

아래는 Tensor Core 에서 구현된 Convolution Tensor Size 및 NCHW, NHWC 형식에 따른 성능 차이 지표이다. 

Tensor Core, NCHW vs NHWC

 

WinML(Window Machine Learning)에서 Tensor Core 를 사용할 수 있도록 이 모델의 입력 및 배치 크기를 미리 알고 있어야 한다. 이러한 값은 입력 데이터 자체에서 유추 할 수 있지만, 이를 명시적(Explicit)으로 제공할 경우 런타임이 최적화 될 수 있다. 이러한 이유에서 TensorRT 7.0 버전에서 명시적 배치 사이즈(Explicit Batch Size) 를 도입하지 않았나 싶다. 

 

Tensor Core 를 제대로 활용하여 최대의 성능을 얻으려면 Convolution의 입력 크기를 64/128/256의 배수로 유지하고 가능한 한 허용된 메모리 안에서 크기를 최대한 크게 유지하는 것이 좋다. TensorRT 와는 다르게 Tensor Core 에서 구현된 Convolution 에서는 NCHW 포맷보다 NHWC 포맷이 Tensor Core 에서 더 나은 성능을 제공한다. 

 

 

 

 

 

 

 

 

 

참고자료 1 : https://forums.developer.nvidia.com/t/tensorrt-specify-layer-nchw-nhwc/68694/6

 

TensorRT specify layer NCHW -> NHWC

Hi, You can add a permute layer between input the the rest of the network: https://github.com/intel/caffe/blob/master/src/caffe/layers/permute_layer.cpp Thanks.

forums.developer.nvidia.com

참고자료 2 : https://devblogs.nvidia.com/accelerating-winml-and-nvidia-tensor-cores/

 

Accelerating WinML and NVIDIA Tensor Cores | NVIDIA Developer Blog

Figure 1. TensorCores. Every year, clever researchers introduce ever more complex and interesting deep learning models to the world. There is of course a big difference between a model that works as a…

devblogs.nvidia.com

참고자료 3 : https://docs.nvidia.com/deeplearning/sdk/pdf/Deep-Learning-Performance-Guide.pdf

불러오는 중입니다...

 

728x90
반응형