2626
2727import json
2828
29+ import numpy as np
2930import triton_python_backend_utils as pb_utils
3031
3132
@@ -45,37 +46,57 @@ def execute(self, requests):
4546 responses = []
4647
4748 for request in requests :
48- bls_input_tensor = pb_utils .get_input_tensor_by_name (
49+ passed = True
50+
51+ # test bls response parameters from a regular model
52+ res_params_tensor = pb_utils .get_input_tensor_by_name (
4953 request , "RESPONSE_PARAMETERS"
50- )
51- bls_request = pb_utils .InferenceRequest (
54+ ).as_numpy ()
55+ res_params_str = str (res_params_tensor [0 ][0 ], encoding = "utf-8" )
56+ res_params = json .loads (res_params_str )
57+ bls_input_tensor = pb_utils .Tensor ("RESPONSE_PARAMETERS" , res_params_tensor )
58+ bls_req = pb_utils .InferenceRequest (
5259 model_name = "response_parameters" ,
5360 inputs = [bls_input_tensor ],
54- requested_output_names = ["OUTPUT" ],
5561 )
56- try :
57- bls_response = bls_request .exec ()
58- response_tensors = bls_response .output_tensors ()
59- response_parameters_str = bls_response .parameters ()
60- if bls_response .has_error ():
61- raise Exception (bls_response .error ().message ())
62- res_params = json .loads (response_parameters_str )
63-
64- response = pb_utils .InferenceResponse (
65- output_tensors = response_tensors , parameters = res_params
66- )
62+ bls_res = bls_req .exec () # decoupled=False
63+ bls_res_params_str = bls_res .parameters ()
64+ bls_res_params = (
65+ json .loads (bls_res_params_str ) if bls_res_params_str != "" else {}
66+ )
67+ passed = passed and bls_res_params == res_params
6768
68- res_params_set = {}
69- if response .parameters () != "" :
70- res_params_set = json .loads (response .parameters ())
71- if res_params_set != res_params :
72- raise Exception ("Response parameters set differ from provided" )
73- except Exception as e :
74- error = pb_utils .TritonError (
75- message = str (e ), code = pb_utils .TritonError .INVALID_ARG
69+ # test bls response parameters from a decoupled model
70+ res_params_decoupled_tensor = pb_utils .get_input_tensor_by_name (
71+ request , "RESPONSE_PARAMETERS_DECOUPLED"
72+ ).as_numpy ()
73+ res_params_decoupled_str = str (
74+ res_params_decoupled_tensor [0 ][0 ], encoding = "utf-8"
75+ )
76+ res_params_decoupled = json .loads (res_params_decoupled_str )
77+ bls_decoupled_input_tensor = pb_utils .Tensor (
78+ "RESPONSE_PARAMETERS_DECOUPLED" , res_params_decoupled_tensor
79+ )
80+ bls_decoupled_req = pb_utils .InferenceRequest (
81+ model_name = "response_parameters_decoupled" ,
82+ inputs = [bls_decoupled_input_tensor ],
83+ )
84+ bls_decoupled_res = bls_decoupled_req .exec (decoupled = True )
85+ for bls_decoupled_r in bls_decoupled_res :
86+ bls_decoupled_r_params_str = bls_decoupled_r .parameters ()
87+ bls_decoupled_r_params = (
88+ json .loads (bls_decoupled_r_params_str )
89+ if bls_decoupled_r_params_str != ""
90+ else {}
7691 )
77- response = pb_utils .InferenceResponse (error = error )
92+ passed = passed and bls_decoupled_r_params in res_params_decoupled
93+ res_params_decoupled .remove (bls_decoupled_r_params )
94+ passed = passed and len (res_params_decoupled ) == 0
7895
96+ output_tensor = pb_utils .Tensor (
97+ "OUTPUT" , np .array ([[str (passed )]], dtype = np .object_ )
98+ )
99+ response = pb_utils .InferenceResponse (output_tensors = [output_tensor ])
79100 responses .append (response )
80101
81102 return responses
0 commit comments