Skip to content

Inference GRPC Client

InferenceGRPCClient(url, verbose=None, use_ssl=None, root_certificates=None, private_key=None, certificate_chain=None, creds=None, channel_args=None, timeout=60)

This asynchronous client provides methods to communicate with an inference server using gRPC protocol. This feature is currently in alpha and may be subject to change.

Note

This client uses a default retry config. To override, explicitly provide the 'method_config' in channel options or to disable retry set the channel option ("grpc.enable_retries", 0).

{
    "methodConfig": [
        {
            # Apply retry to all methods
            "name": [{}],
            "retryPolicy": {
                "maxAttempts": 3,
                "initialBackoff": "0.1s",
                "maxBackoff": "1s",
                "backoffMultiplier": 2,
                "retryableStatusCodes": ["UNAVAILABLE"],
            },
        }
    ]
}

Parameters

parameter Type Description Notes
url str Inference server url as a string required
verbose bool A boolean to enable verbose logging. Defaults to False optional
use_ssl bool A boolean value indicating whether to use an SSL-enabled channel (True) or not (False). If creds provided the client will use SSL-enabled channel regardless of the specified value. optional
root_certificates str Path to the PEM-encoded root certificates file as a string, or None to retrieve them from a default location chosen by gRPC runtime. If creds provided this will be ignored. optional
private_key str Path to the PEM-encoded private key file as a string or None if no private key should be used. If creds provided this will be ignored optional
certificate_chain str Path to the PEM-encoded certificate chain file as a string or None if no certificate chain should be used. If creds provided this will be ignored. optional
creds grpc.ChannelCredentials A ChannelCredentials instance for secure channel communication. optional
channel_args List[Tuple[str, Any]] An list of key-value pairs (channel_arguments in gRPC Core runtime) to configure the channel optional
timeout float The maximum end-to-end time, in seconds, the request is allowed to take. By default, client timeout is 60 seconds. To disable timeout explicitly set it to 'None' optional

The APIs for InferenceGRPCClient are as following:

Class Method Description
InferenceGRPCClient infer Runs asynchronous inference using the supplied data.
InferenceGRPCClient is_server_ready Checks if the inference server is ready.
InferenceGRPCClient is_server_live Checks if the inference server is live.
InferenceGRPCClient is_model_ready Checks if the specified model is ready.

infer()

infer(infer_request, timeout=USE_CLIENT_DEFAULT, headers=None) async

This method sends an inference request to the server and returns the inference response. It supports asynchronous execution and allows for optional timeout and headers customization.

Example

from kserve import InferenceGRPCClient

client = InferenceGRPCClient(url="https://localhost:443")
infer_request = InferRequest(...)
headers = [("header-key", "header-value")]

response = await inference_client.infer(infer_request, timeout, headers)
print(response)

Parameters

Name Type Description Notes
infer_request InferRequest Inference input data as InferRequest or ModelInferRequest object required
timeout float The maximum end-to-end time, in seconds, the request is allowed to take. The default value is 60 seconds. To disable timeout explicitly set it to 'None'. This will override the client's timeout. Defaults to USE_CLIENT_DEFAULT. optional
headers Union[grpc.aio.Metadata, Sequence[Tuple[str, str]], None] Additional headers to be transmitted with the request. Defaults to None. optional

Returns

Return Type: InferResponse

Inference output as ModelInferResponse

Raises

InvalidInput: If the input format is invalid.

grpc.RpcError: For non-OK-status response.

is_server_ready()

is_server_ready(timeout=USE_CLIENT_DEFAULT, headers=None) async

Check if the inference server is ready.

This asynchronous method sends a readiness request to the inference server and returns a boolean indicating whether the server is ready to handle requests.

Example

from kserve import InferenceGRPCClient

client = InferenceClient(...)
is_ready = await client.is_server_ready(timeout=30.0)
if is_ready:
    print("Server is ready to handle requests.")
else:
    print("Server is not ready.")

Parameters

Name Type Description Notes
timeout float The maximum time, in seconds, allowed for the request to complete. The default value is 60 seconds. To disable the timeout, explicitly set it to 'None'. This value will override the client's default timeout if specified. optional
headers Union[grpc.aio.Metadata, Sequence[Tuple[str, str]]]Additional headers to include in the request. This can be useful for passing metadata such as authentication tokens. optional

Returns

Return Type: bool

True if the server is ready, False otherwise

Raises

grpc.RpcError: If the server responds with a non-OK status, an RPCError is raised. This can occur due to network issues, server-side errors.

is_server_live()

is_server_live(timeout=USE_CLIENT_DEFAULT, headers=None) async

Check if the inference server is live.

This asynchronous method sends a request to the inference server to check its liveness status.

Example

from kserve import InferenceGRPCClient

client = InferenceClient(...)
is_live = await client.is_server_live(timeout=30.0)
if is_live:
    print("Server is live")
else:
    print("Server is not live")

Parameters

Name Type Description Notes
timeout float The maximum time, in seconds, allowed for the request to complete. The default value is 60 seconds. To disable the timeout, explicitly set it to 'None'. This value will override the client's default timeout if specified. optional
headers Union[grpc.aio.Metadata, Sequence[Tuple[str, str]]]Additional headers to include in the request. This can be useful for passing metadata such as authentication tokens. optional

Returns

Return Type: bool

True if the server is live, False if the server is not live

Raises

grpc.RpcError: If the server responds with a non-OK status, an RPCError is raised. This can occur due to network issues, server-side errors.

is_model_ready()

is_model_ready()

Check if the specified model is ready.

This asynchronous method sends a request to check the readiness of a model by its name.

Example

from kserve import InferenceGRPCClient

client = InferenceClient(...)
is_ready = await client.is_model_ready("my_model")
if is_ready:
    print("Model is ready for inference.")
else:
    print("Model is not ready.")

Parameters

Name Type Description Notes
model_name string The name of the model to check for readiness. required
timeout float The maximum time, in seconds, allowed for the request to complete. The default value is 60 seconds. To disable the timeout, explicitly set it to 'None'. This value will override the client's default timeout if specified. optional
headers Union[grpc.aio.Metadata, Sequence[Tuple[str, str]]]Additional headers to include in the request. This can be useful for passing metadata such as authentication tokens. optional

Returns

Return Type: bool

True if the model is ready, False if the model is not ready

Raises

grpc.RpcError: If the server responds with a non-OK status, an RPCError is raised. This can occur due to network issues, server-side errors.

Back to top