Triton 추론 프로토콜 — HTTP·gRPC·Python API
Triton 추론 프로토콜 — HTTP·gRPC·Python API
Triton은 클라이언트가 추론을 요청하는 네트워크 프로토콜로 HTTP/1.1과 gRPC를 기본 제공하고, Python 클라이언트 라이브러리로 편리하게 사용할 수 있어요. 기본 포트는 HTTP 8000, gRPC 8001, 메트릭 8002입니다.
Python 클라이언트
tritonclient 패키지의 InferenceServerClient를 쓰면 추론 요청을 간단히 보낼 수 있어요.
import tritonclient.http as httpclient
import numpy as np
client = httpclient.InferenceServerClient(url="localhost:8000")
results = client.infer(
model_name="densenet_onnx",
inputs=[httpclient.InferInput("input", [1, 3, 224, 224], "FP32")],
)
InferInput(name, shape, datatype): 입력 텐서를 정의해요.set_data_from_numpy()로 데이터를 넣습니다.infer(): 모델 이름과 입력을 넘겨 추론을 수행해요. 반환된InferResult에서as_numpy(name)으로 출력을 가져옵니다.
HTTP 추론 요청
HTTP REST API로도 추론을 보낼 수 있어요. 정규화된 모델명·버전으로 POST /v2/models/{name}[/versions/{version}]/infer에 JSON을 보냅니다.
{
"inputs": [{"name": "input", "shape": [1, 3, 224, 224], "datatype": "FP32", "data": [ ... ]}],
"outputs": [{"name": "output", "shape": [1, 1000], "datatype": "FP32"}]
}
gRPC
tritonclient.grpc를 쓰면 gRPC 프로토콜로 더 효율적인 바이너리 직렬화를 이용할 수 있어요. 인터페이스는 HTTP 클라이언트와 거의 동일합니다.
import tritonclient.grpc as grpcclient
client = grpcclient.InferenceServerClient(url="localhost:8001")
서버 준비·메타데이터 확인
클라이언트는 서버가 준비됐는지, 모델이 로드됐는지 확인할 수 있어요.
print(client.is_server_ready())
print(client.get_model_metadata(model_name="densenet_onnx"))
is_server_ready():/v2/health/ready에 대응.get_model_metadata(): 모델 이름·버전·입출력 정보를 반환해요.
더 알아보기
- 프로토콜 정의는 Inference Protocols 참고
- 클라이언트 가이드는 Client Library 참고
- 빠른 시작은 Quickstart 참고