Calling a Model
This section lists some requirements for model requests and how to test a model using Cloudera Data Science Workbench.
(Requirement) JSON for Model Requests/Responses
Every model function in Cloudera Data Science Workbench takes a single argument in the form of a JSON-encoded object, and returns another JSON-encoded object as output. This format ensures compatibility with any application accessing the model using the API, and gives you the flexibility to define how JSON data types map to your model's datatypes.
Model Requests
When making calls to a model, keep in mind that JSON is not suitable for very large requests and has high overhead for binary objects such as images or video. Consider calling the model with a reference to the image or video such as a URL instead of the object itself. Requests to models should not be more than 5 MB in size. Performance may degrade and memory usage increase for larger requests.
Ensure that the JSON request represents all objects in the request or response of a model call. For example, JSON does not natively support dates. In such cases consider passing dates as strings, for example in ISO-8601 format, instead.
For a simple example of how to pass JSON arguments to the model function and make calls to deployed model, see Creating and Deploying a Model (QuickStart)..
Model Responses
Models return responses in the form of a JSON-encoded object. Model response times depend on how long it takes the model function to perform the computation needed to return a prediction. Model replicas can only process one request at a time. Concurrent requests are queued until a replica is available to process them.
When Cloudera Data Science Workbench receives a call
request for a model, it attempts to find a free replica that can answer the call. If the
first arbitrarily selected replica is busy, Cloudera Data Science Workbench will keep
trying to contact a free replica for 30 seconds. If no replica is available, Cloudera Data
Science Workbench will return a model.busy
error with HTTP status code 429 (Too Many Requests). If you see such errors, re-deploy the
model build with a higher number of replicas.
(Requirement) Access Key
Each model in CDSW has a unique access key associated with it. This access key is a unique identifier for the model.
Models deployed using CDSW are not public. In order to call an active model, your request must include the model's access key for authentication (as demonstrated in the sample calls above).
To locate the access key for a model, go to the model Overview page and click Settings.
Testing Calls to a Model
-
Test Model Widget
On each model's Overview page, Cloudera Data Science Workbench provides a widget that makes a sample call to the deployed model to ensure it is receiving input and returning results as expected.
-
Sample Request Strings
On the model Overview page, Cloudera Data Science Workbench also provides sample curl and POST request strings that you can use to test calls to the model. Copy/paste the
curl
request directly into a Terminal to test the call.Note that these sample requests already include the example input values you entered while building the model, and the access key required to query the model.
Model request timeout
You can set the model request timeout duration to a custom value. The default value is 30 seconds. The timeout can be changed if model requests might take more than 30 seconds. You need to have Admin access to Cloudera Manager to make this change.
- In Cloudera Manager, select Clusters, and then select the CDSW service.
- In the Configuration tab, enter
cdsw.properties
in the Filters box. - In Application Advanced Configuration Snippet (Safety Valve) for
cdsw.properties, enter the value in seconds (for example, 100):
MODEL_REQUEST_TIMEOUT_SECONDS=100