MLOPS/SERVING
Triton Inference Server에서 TensorRT Engine Inference
개발허재
2022. 4. 18. 17:13
TRTIS를 사용하는 이유
간편하고 빠르다. Python이나 C++으로 TensorRT 엔진을 사용하여서 추론 작업을 하는 것은 Pytorch나 Tensorflow에서 추론을 하는 것보다 성능이 좋지만, 더 low 적인 작업이 많아서 추론 코드를 작성하기에 조금 어렵다.
그러나 TRTIS를 사용하면 기본적인 config 설정과 모델만 있으면 서버 방식으로 배포하여 접근도 쉽고, 클라이언트 코드의 재작성이 불필요하다.
게다가 추론도 Multi GPU Inference를 하려면 프로세스를 여러개 돌려야 하기 때문에 프로세스 관리가 까다로운데, TRTIS는 GPU 설정만 해주면 스스로 Multi GPU Inference를 해주기 때문에 추론 코드를 작성하는 시간을 아낄 수 있다.
그리고, 한 GPU에 모델을 여러개 올려서 배포하고, 모델마다 버전을 관리 할 수 있어서, 모델 관리에 용이하다.
또, TRTIS는 C++ 기반으로 만들어져 있어서, 일반적으로 Python에서 TensorRT 엔진을 돌려서 추론하는 것보다 빠르다.
아래는 Densenet ONNX 모델로 테스트한 결과입니다.(TensorRT 아님..)
name: "densenet_onnx"
platform: "onnxruntime_onnx"
max_batch_size : 0
input [
{
ame: "data_0"
data_type: TYPE_FP32
format: FORMAT_NCHW
dims: [ 3, 224, 224 ]
reshape { shape: [ 1, 3, 224, 224 ] }
}
]
output [
{
name: "fc6_1"
data_type: TYPE_FP32
dims: [ 1000 ]
reshape { shape: [ 1, 1000, 1, 1 ] }
label_filename: "densenet_labels.txt"
}
]
config 설정 예시
root@abcdefg:/models/densenet_onnx# ls
1 config.pbtxt densenet_labels.txt
1, 2, 3... 이런 식으로 버전관리도 용이
포스트맨으로 http/rest 형식으로 json포맷의 데이터를 요청한 후 response 받음