HTTP/REST·gRPC 프로토콜
HTTP/REST·gRPC 프로토콜
이 디렉토리에는 Triton이 사용하는 HTTP/REST·gRPC 프로토콜 관련 문서가 모여 있어요. Triton은 KServe 커뮤니티 표준 추론 프로토콜을 사용하고, 여기에 다음 문서들에 정의된 여러 확장을 더해요.
- Binary tensor data extension
- Classification extension
- Schedule policy extension
- Sequence extension
- Shared-memory extension
- Model configuration extension
- Model repository extension
- Statistics extension
- Trace extension
- Logging extension
- Parameters extension
참고: 일부 확장은 추론 프로토콜에 새 필드를 추가하고, 다른 확장은 Triton이 따르는 새 프로토콜을 정의해요. 자세한 내용은 각 확장 문서를 참고하세요.
출처: 공식문서
gRPC 프로토콜의 경우 protobuf 명세도 제공돼요. 또한 gRPC 헬스 체크 프로토콜 protobuf 명세는 여기에서 볼 수 있어요.
제한 프로토콜 (Restricted Protocols)
프로토콜을 구현하는 Triton 엔드포인트를 구성해 일부 프로토콜에 대한 접근을 제한하고 네트워크 설정을 제어할 수 있어요. 자세한 내용은 protocol customization guide를 참고하세요.
IPv6
호스트나 docker config가 IPv6 연결을 지원한다고 가정하면, tritonserver를 다음과 같이 IPv6 HTTP 엔드포인트를 쓰도록 구성할 수 있어요.
$ tritonserver ... --http-address ipv6:[::1]&
...
I0215 21:04:11.572305 571 grpc_server.cc:4868] Started GRPCInferenceService at 0.0.0.0:8001
I0215 21:04:11.572528 571 http_server.cc:3477] Started HTTPService at ipv6:[::1]:8000
I0215 21:04:11.614167 571 http_server.cc:184] Started Metrics Service at ipv6:[::1]:8002
이건 예를 들어 netstat로 확인할 수 있어요.
$ netstat -tulpn | grep tritonserver
tcp6 0 0 :::8000 :::* LISTEN 571/tritonserver
tcp6 0 0 :::8001 :::* LISTEN 571/tritonserver
tcp6 0 0 :::8002 :::* LISTEN 571/tritonserver
그리고 curl로 테스트할 수도 있어요.
$ curl -6 --verbose "http://[::1]:8000/v2/health/ready"
* Trying ::1:8000...
* TCP_NODELAY set
* Connected to ::1 (::1) port 8000 (#0)
> GET /v2/health/ready HTTP/1.1
> Host: [::1]:8000
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Content-Length: 0
< Content-Type: text/plain
<
* Connection #0 to host ::1 left intact
Triton 서버 에러 코드를 HTTP 상태 코드로 매핑
다음 표는 다양한 Triton 서버 에러 코드가 대응하는 HTTP 상태 코드로 어떻게 매핑되는지 보여줘요. HTTP 응답에서 Triton 서버 에러가 어떻게 처리되는지 이해하는 참고 자료로 쓰면 돼요.
| Triton Server Error Code | HTTP Status Code | Description |
|---|---|---|
| TRITONSERVER_ERROR_INTERNAL | 500 | Internal Server Error |
| TRITONSERVER_ERROR_NOT_FOUND | 404 | Not Found |
| TRITONSERVER_ERROR_UNAVAILABLE | 503 | Service Unavailable |
| TRITONSERVER_ERROR_UNSUPPORTED | 501 | Not Implemented |
| TRITONSERVER_ERROR_UNKNOWN, TRITONSERVER_ERROR_INVALID_ARG, TRITONSERVER_ERROR_ALREADY_EXISTS, TRITONSERVER_ERROR_CANCELLED | 400 | Bad Request (default for other errors) |
더 알아보기 (Learn more)
- 추론 프로토콜과 API — HTTP/gRPC 옵션과 엔드포인트 접근 제한
- OpenAI 호환 프론트엔드 — OpenAI API로 Triton 사용