지난 6월에 NVIDIA 에서 TensorRT2 라이브러리를 배포했습니다.

TensorRT 라는 첫번째 버전에서 발전시킨 라이브러리라고 합니다.

이 TensorRT 는 학습이 완료된 신경망 회로를 실제 환경에서 구현하기 위해 사용할 수 있는 라이브러리 입니다.

해당 라이브러리를 사용할 때는 크게 두 개의 단계를 거쳐야 합니다. 바로 Build 와 Deployment 단계입니다.

Figure 4: The TensorRT workflow, showing the two key functionalities of TensorRT: the TensorRT neural network optimizer (middle) and the TensorRT target runtime (right).

위의 그림은 두 단계를 도식화하여 설명한 그림입니다.

Build 단계는 학습이 완료된 네트워크를 최적화하는 과정입니다. 해당 과정을 통해 네트워크가 차지하는 메모리를 줄일 수 있다고 설명하고 있습니다.
Deployment 단계는 구현하고자 하는 서비스에 알맞게 프로그램을 수정하는 단계입니다. 해당 과정을 통해 코드를 사용하면 다른 deep learning framework를 설치하지 않고도 서비스를 구현할 수 있다고 합니다.

TensorRT 가 메모리와 연산 속도를 높일 수 있는 이유 중 하나는 여러 연산 레이어를 하나의 레이어로 바꾸어 계산하는 방법을 사용하기 때문입니다.
예를 들어 Convolutional neural network (CNN) 에서는 convolution, bias 와 ReLU 레이어를 하나의 CBR 레이어로 합쳐 사용합니다.

이런 방법을 통해 TensorRT2 에서는 CPU만 사용한 구현방식보다 45배 가량 연산속도가 향상한다고 합니다 (INT8, FP16 precision).
또한 LSTM, GRU 과 같은 RNN 구조 역시 지원하며 사용자가 만든 구조 역시 지원 가능하다고 설명합니다.

다음 버전으로 예정된 TensorRT3 은 floating point 32bit 까지 지원하며 Caffe와 TensorFlow 같은 다른 deep learning framework 의 모델을 쉽게 적용 가능하도록 만들 예정이라 공개하였습니다.

Neural network의 어플리케이션 구현에 있어서 한 번쯤은 고려할 만한 대상 인것 같습니다.


profile