분리형 백엔드와 모델
분리형 백엔드와 모델 (Decoupled Backends and Models)
Triton은 요청 하나에 대해 여러 응답을 보내거나 응답을 보내지 않는 백엔드와 모델을 지원합니다. 분리(decoupled) 모델/백엔드는 요청 배치가 실행되는 순서와 상대적으로 응답 순서가 다르게 전송할 수도 있어요. 이 기능은 스트리밍 출력이나 요청에 대한 응답이 여러 개인 모델에 적합합니다.
분리형 백엔드/모델 개발
C++ 백엔드
Triton Backend API, Inference Requests and Responses, Decoupled Responses에 대해 자세히 읽어야 합니다. repeat 백엔드와 square 백엔드는 Triton Backend API로 분리 백엔드를 구현하는 방법을 보여주는 예시입니다. 이 예시들은 Triton API의 유연성을 보여주도록 설계되었습니다.
Python 백엔드로 만든 Python 모델
Python Backend, 특히 execute에 대해 자세히 읽어야 합니다. decoupled 예시는 분리 API로 분리 python 모델을 구현하는 방법을 보여줍니다.
분리형 모델 배포
분리 모델의 **트랜잭션 정책(decoupled model transaction policy)**을 모델 구성 파일에 설정해야 합니다. Triton은 분리 모델에 필요한 특별 처리를 활성화하려면 이 정보가 필요해요. 이 구성 설정 없이 분리 모델을 배포하면 런타임에 오류가 발생합니다.
분리형 모델에서 추론 실행
[Inference Protocols and APIs](Inference Protocols and APIs)는 클라이언트가 서버와 통신하고 추론을 실행하는 다양한 방법을 설명합니다. 분리 모델의 경우 Triton의 HTTP 엔드포인트는 요청당 정확히 하나의 응답만 지원하므로 추론에 사용할 수 없어요. gRPC 엔드포인트의 표준 ModelInfer RPC도 분리 응답을 지원하지 않습니다. 분리 모델에서 추론을 실행하려면 클라이언트가 양방향 스트리밍 RPC를 사용해야 합니다. 자세한 내용은 grpc_service.proto를 참고하세요.
Triton의 인프로세스 C API를 사용한다면, TRITONSERVER_InferenceRequestSetResponseCallback으로 등록한 콜백 함수가 몇 번이든 호출될 수 있고 매번 새 응답을 받을 수 있다는 점을 알고 있어야 합니다.
앙상블에서 분리 모델 사용
이런 상황을 막으려면 max_inflight_requests 구성 필드를 사용하세요. 이 필드는 각 앙상블 단계에서 허용되는 동시 요청의 최대 수를 제한합니다. 자세한 내용과 예시는 "앙상블 모델에서 메모리 사용 관리"를 참고하세요.
분리 추론 요청이 완료된 시점 알기
추론 요청은 모델/백엔드에서 TRITONSERVER_RESPONSE_COMPLETE_FINAL 플래그를 포함한 응답을 받았을 때 완료된 것으로 간주됩니다.
- 스트리밍 gRPC를 사용하는 클라이언트 애플리케이션은 응답 파라미터에서
"triton_final_response"파라미터를 확인해 이 정보에 접근할 수 있습니다. 분리 모델은 모델/백엔드가 어떻게 설계됐는지에 따라 요청마다 응답을 보내지 않을 수 있어요.
# Example of streaming GRPC client opting-in
client.async_stream_infer(
...,
enable_empty_final_response=True
)
- C API를 사용하는 클라이언트 애플리케이션은 응답 처리/콜백 로직에서
TRITONSERVER_RESPONSE_COMPLETE_FINAL플래그를 직접 확인할 수 있습니다.
마지막 응답은 "triton_final_response" 응답 파라미터로 수신됩니다.