KFServing InferenceService 배포와 예측 – NVIDIA Triton Inference Server

Triton은 이전에 TensorRT Inference Server로 알려져 있습니다.

이번에는 모델을 직접 생성하지 않고, 기존에 만들어진 모델을 사용하겠습니다.

TensorRT을 사용하는 InferenceService 로 예측 하기

InferenceService 생성

InferenceService 매니페스트를 작성합니다. predictor로 tensorrt 를 사용합니다. storageUri 필드로 모델 저장 위치를 지정해 줍니다.

tensorrt.yaml

apiVersion: "serving.kubeflow.org/v1alpha2"
kind: "InferenceService"
metadata:
  name: "tensorrt-simple-string"
spec:
  default:
    predictor:
      tensorrt:
        storageUri: "gs://kfserving-samples/models/tensorrt"

InferenceService 를 생성합니다.

다음은 admin 네임스페이스 InferenceService 를 생성하는 예제입니다.

kubectl -n admin apply -f tensorrt.yaml

생성한 InferenceService를 조회해 보겠습니다.

kubectl -n admin get inferenceservice

InferenceService 가 정상적으로 생성되면 다음과 같은 응답 결과를 확인할 수 있습니다.

NAME                     URL                                                                                READY   DEFAULT TRAFFIC   CANARY TRAFFIC   AGE
tensorrt-simple-string   <http://tensorrt-simple-string.admin.example.com/v1/models/tensorrt-simple-string>   True    100                                33s

예측 실행하기

예측을 요청하기 위해서는 모델 서버에 접근해야 합니다. 모델 서버는 ingressgateway 를 통해서 접근할 수 있습니다. ingressgateway 는 모델 서버들을 구분하기 위해서 호스트 이름을 사용합니다. ingressgateway에 접근하 기 위한 주소는 앞서 정의한 CLUSTER_IP 를 사용하겠습니다.

https://docs.nvidia.com/deeplearning/sdk/tensorrt-inference-server-guide/docs/client.html#section-client-api 에 나와 있는 클라이언트를 사용해서 요청을 하겠습니다. tensorrtserver_client 컨테이너를 실행시킨 후, 컨테이너 안에서 클라이언트는 사용합니다. 그래서 컨테이너 안에서 CLUSTER_IP 로 접근이 가능해야 합니다.

/etc/hosts 파일을 편집해서 CLUSTER_IP 를 tensorrt-simple-string.admin.example.com 과 맵핑시킵니다.

클라이언트를 사용하기 위해서, 컨테이너를 실행시킵니다.

docker run -it --rm --net=host kcorer/tensorrtserver_client:19.05

컨테이너 안에서 다음 명령어를 실행시킵니다.

root@trantor:/workspace# ./build/simple_string_client -u tensorrt-simple-string.admin.example.com

정상적으로 실행되면 다음과 같은 응답 결과를 확인 할 수 있습니다.

0 + 1 = 1
0 - 1 = -1
1 + 1 = 2
1 - 1 = 0
2 + 1 = 3
2 - 1 = 1
3 + 1 = 4
3 - 1 = 2
4 + 1 = 5
4 - 1 = 3
5 + 1 = 6
5 - 1 = 4
6 + 1 = 7
6 - 1 = 5
7 + 1 = 8
7 - 1 = 6
8 + 1 = 9
8 - 1 = 7
9 + 1 = 10
9 - 1 = 8

“KFServing InferenceService 배포와 예측 – NVIDIA Triton Inference Server”에 대한 한개의 댓글

  1. 안녕하세요. 올려주신 좋은글 잘보고 있습니다.
    다름이아니라
    /etc/hosts 파일을 편집해서 CLUSTER_IP 를 tensorrt-simple-string.default.example.com 과 맵핑시킵니다.
    –> 여기서 노드포트를 사용한다면 어떻게 매핑시켜줘야할까요?

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다